Vim - 使用搜索寄存器查找 ('f', 't', 'F', 'T' ) 命令

Vim - Use search register for find ( 'f', 't', 'F', 'T' ) commands

在 Vim 中有查找命令('f'、't'、'F'、'T'),可以使用 ' ;'要么 ','。我希望能够使用 'n' 和 'N' 重复这些命令。基本上就好像我使用了单词搜索 ('/')。

例如,当我键入 'fa' 时,我希望 vim 表现得像我执行命令“/a”一样。

我怎样才能做到这一点?

您可以通过在 vim 配置中添加以下内容来实现:

function! MyFind(c)
       execute "let @/ = '" . a:c . "'"
       return 'n'
endfunc

function! MyBackfind(c)
       execute "let @/ = '" . a:c . "'"
       return 'N'
endfunc

nnoremap <expr> f MyFind(nr2char(getchar()))
nnoremap <expr> F MyBackfind(nr2char(getchar()))

警告:

  • 不适用于 t/T,但可以实现,我将把这个任务留给你
  • F,它会转到该字母的前一次出现,但按 n 仍会继续前进,它会进行 / 搜索,而不是 ? 搜索(两者都使用相同的寄存器,我还没有找到创建 ? 搜索的方法,同样,我把它留给你作为练习:-) )

有关更多信息,请主要阅读 :help <expr>