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

标签 regex vim replace vim-registers

我有一长串不同的大学名称。我正在尝试通过整理具有某些唯一关键字的行来构建同义词表;也就是说,在文件中,我将确定哈佛是这里的关键字:

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' 搜索和替换 'foo' 为 'bar' 到寄存器 'a'
  • 最佳答案

    直接使用寄存器中的文本进行操作 a你可以使用这个命令:

    :let @a=substitute(strtrans(@a),'\^@',' ','g')
    

    然后当你粘贴寄存器 a 时你应该得到你想要的结果早在。

    关于regex - 从vim中的寄存器中删除换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228079/

    相关文章:

    java - 需要帮助找出正确的正则表达式模式

    python - 如何与后台 Python 实例通信?

    regex - Emacs:如何使用正则表达式替换字符串?

    PHP - 用另一个数组替换数组的值

    javascript - Jquery 替换文本区域中的字符串

    Java Regex-匹配除三个特定字符串之外的任何内容

    php - 每隔一个逗号后 explode 换行

    sql - 使用 Oracle 的正则表达式功能来查找双元音序列,例如。 ‘ie’ , ‘ee’ , ‘oa’

    linux - 如果 NERDTree 和 TagList 是仅剩的 2 个缓冲区,则自动退出 Vim

    vim - 打开新文件后关闭 netrw 资源管理器