vim分屏操作分启动与编辑中两类:-o垂直、-o水平启动分屏;编辑中用:sp/:vsp更灵活;窗口切换用ctrl+w组合键;关闭窗口优先用ctrl+w c或:only,避免误退vim。

直接用 vim -O 或 vim -o 启动就能分屏打开多个文件,不用进编辑器再折腾;但真正在编辑中频繁切换、调整窗口时,:sp 和 :vsp 才是主力,别依赖启动参数。
启动时就分屏:-O 和 -o 参数的区别与陷阱
-O 是垂直分屏(左右并排),-o 是水平分屏(上下堆叠)。注意大小写敏感,输成 -o 却想左右显示,结果会挤成一列滚动——不是 bug,是它本来就这样。
-
vim -O file1.txt file2.txt→ 左右两个窗口,等宽 -
vim -o file1.txt file2.txt→ 上下两个窗口,等高 -
vim -O3 a.py b.py c.py→ 强制三列垂直分屏,哪怕只有两个文件也会留空位 - 如果文件路径含空格或特殊字符,必须用引号包裹,否则 vim 会把空格后的内容当新参数报错:
vim -O "my file.txt" "log 2024.log"
编辑中动态分屏::sp 和 :vsp 的实际用法
进 Vim 后再开新文件,:sp 和 :vsp 更灵活,支持相对路径、通配符,还能复用当前 buffer 内容。
-
:sp(不带参数)→ 水平分屏,复制当前文件内容到新窗口(适合对比同一文件不同段落) -
:sp ../config.json→ 水平分屏打开上级目录的文件 -
:vsp *.log→ 垂直分屏打开所有匹配的 log 文件(只开第一个匹配项,不是全部) -
:vsp +100 server.go→ 垂直分屏打开,并自动跳转到第 100 行 - 误输
:sp file.missing会卡住报错,此时按Ctrl+C中断,别连按:q,否则可能意外退出整个 vim
窗口切换和尺寸调整:Ctrl+W 是核心,但方向键容易按错
Ctrl+W 后接的字母/方向键必须“一次敲完”,中间不能停顿,否则 vim 会先执行前半段(比如 Ctrl+W 单独按会触发窗口帮助),再处理后半段,行为不可控。
-
Ctrl+W h/j/k/l→ 切换到左/下/上/右窗口(h=left, j=down, k=up, l=right) -
Ctrl+W w→ 循环切换,适合两三个窗口时快速轮转 -
Ctrl+W =→ 所有窗口重置为等高/等宽,但不会恢复原始比例,慎用 -
Ctrl+W >/Ctrl+W → 调整当前窗口宽度(需 vim 8.0+,老系统如 CentOS 7 默认 vim 7.4 不支持) - 想让某个窗口占满屏幕?
Ctrl+W o(:only)比反复调尺寸更干脆
关窗别手滑::q 和 :qall 的行为差异很关键
新手常以为 :q 就是“关当前窗口”,其实它在只剩一个窗口时会直接退出 vim——这和你只想关掉辅助日志窗口的预期完全相反。
-
:q→ 关当前窗口;若仅剩一个,则退出 vim(危险!) -
Ctrl+W c→ 安全关闭当前窗口,即使只剩一个也只关窗不退 vim -
:qall!→ 强制关闭所有窗口,丢弃未保存修改(适合调试临时文件) -
:wqall→ 保存所有已修改窗口并退出,但任一文件保存失败(如权限不足),整个命令就中断,不会部分保存 - 想关掉除当前外所有窗口?
:only最可靠,比手动:q多次更少出错
真正麻烦的是混合使用缓冲区(:ls / :bnext)和分屏窗口:一个文件可能在多个窗口里以不同 buffer 编辑,改了没保存,切过去才发现内容不一致。这种场景下,:windo w 批量保存比逐个 :w 更省心,但也得确认每个 buffer 真是你想存的。











