VIM:用宏注册命令;用寄存器替换所有出现的事件

时间:2017-08-10 10:45:43

标签: vim

我想创建一个宏,以便搜索的当前术语被最后一次插入替换。

我的方法不正确:

map <C-r> :%s//"p./<CR> 

我如何获得注册。进入我的替代命令?

2 个答案:

答案 0 :(得分:4)

您可以通过:help c_CTRL-R

在命令行模式下插入任何寄存器的内容
nnoremap <C-r> :%s//<C-r>./<CR>

注释

  • You should use :noremap;它使映射不受重映射和递归的影响。
  • 将映射限制为尽可能少的模式。我不认为您需要从可视模式或操作员待定模式触发此操作,因此:nnoremap最适合。
  • 除非添加/g标记,否则您的映射仅替换每行中的第一个出现次数。当没有匹配时,/e标志也可以有效地抑制错误。
  • 正常模式下的
  • <C-R>是重做的;不推荐重新映射这样一个关键命令,完全失去它甚至更糟。

答案 1 :(得分:3)

您正在寻找@.getreg('.')。但由于它们是表达方式,因此您需要:exe。这将是错综复杂的。

另一种方法是使用:h c_CTRL-R

nnoremap <c-r> :%s//<c-r>./<cr>

PS:我通常会避免在已经做事情的关键序列上触发映射。特别是当他们做重要和关键的事情时。这里CTRL-R是重做的。我很确定你不想放松它。

相关问题