テキストファイルがあり、すべての行の最初の単語を除くすべての単語を削除したいのですが、これを行う方法がわかりません。
だから、私が持っている場合:
one two three
four five
six
私は一緒にいたい:
one
four
six
何かアイデアはありますか?
行が空白で始まらない場合は、' .*'
(最初の単語以降のすべてに一致する)空の文字列に置き換えることができます。
:%s/ .*//g
より堅牢な解決策は、これらの種類の操作に非常に優れたプログラムを介してフィルター処理することですawk
。
次のコンテンツがあるとします。
one two three
four five
six
実行:%!awk '{print $1}'
すると、次のようになります。
one
four
six
awk
のデフォルトのフィールド区切り文字はスペースですが、必要に応じて、必要なものに変更できます。
または、マクロを使用して実行することもできます。通常モードで入力qa
して、レジスタ a にマクロの記録を開始します。次に、入力0elDj
して現在の行の最初の単語以外をすべて削除し、次の行に移動します。もう一度入力q
して、マクロの記録を終了します。
これで、.を使用して任意の行でマクロを起動できます@a
。実行:%norm! @a
して、バッファ内のすべての行にマクロを適用します。
このようにして、置換だけでなく、必要な複雑な操作を繰り返すことができます。私はマクロが大好きです:)
編集:行が厳密に2文字未満の場合は機能しないことに注意してください。このため、これは通常、この問題に対する最善のアプローチではありません。