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
在 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