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>
。
在 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>
。