在vim中搜索和替换:如何使用"选择文本"对于长短语?

时间:2015-07-19 11:14:31

标签: vim

我使用通常的

[(1,256,256)]

用于在vim中搜索和替换。然而,当短语" this_one"时,这种方法看起来真的令人生畏。和#34;那个"很长,特别是当我正在编辑的文件中已经存在这两个短语时。我想知道一些方法,我可以简单地使用文本选择来替换这些短语。这种方法存在吗?

提前致谢。

3 个答案:

答案 0 :(得分:3)

通用方法只是将突出显示的文本拉出来并在命令行中重复使用。假设你已经选择了一些东西,你应该放弃这个:

y
:%s/<C-r>"/replacement/g<CR>

但是,人们可以编写一个简单的映射,并使用命名寄存器来使所有这些更简单,更清晰:

xnoremap <key> "zy:%s/<C-r>z//g<left><left>

但有时候,被拉动的文本包含特殊字符,斜线或换行符,这会使我们的替换失败。由于我们已经有一个映射可以为我们执行yanking和cmd-line插入,因此我们也可以清理搜索模式:

xnoremap <key> "zy:%s/<C-r>=substitute(escape(@z, '\/.*$^~[]'), "\n", '\\n', "g")<CR>//g<left><left>

参考:

:help i_ctrl-r
:help registers
:help substitute()
:help escape()

答案 1 :(得分:1)

由于其他答案并不能让您满意,并且您似乎想要保持目前的vim学习水平,因此您的问题的答案是:否。

答案 2 :(得分:0)

假设你使用gvim:

  1. 选择要替换的文本实例,然后使用菜单将其复制 (或[alt] -e-c)
  2. 键入/并使用菜单粘贴文本(或[alt] -e-p)并点击[enter]
  3. 现在选择并复制替换实例
  4. 键入:%s//,粘贴替换,键入/g并按[enter]