Vim:命令栏/状态栏增高时如何阻止文本上移改为覆盖上方行?
解决Vim状态栏扩展时文本上移的问题
嘿,这个问题我在低速远程连接Vim时也深有体会——屏幕频繁刷新延迟真的太影响效率了!下面几个方法可以帮你实现让状态栏/命令行补全覆盖上方行,而不是上移整个文本:
1. 固定编辑窗口高度
在Vim里执行这个命令:
:set winfixheight
这个设置会把当前编辑窗口的高度固定下来。当命令行需要展开多行补全(比如:e <TAB>)时,Vim不会调整编辑窗口的大小、上移所有文本,而是直接让补全内容覆盖编辑窗口的最后几行。这样只有被覆盖的区域会刷新,大大减少了屏幕更新量。
如果想让这个设置永久生效,把它添加到你的~/.vimrc(或~/.vim/vimrc)文件里即可。
2. 优化命令行补全的显示方式
如果你不需要多行补全,也可以用wildmenu让补全在命令行内横向展示,避免状态栏高度变化:
:set wildmenu :set wildmode=full
这样按<TAB>补全时,候选内容会在命令行里滚动显示,不会额外占用多行空间,自然也就不会触发文本上移了。
3. 调整命令行基础高度(可选)
默认情况下Vim的命令行高度(cmdheight)是1,如果你偶尔需要更多命令行空间,但又不想让文本上移,可以结合winfixheight设置固定的cmdheight:
:set cmdheight=2 :set winfixheight
这样命令行始终保持2行高度,补全内容如果需要更多空间,依然会覆盖编辑窗口的行,而不是上移文本。
注意:
winfixheight只对当前窗口生效,如果打开了多个分割窗口,你需要对每个编辑窗口都执行一次,或者在vimrc里添加autocmd VimEnter * set winfixheight来自动应用到所有窗口。
内容的提问来源于stack exchange,提问作者eapi
相关产品推荐
相关产品推荐

