次の正規表現を使用して、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つです。g
EXコマンドは、正規表現と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のドキュメントには、ビジュアルモードがアクティブな場合、選択範囲が現在の行から次のパターンまで拡張されると記載されています。これは望ましくない動作を引き起こしています。