66

Javascript を書くときはセミコロンを使います。ただし、webstorm/phpstorm に書き込むと、中かっこと大かっこは自動補完されますが、セミコロンは自動追加されません。標準などで要求されていないことはわかっていますが、それが私がコーディングする方法です。私だけではなく、多くの人がこの方法でコーディングしています。

例:

var data = $.ajax({});

通常、webstorm/phpstorm はこれを行い、カーソルを中括弧内に残します:

var data = $.ajax({})

私が望んでいるのは、セミコロンを手動で追加する必要がなく、最初の例で述べたようにオートコンプリートすることだけです。

4

13 に答える 13

12

マクロとキーボード ショートカットを作成できます。

Record Auto semicolon macro and bind shortcut to it:
1. Edit -> Macros -> Start Macro Recording
2. In the editor go to the end of line by pressing End
3. put semicolon ';'
4. Edit -> Macros -> Stop Macro Recording
5. Give a name, for example 'Auto semicolon'
6. Open settings (Ctrl + Alt + s), select Keymap
7. Expand Macros node
8. Select 'Auto semicolon', in the context menu choose Add Keyboard Shortcut
9. Set Ctrl + ; as First keystroke
10. Save/Apply settings
11. Enjoy!
12. Try it out, in the middle of code line, hit Ctrl + ;
 
// some useful combinations:
Ctrl + ,    put colon at the end of line
Ctrl + ;    put semicolon at the end of line
Ctrl + .    put => at the end of line

https://gist.github.com/umidjons/9383758から

自動的に行うオプションがあれば、もっとクールになるでしょう...

于 2014-10-29T07:15:02.357 に答える
6

私がしたいこと

私の目標は、現在の行の最後にセミコロンを追加し、カーソル位置を行の途中に維持することでした。

例えば

func([{''}])
//     /\
//     ||
//     ||
//     current cursor position
//
// Now I want to add a semi-colon to the end-of-the-line
// but then continue typing my string contents at the same
// cursor location. i.e. I now want this, with as few
// keystrokes as possible:
//
//          Add this semi-colon...
//          |
//          |
//          V
func([{''}]);
//     /\
//     ||
//     ||
//     ...while maintaining this cursor position

やりたい理由

WebStorm は、入力時に句読点を適切に「補完」します。つまり、 を入力する({['と、 に自動補完され({[' <<cursor here>> ']})ます。後で忘れる可能性があるため、さらに入力する前に、行末にセミコロンを含めることを確認したいと思います。ただし、セミコロンを追加した後、現在のカーソル位置で入力を続けたいと思います。オートコンプリートを使用して行末にセミコロンを追加できることはわかっていますが、これにより行末にカーソルが残るため、戻る矢印を複数回押す必要があります。さらに、半分完成した行がまだ正しい JavaScript 構文になっていない場合があるため、オートコンプリートが機能しないこともあります。

大変だった理由

解決策は簡単に思えました。単純なマクロを作成して行末にジャンプし、セミコロンを入力して、元の場所に戻るだけです。問題は、WebStorm を元の場所に戻す方法を理解するのが難しいことです! ブックマークを設定し、行末に移動し、セミコロンを入力してブックマークに戻ることを試みましたが、それは機能しません。私の知る限り、ブックマークは列ではなく行のみを記憶するからです。最初に現在の場所 (例: xcursorx) にガベージ マーカー テキストを入力し、行末に移動し、セミコロンを入力しfind、ガベージ マーカー テキストを単純に実行しようとしましたが、WebStorm のマクロが表示されないため、それも機能しません。findルーチンにテキストを入力することでうまく遊ぶことができます。最初にガベージ マーカー テキストを入力してみました。行末に移動し、Navigate/Last Edit Locationゴミを削除しますが、それも機能しません。

最終的に機能したこと

次のようにマクロを作成しました (個々の手順で示されているキーボード ショートカットは、「Mac OS X 10.5+」キーマップのものです...セットアップに適したショートカットまたはメニュー オプションを使用してください):

  • 目的の場所のカーソル/キャレットから始めて、マクロの記録を開始します (つまりEdit > Macros > Start Macro Recording)
  • ピリオドなど、スペースや単語以外の文字を 1 つ入力します
  • その直後に、「xcursorx」など、他では使用しないガベージ マーカー テキストの「単語」を 1 つ入力します。
  • その直後に、別の 1 つの非スペース/非単語文字、たとえば別のピリオドを入力します (つまり、「.xcursorx.」と入力しました)。
  • 行末にジャンプする (例: コマンド-右矢印)
  • セミコロンを入力
  • セミコロンの直後 (つまり、スペースなし) に、ガベージ マーカー テキストの同じ単一の「単語」をもう一度入力しますが、隣接する非スペース/非単語文字は使用しません。たとえば、「;xcursorx」と入力します。
  • カーソルを「単語」 1 つ後ろに移動します (たとえば、option-左矢印)
  • カーソル位置の単語を検索します (つまりEdit > Find > Find Word at Caret) ( 「xcursorx」を手動で入力するときは、通常の単語を使用しないでください)find
  • 選択したテキストを削除します (つまり、delete または backspace キーを押して、行末の 2 番目の「xcursorx」を削除します)。
  • 最後に選択されたテキストの前の出現を見つけます (つまりEdit > Find > Find Previous/Move to Previous Occurrence、または shift-command-G)。これにより、「.xcursorx」内の「xcursorx」が選択されます。
  • 選択したテキストを削除します (つまり、削除またはバックスペース キーを押します)。
  • 1 文字進む (つまり、右矢印、2 番目のピリオドの後に移動)
  • 2 文字を削除します (つまり、delete または backspace を 2 回押して、2 つのピリオドを削除します)。
  • マクロの記録を停止します (つまりEdit > Macros > Stop Macro Recording)
  • マクロに名前を付けます (例: 'place-semicolon-at-end-of-line')
  • マクロにキーボード ショートカットを指定します (例: Preferences > (scroll down to) Macros > place-semicolon-at-end-of-line > (right click) > Add Keyboard Shortcut... 必要なショートカットを入力します。例: オプション-セミコロン)。

あいまいな手順の説明

ユースケースによっては、上記のすべての手順が必要なわけではありません。たとえば、 を使用した上部の例では、これが機能するために余分なピリオドを追加する必要はありませんfunc([{''}])。ただし、カーソルがすでに行の最後にある場合など、いくつかの特殊なケースでは追加の手順が必要です。

それの使い方

マクロを使用するには、通常のタイピング (上の例では、表示されるタイプ) から始め、ショートカット (たとえば、オプション セミコロン) を入力すると、行末にセミコロンが表示されますがfunc([{'func([{''}])カーソルは元の場所に残ります。

警告

ガベージ テキストが挿入されてから削除されると、表示が少しジャンプするため、この解決策は少しハックです。ただし、少なくとも機能します。ガベージ マーカー テキストを必要とせずに同じ最終目標を達成する方法を誰かが理解できれば、それは素晴らしいことです。

于 2016-07-01T20:47:18.843 に答える
1

Ctrl + Shift + Enterを押してから毎回括弧に戻らなければならないことは、私の考えでは解決策ではありません。

これが本当の解決策です:

通常、「Shift + 9」を押したときにステートメントの最後にセミコロンが必要ですか? 毎回キーボードで他のクレイジーな組み合わせを打つ必要はありません。

  1. エディターに関数を入力します。
  2. 「(」と入力する直前に、[編集] > [マクロ] > [マクロの記録を開始] に移動します。
  3. 「();」と入力し、「左」キーを 2 回押して内部に戻ります。
  4. [編集] > [マクロ] > [マクロの記録を開始] に移動し、名前を付けます (例: auto-semicolon; 5 [設定] > [外観と動作] > [キーマップ] > [マクロ] に移動し、[自動セミコロン] を右クリックし、[キーボード ショートカットの追加] を選択して [Shift+9] を押します)。 ;
  5. 環境設定を終了し、エディターに戻ってテストしてください!

必要に応じて、これの多くの種類を作成できます。たとえば、'({})' の間に中括弧を追加するか、末尾にセミコロンを必要とせずに '()' をより頻繁に使用する場合は、ショートカットを 'Ctrl+Shift+9' に変更できます。コンボはレギュラーを追加するだけです。あなたの好み!

于 2015-02-18T12:46:03.353 に答える
1

このhttps://github.com/yyx990803/semiを使用できます。必要に応じて cli と api を提供します。

于 2016-10-20T10:46:55.083 に答える
0

ええ、セミコロンを付けずにそのままにしておくと、Webstorm はそれをマークしてunterminated statement強調表示します。右中括弧として(カーソルを使用して)行にいる場合は、次のように入力します。

Alt + Enter

これにより、電球メニューが表示されます(自動修正または変更が行われます。これ以上の名前はありません)。

コードが正しい場合、または中括弧がその行の唯一の記号である場合、唯一のオプションはTerminate statement自動的にフォーカスされるため、Webstorm の Enter キーを押してセミコロンを追加するだけです。

この方法では、カーソルを手動で配置して自分でセミコロンを入力する必要がなくなりますが、何とかその行にいて、alt + enter + enter を実行すると、それが表示されます。

ええ、自動的にそこにあるわけではありませんが、より迅速かつ簡単です。

于 2013-10-11T16:49:27.640 に答える
0

行末に移動してセミコロンを挿入するマクロを作成します。次に、マクロをセミコロン キーストロークに割り当てます。したがって、入力中の任意の時点で、コード行を終了できます。

于 2015-03-21T21:09:41.687 に答える
0

Webstorm 2019.1 の場合

1 ファイル/設定... メニューを選択します。
2 [設定] ダイアログの左側のサイドバーで [エディタ]、[コード スタイル]、[JavaScript] の順に選択します。

ここに画像の説明を入力

3 句読点タブを選択し、「ステートメントを終了するセミコロン」オプションが「常に」であることを確認します。

ここに画像の説明を入力

4 メニューから [コード/再フォーマット] を選択します。

于 2021-12-21T02:48:07.823 に答える