正規表現を置き換えてVIMに貼り付ける

正規表現を置き換えてVIMに貼り付ける

VIMのyコマンドを使用していくつかのコード(複数行)をコピーし、p-commandを使用してファイルの他の場所に貼り付けたいと思います。

ところで、コピーしたコードを一部変更した後、すばやく貼り付けたいと思います。たとえば、コピーしたコードを大文字に変換したい(「hello」をコピーして「HELLO」貼り付け)。

追加の例は、インデントを追加することです。

コピー:

function hello() {
}

しかし、貼り付け:

   function hello() {
   };

これを行う簡単な方法はありますか?最小限のコマンド、ファイル/構成変更を使用し、以前のプラットフォームを含む多くのプラットフォームで動作するソリューションが必要なので、標準的な方法/コマンド/フレームワークを使用する方がよいでしょう。、macOS vimなど

PS特に貼り付け場所に応じて正しいインデントでコードを貼り付けるための別の組み込み方法がある場合は知りたいです。しかし、コピーしたコンテンツを貼り付ける前に(ソースコードではなくても)ランダムな正規表現を実行する方法を理解したいと思います。

答え1

、およびvim(行ベース)または、(文字ベース)のマーカーは、'[以前に変更した、インポートまたは貼り付けたテキストの境界を識別します。']`[`]

したがって、>']カーソル位置と貼り付けたテキストの終わりの間のコードはインデントされますp

gU`[after p/Pカーソルから貼り付けの先頭までのテキストを大文字で表示します。

答え2

文字や単語の大文字と小文字を変更するために正規表現を検索および置換する必要はありません。

  • ~文字、単語、方向、選択項目などの大文字と小文字を変更できます。たとえば、カーソルをhof に移動してhello入力すると、~w単語全体が次に変わります。HELLO
  • gU大文字と小文字を変更せずにテキストを大文字に変更します。たとえば、 がある場合はhElLoカーソルを に移動し、 と入力するとhgUwのようになります。HELLO
  • guテキストを小文字に変更 - たとえば、カーソルをHHELLOに移動して入力してguwに変更しますhello

これは最小限の概要です。より多くのオプションと詳細を入力してください:help casevim


繰り返し編集を自動化するために、vimのマクロ/キーマッピング機能を調べることもできます(:help macro)。私は通常、現在必要な繰り返しですが、一時編集タスクにマッピングまたは,マッピングします。 (はい、私はすでにviで使用されていることを知っていますが、ほとんど使用しません。)そしてすべてと近くで互いに簡単にフィットします。だから、行の先頭に移動をマップし、1つの単語の前に移動し、カーソルで始まる単語を大文字で表示できます。;.,

:map , 0wgUw

その後、,このボタンを押すと、行の2番目の単語が大文字で表示されます。たとえば、 を含む行では、function hello() {HELLO を大文字で表示します。完璧である必要はなく、何度も何度も何度も何度も何度も何度も実行する必要があります。もはや地図作成の動機を与えるために何十、何百回も繰り返す必要はありません。)

はい、関数全体をドラッグしてカーソルを移動し、貼り付けてインデントし、関数名を大文字で表示するマクロを作成できます。今は自分でそうする動機はありません。しかし、私はこれを2つのマップに分割することをお勧めします。 1つは^functionコンテンツ全体を検索して抽出すること、もう1つは関数名を貼り付けて大文字で表示することです。 (こういうものは私が楽しんで使っ,;一時マップとして使うのですが…キーをお互い近くに置くのがとても便利です。)

現在編集されているファイルの外部で再利用する内容については、ファンクションキーにマッピングするか、レジスタに書き込みます。退屈で反復的なタスクのほとんどは、現在作業中のタスクと非常に関連していて特定のものであるため、これは頻繁には実行されません。 ~/.vimrcでこれを行う傾向があります。非常に一般的な操作のファンクションキーマクロを定義します。フォーマットを再指定するために現在の段落をパイピングするのと同じですpar

関連情報