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

时间:2019-04-26 17:01:45

标签: vim find command

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

例如,当我键入'fa'时,我希望vim像执行命令'/ a'一样起作用。

我如何做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以通过在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>