如何将标记移到屏幕中间?

时间:2019-12-19 11:22:39

标签: vim

在vim中,当我转到标记时,是否有办法告诉vim自动将其滚动到中间,而不是再次执行z.zz

或者当我去标记vim缓冲区事件时,vim是否有事件?

运行内置命令前后的命令似乎很强大。所以可能有一个插件可以做到这一点。找不到针对此的Google查询。

1 个答案:

答案 0 :(得分:6)

如果这仅是为了与'和朋友(或几个其他选择动作)一起移动到标记,则可以使用以下自定义映射覆盖原始命令:

:nnoremap <expr> ' "'" . nr2char(getchar()) . 'zz'
:nnoremap <expr> ` "`" . nr2char(getchar()) . 'zz'

这些基本上将'a(键入)变成了'azz(执行);这里的复杂之处在于'命令等待输入的标记;映射将在组装并返回完整命令之前通过getchar()完成。 <expr>使Vim在表达式的右侧执行并使用结​​果,而不是直接执行它。


要始终使光标保持在窗口的中间,请将'scrolloff'选项设置为较高的值(例如999)。


说到事件,每次移动后都会触发CursorMoved;不幸的是,没有迹象表明哪个命令导致了移动。