我想在 vim 上创建一个快捷方式来多次替换文件,这是我多次使用的工具。
工具示例:
:%s/this.props/otherProps/gc
此命令会将所有这些 this.props 替换为 otherProps 并要求确认
但是我正在尝试在快捷方式中转换此命令,如下所示:
// on .vimrc
noremap <leader>F :%s/$1/$2/gc
所以在这种情况下,我每次按<leader>
+F
时,我输入第一个单词,然后在我按tab
并键入第二个单词后按回车键。
我已经输入了$1
和$2
作为尝试,但它不起作用。
我试图搜索一些关于这个的文档,但我没有找到任何东西,也许有一些更具体的word
您可以通过向.vimrc
添加类似以下内容来使用自定义函数:
function! Replace()
call inputsave()
let pattern = input('Enter pattern:')
let replacement = input('Enter replacement:')
call inputrestore()
execute '%s/'.pattern.'/'.replacement.'/gc'
endfunction
nnoremap <leader>f :call Replace()<cr>
每次点击<leader>f
时都会调用该函数。然后,它将首先要求您提供模式,然后要求您进行替换,然后执行替换命令。
虽然这并没有完全按照您的要求进行,但它确实非常接近。
noremap <leader>F :%s//gc<LEFT><LEFT><LEFT>
这将键入命令noremap <leader>F :%s//gc
但将光标留在 2 个斜杠之间,准备输入要查找和替换的内容。
所以现在你可以按<leader>F
并开始输入this.props/otherprops
然后按回车键。它完全可以满足您的需求,但不是按tab
而是按/
cnoreabbrev <expr> esr getcmdtype() == ":" && getcmdline() == 'esr' ? '%s:<end>: & /*}*/:g' : 'esr'
这将替换端到端:/*}*/
你可以把它添加到gvimrc
;每当键入:esr
时,上面将被执行。