次のテキストがあるとします。
name1 = "John"; age1 = 41;
name2 = "Jane"; age2 = 32;
name3 = "Mike"; age3 = 36;
...
そして、各行を2行に分割して、次のような結果を得る必要があります。
name1 = "John";
age1 = 41;
name2 = "Jane";
age2 = 32;
name3 = "Mike";
age3 = 36;
...
この操作をどのように自動化しますか?
いくつかのメモ:
:'<,'>:norm ^3f r^M
***を実行し、***シーケンスの説明:
-norm
通常モードで次のコマンドを実行する場合
-^
カーソルを行の先頭に移動するため
-3f<space>
カーソルを行の3番目のスペースに移動するため
-r^M
そのスペースを改行に置き換える
ファイル全体を操作するには、次を使用します。
:%s/; /;\r/
選択したテキストでのみを操作するには、次を使用します。
:'<,'>s/; /\r/
英語訳:
"セミコロンの後にスペースが続くwithセミコロンの後に改行が続く。 "
説明:
% - operate on the entire file
s - substitute
/ - symbol that separates search/replace terms
; - the character you're searching for (notice I added a space)
;\r - the replacement text (semi-colon followed by newline)
これは、Viでの置換と同じくらい基本的なことです。
よりオタクのために:
このような状況では、実際に.vimrc
ファイルに次のマップがあります。
"
" add a newline after each occurrence of the last search term
"
nnoremap SS :%s//&\r/<CR>
このコマンドは、最後の検索パターンが最初に出現したときにファイルの各行を分割します。
したがって、ユースケースでは次のようにします。
;
を検索します(スペースを含める場合と含めない場合があります...あなた次第です)SS
ファイルの各行は、最初の;
記号で分割されます。
明確にするために、次の5つのキーストロークを使用します。
/;ENTERSS
これは、XML、HTMLなどをすばやくフォーマットするのに非常に便利です...