如何在取消删除后突出显示以前删除的所有文本

Rem*_*man 6 vim highlight find match

我经常使用命令或脚本来删除文本,在我取消删除之后(u)我想看看之前删除的命令/脚本.

使用undelete命令时是否可以突出显示以前删除的文本?(或者甚至更好地匹配查找"/"命令中之前删除的文本)

ram*_*ion 6

如果您刚刚删除了一些文本d,则可以使用/<CTRL-R>"以匹配刚删除的文本(即使您刚刚删除了删除u).

如果删除的文本包含换行符或正则表达式元字符(如\[),则无效.如果可能的话,试试:

/\V<CTRL-R>=substitute(substitute(getreg('"'), "[\\/]", '\\\0', 'g'), "\n", '\\n', "g")
Run Code Online (Sandbox Code Playgroud)
  • \V - 非常无害 - 关闭大多数正则表达式元字符
  • <CTRL-R>= - 插入vim表达式的评估
  • substitute(..., "\n", '\\n', "g") - 转义给定字符串中的所有换行符
  • substitute(..., "[\\/]", '\\\0', 'g') - 转义给定字符串中的所有斜杠和反斜杠
  • getreg('"')- 获取"寄存器的内容,其中包含最近被删除和/或删除的文本

这有点罗嗦,所以如果你发现自己需要经常这样做,你可以将它绑定到你的命令~/.vimrc:

" use ,/ in normal mode to match the most recently deleted or yanked text
nmap ,/ /\V<C-R>=substitute(substitute(getreg('"'), "[\\/]", '\\\0', 'g'), "\n", '\\n', "g")<CR><CR><CR>
Run Code Online (Sandbox Code Playgroud)