从vim中的寄存器中删除换行符?

P. *_*ore 4 regex vim replace vim-registers

我有很多不同的大学名单.我正在尝试通过将线条与某些唯一关键字进行整理来构建同义词表格; 也就是说,在文件中,我将确定哈佛是这里的关键字:

Harvard Business School|
Harvard College|
Harvard School of Divinity|
Run Code Online (Sandbox Code Playgroud)

并将它们粘贴到另一个文件中

Harvard Business School|Harvard College|Harvard School of Divinity|
Run Code Online (Sandbox Code Playgroud)

我一直在这样做,通过搜索光标下的单词,将该单词的行放入寄存器,将寄存器粘贴到另一个文件中,并使用join命令"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
Run Code Online (Sandbox Code Playgroud)

这很好用,但我希望它能够简化.具体来说,我想知道如何从寄存器中删除换行符,这样我就不必在最后一步中使用JJJJ手动加入行.我想搜索光标下包含单词的所有行,将它们复制到'a'寄存器中,从'a'寄存器中删除换行符,然后粘贴'a'寄存器的内容.

有任何想法吗?

编辑:我知道:

  • 如何全局搜索和替换,例如%s/\n // g
  • 如何搜索缓冲区中的'foo'并将其替换为寄存器的内容,例如:%s/foo/a/g
  • 如何搜索寄存器的内容并用缓冲区中的'foo'替换,例如:%s/a/bar/g

我需要知道的是:

  • 如何从寄存器'a'中搜索并用'bar'替换'foo'来注册'b'
  • 如何从寄存器'a'中搜索并用'bar'替换'foo'来注册'a'

Her*_*itz 5

要直接使用注册中的文本,a您可以使用此命令:

:let @a=substitute(strtrans(@a),'\^@',' ','g')
Run Code Online (Sandbox Code Playgroud)

然后,当您将注册粘贴a回来时,您应该获得所需的结果.