是否可以在 vim 上创建一个快捷方式来多次替换文件?



我想在 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时,上面将被执行。

相关内容

最新更新