如何配置Vim水平分割窗口显示独立分隔条与各窗口文件名
问题原因
你碰到的分屏间隔状态栏消失、set laststatus=2不生效问题,基本都是配置被覆盖导致的:
- 高版本Vim、Neovim新增了
laststatus=3的全局状态栏模式,这个模式下只有编辑器最底部有一个统一的状态栏,所有分屏之间只有不带任何文字的普通分隔线,切换窗口时中间的分隔条不会显示文件名,看起来就像状态栏消失了。 - 你写在.vimrc里的
set laststatus=2没有放在配置最后,被后续加载的系统级vim配置、插件给覆盖成了3,自然不生效。
排查步骤
打开Vim后直接执行下面的命令,看运行时实际生效的参数值:
:echo &laststatus
如果返回结果是3,就可以确认是配置被覆盖的问题。
解决方案
根据自己的使用习惯选一个即可:
方案1:每个分屏保留独立状态栏(完全匹配你的需求)
把下面的配置直接追加到~/.vimrc的最末尾(一定要最后加载,才不会被其他配置冲掉):
" 所有分屏都显示独立状态栏,窗口分隔条常驻不消失 set laststatus=2 " 恢复分隔线默认填充字符,避免分隔线透明看不见 set fillchars& " 状态栏配置:显示文件名、修改状态、文件类型、光标位置等信息,可按需删减 set statusline=%t%m%r%h%w\ [%{&ff}]\ [%Y]\ [%l,%v][%p%%]
保存后重启Vim,再水平分屏时,两个窗口之间会一直留着带文件名的分隔状态栏,切换到任意窗口编辑都不会消失。
方案2:全局状态栏+窗口顶栏(适合高版本Vim/Neovim)
如果你用的是Vim 8.2.2000以上版本、或者Neovim 0.7以上版本(支持winbar特性),习惯用底部统一的全局状态栏,可以给每个窗口顶部加固定的文件名栏,一样能解决分不清当前窗口对应哪个文件的问题,配置如下:
" 启用底部全局统一状态栏 set laststatus=3 " 每个窗口顶部固定显示文件名、修改状态 set winbar=%t%m%r%h " 保证窗口最小高度足够显示顶栏,不会被挤没 set winminheight=2 set fillchars&
注意事项
- 所有和状态栏、分屏相关的配置都要放在.vimrc的最末尾,放在插件配置、主题配置的后面,不然很容易被加载的插件、主题修改参数导致不生效。
- 如果查出来
laststatus的值是2但还是看不到分隔栏,先执行:colorscheme default切回默认主题测试,大概率是你用的主题把状态栏前景/背景色设成和分隔线一致,导致文字和线条看不见。
内容的提问来源于stack exchange,提问作者Jiaji Huang
相关产品推荐
相关产品推荐

