如何覆盖/重新定义Vim搜索命令

时间:2019-02-12 19:24:45

标签: vim

我需要重写/重新定义Vim的搜索运算符“ /”,以便在搜索后也执行“ zszH”,以使搜索结果在屏幕上水平居中。

例如,我要输入:/ varchar并将搜索结果(即字符串“ varchar”)水平显示在scren的中间。

我现在可以通过在每次搜索后手动输入“ zszH”来做到这一点,但这很繁琐。

1 个答案:

答案 0 :(得分:1)

您可以使用CmdlineLeave事件。将以下内容添加到您的vimrc

augroup RecenterSearch
  autocmd!
  autocmd CmdlineLeave [/?] call feedkeys('zszH', 't')
augroup END

注意:CmdlineLeave需要Vim 8.1

或者您可以映射<cr>

cnoremap <expr> <cr> "\<cr>" . (getcmdtype() =~ '[?/]' ? "zszH" : '')

一些可能有用的映射:

nnoremap n nzszH
nnoremap N NzszH

如果您在Vim上没有足够新的版本,则可以考虑使用'wrap'或创建映射

有关更多帮助,请参见:

:h CmdlineLeave
:h :autocmd
:h feedkeys()
:h expression-mapping
:h getcmdtype()