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