我使用通常的
[(1,256,256)]
用于在vim中搜索和替换。然而,当短语" this_one"时,这种方法看起来真的令人生畏。和#34;那个"很长,特别是当我正在编辑的文件中已经存在这两个短语时。我想知道一些方法,我可以简单地使用文本选择来替换这些短语。这种方法存在吗?
提前致谢。
答案 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:
/
并使用菜单粘贴文本(或[alt] -e-p)并点击[enter] :%s//
,粘贴替换,键入/g
并按[enter]