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



在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>大部分内容。