在vim中,当我转到标记时,是否有办法告诉vim自动将其滚动到中间,而不是再次执行z.
或zz
?
或者当我去标记vim缓冲区事件时,vim是否有事件?
运行内置命令前后的命令似乎很强大。所以可能有一个插件可以做到这一点。找不到针对此的Google查询。
答案 0 :(得分:6)
如果这仅是为了与'
和朋友(或几个其他选择动作)一起移动到标记,则可以使用以下自定义映射覆盖原始命令:
:nnoremap <expr> ' "'" . nr2char(getchar()) . 'zz'
:nnoremap <expr> ` "`" . nr2char(getchar()) . 'zz'
这些基本上将'a
(键入)变成了'azz
(执行);这里的复杂之处在于'
命令等待输入的标记;映射将在组装并返回完整命令之前通过getchar()
完成。 <expr>
使Vim在表达式的右侧执行并使用结果,而不是直接执行它。
要始终使光标保持在窗口的中间,请将'scrolloff'
选项设置为较高的值(例如999
)。
说到事件,每次移动后都会触发CursorMoved
;不幸的是,没有迹象表明哪个命令导致了移动。