我想创建一个宏,以便搜索的当前术语被最后一次插入替换。
我的方法不正确:
map <C-r> :%s//"p./<CR>
我如何获得注册。进入我的替代命令?
答案 0 :(得分:4)
您可以通过:help c_CTRL-R
:
nnoremap <C-r> :%s//<C-r>./<CR>
:noremap
;它使映射不受重映射和递归的影响。:nnoremap
最适合。/g
标记,否则您的映射仅替换每行中的第一个出现次数。当没有匹配时,/e
标志也可以有效地抑制错误。<C-R>
是重做的;不推荐重新映射这样一个关键命令,完全失去它甚至更糟。答案 1 :(得分:3)
您正在寻找@.
或getreg('.')
。但由于它们是表达方式,因此您需要:exe
。这将是错综复杂的。
另一种方法是使用:h c_CTRL-R
:
nnoremap <c-r> :%s//<c-r>./<cr>
PS:我通常会避免在已经做事情的关键序列上触发映射。特别是当他们做重要和关键的事情时。这里CTRL-R
是重做的。我很确定你不想放松它。