【问题标题】:Is it possible create a shortcut on vim to replace multiple times on a file?是否可以在 vim 上创建一个快捷方式来多次替换文件?
【发布时间】:2020-01-27 20:13:44
【问题描述】:

我想在 vim 上创建一个快捷方式来多次替换文件,这是我多次使用的工具。

工具示例:

:%s/this.props/otherProps/gc

此命令会将所有 this.props 替换为 otherProps 并要求确认

但我正在尝试将此命令转换为如下示例的快捷方式:

// on .vimrc

noremap <leader>F :%s/$1/$2/gc

所以在这种情况下,我会每次按&lt;leader&gt; + F,输入第一个字,然后按tab 并输入第二个字,然后按回车键。

我尝试输入了$1$2,但它不起作用。

我试图搜索一些关于此的文档,但我没有找到任何东西,也许有一些我还不知道的更具体的 word

【问题讨论】:

  • 感谢@GiftZwergrapper 的编辑:)

标签: vim editor


【解决方案1】:

您可以通过将以下内容添加到您的.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>

每次点击&lt;leader&gt;f 时都会调用该函数。然后它会先问你一个模式,然后是一个替换,然后会执行替换命令。

【讨论】:

  • 好答案,但第一个答案对我来说效果很好,但谢谢:D
【解决方案2】:

虽然这并不能完全满足您的要求,但确实非常接近。

noremap &lt;leader&gt;F :%s//gc&lt;LEFT&gt;&lt;LEFT&gt;&lt;LEFT&gt;

这将输入命令noremap &lt;leader&gt;F :%s//gc,但将光标留在两个斜线之间,准备输入您要查找和替换的内容。

所以现在您只需点击&lt;leader&gt;F 并开始输入this.props/otherprops 然后回车即可。它完全符合您的要求,但不是按tab,而是按/

【讨论】:

  • 没问题。我用这个来抓取光标下的单词并替换它:nnoremap &lt;LEADER&gt;r *yiw:%s/&lt;C-R&gt;"//gc&lt;LEFT&gt;&lt;LEFT&gt;&lt;LEFT&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-04
  • 1970-01-01
  • 2011-07-20
相关资源
最近更新 更多