首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >输入时可以自动使Vim垂直对线吗?

输入时可以自动使Vim垂直对线吗?
EN

Stack Overflow用户
提问于 2018-04-25 15:45:14
回答 4查看 2K关注 0票数 3

当输入大量文本时,光标会被推到屏幕底部。我经常必须退出插入模式才能键入zz,这样Vim就可以将光标所在的行集中起来。我想要一些更自动的东西:例如,如果光标侵入一个阈值(例如,在“屏幕中心的线”下面5-8行),Vim将直接zz,而不退出插入模式。

这可能会扰乱打字过程,但由于我会打字,我的眼睛会盯着屏幕,看到正在发生什么事情。我认为退出插入模式更具有破坏性。

是否有支持此用例的配置选项或插件?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-04-25 16:08:06

通过将“scrolloff”选项设置为一个大值,您可以将光标的行保持为中心:

代码语言:javascript
运行
复制
set scrolloff=999

“帮助”页面中的“scrolloff”描述:

代码语言:javascript
运行
复制
Minimal number of screen lines to keep above and below the cursor.
This will make some context visible around where you are working.  If
you set it to a very large value (999) the cursor line will always be
in the middle of the window (except at the start or end of the file or
when long lines wrap).
票数 7
EN

Stack Overflow用户

发布于 2018-04-25 17:01:21

在此区域键入任何字符或进入插入模式(添加到.vimrc)时,当光标位于缓冲区的最后1/3范围内时,将自动设置以下垂直中心游标:

代码语言:javascript
运行
复制
augroup autoCenter
  autocmd!
  autocmd InsertCharPre,InsertEnter * if (winline() * 3 >= (winheight(0) * 2))
                                            \| norm! zz
                                        \| endif
augroup END

:h autocmd-events并添加可能需要触发对中的任何其他事件。

票数 3
EN

Stack Overflow用户

发布于 2021-02-22 17:15:03

我偶然发现了这样的解决方案:https://vi.stackexchange.com/a/26055/31046

在插入模式下,这对我来说很好:

代码语言:javascript
运行
复制
inoremap <CR> <C-\><C-O><C-E><CR>
inoremap <BS> <BS><C-O>zz
inoremap <right> <right><C-O>zz
inoremap <left> <left><C-O>zz
inoremap <up> <up><C-O>zz
inoremap <down> <down><C-O>zz

在插入模式下,我只需要单击backspace或任何箭头键即可生效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50026385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档