vim 中的自动化替换表达式

Automating substitute expressions in vim

在 vim 中自动执行替换命令的好方法是什么?

假设我有这样的东西:

s/foo/bar/g

除了更复杂,我想 运行 在选定的范围内不 必须键入替代命令?

如何保存替换命令并为其命名以便调用它?

您可以创建一个支持范围的函数,并在函数中进行替换。同时创建一个自定义命令来调用具有范围的函数。

然而我认为最简单的方法是在你的 vimrc 文件中创建一个 abbrev:

cab RR s/foo/bar/g

因此,当您选择行或在命令行中给出范围(如 3,5 or % ...)时,您按 RR<space>s/foo/bar/g 将自动填充。你可以做一些调整,或者直接按回车就可以了。

您可以尝试在下方映射,在特定单词上按两次 space 键将自动用光标下的单词填充替换命令,并等待您输入替换名称

" super quick search and replace
nnoremap <Space><Space> :'{,'}s/\<<C-r>=expand('<cword>')<CR>\>/
nnoremap <Space>%       :%s/\<<C-r>=expand('<cword>')<CR>\>/

在您的情况下,只需将光标放在 foo 单词上,然后按 space 栏两次。 你应该看到

:'{,'}s/\<foo\>/

然后输入单词 bar

'{,'}s/\<foo\>/bar

所有出现的 foo 都将替换为 bar