次の正規表現を使用して、Clojure関数定義の下のドキュメンテーション文字列を照合しています。
\vdefn.*\n\s*\zs"([^"]|\n)*"
gq特定のファイル内のこのパターンのすべての一致で通常モード(フォーマット行)コマンドを実行する方法はありますか?
次の正規表現を使用して、Clojure関数定義の下のドキュメンテーション文字列を照合しています。
\vdefn.*\n\s*\zs"([^"]|\n)*"
gq特定のファイル内のこのパターンのすべての一致で通常モード(フォーマット行)コマンドを実行する方法はありますか?
回答:
の力g:
:g/\vdefn.*\n\s*\zs"([^"]|\n)*"/normal gngq
/sの間の部分は、元の質問の正規表現であるため、かなり自明です。
normal gngq最後に少し興味深いです。gnは、正規表現の次の一致を選択し、gqもちろん、この選択をフォーマットします(質問で述べたとおり)。
:g本当に素晴らしい部分です。私の意見では、これはVimの最も便利な機能の1つです。gEXコマンドは、正規表現とExコマンドを受け取り、それがすべての行に正規表現マッチをコマンドを実行します。まだ学習して:gいない場合は、生産性が大幅に向上するので、そうすることを強くお勧めします。いくつかのリソースは、Vim独自のもの:help :gか、Vim wikiのPower of gです。
//s<cr>すると、現在の行での一致の先頭に移動しますが、現在の//e<cr>一致ではなく次の一致の最後に移動します。
//s<cr>Vです。実行する:normal Vと、期待どおりにビジュアルラインモードになります。実行すると、予想どおり:normal //s<cr>カーソルが最初"の試合に移動します。実行する:normal //s<cr>Vと、視覚的な選択が表示されません。
gnピースがラインから選択されるVようにトリガされ、次のパターンの発生(同一線上にないもの)。Vimのドキュメントには、ビジュアルモードがアクティブな場合、選択範囲が現在の行から次のパターンまで拡張されると記載されています。これは望ましくない動作を引き起こしています。