さまざまな大学名の長いリストがあります。特定の一意のキーワードを含む行を照合して、類義語テーブルを作成しようとしています。つまり、このファイルでは、Harvard がキーワードであることがわかります。
Harvard Business School|
Harvard College|
Harvard School of Divinity|
それらを別のファイルに貼り付けます
Harvard Business School|Harvard College|Harvard School of Divinity|
カーソルの下の単語を検索し、その単語を含む行をレジスタにヤンクし、レジスタを他のファイルに貼り付け、結合コマンド「J」を使用して行を結合することでこれを行ってきました。
[ clear register 'a' ]
0"ay0
[ move cursor to 'Harvard" and yank lines with keyword into register a ]
:g/\<<CTRL-R><CTRL-W>\>/y A
[ move to other screen and paste ]
"ap
[ join lines ]
JJJJJ
これは問題なく機能しますが、合理化してほしいと思います。具体的には、最後のステップで JJJJ を使用して手動で行を結合する必要がないように、レジスタから改行を削除する方法を知りたいです。カーソルの下の単語を含むすべての行を検索し、それらを「a」レジスタにコピーし、「a」レジスタから改行を削除してから、「a」レジスタの内容を貼り付けたいと思います。
何か案は?
編集:私は知っています:
- %s/\n//g など、グローバルに検索して置換する方法
- バッファ内の 'foo' を単語からレジスタの内容に検索して置換する方法 (例:%s/foo/a/g)
- レジスタの内容を検索してバッファ内の 'foo' に置き換える方法、例:%s/a/bar/g
知っておくべきこと:
- レジスタ「a」からレジスタ「b」までを検索して「foo」を「bar」に置き換える方法
- レジスタ「a」からレジスタ「a」まで「foo」を「bar」に検索して置換する方法