Vim 窗口管理:split、切换、缩放与标签页

工具与效率483 阅读约 4 分钟

写代码常要同时看多个文件:左边实现、右边测试。Vim 的多文件编辑靠三个容易混淆的概念支撑——buffer(缓冲区)、window(窗口)、tab(标签页)。先理清它们,操作才不乱。

三个概念的关系

  • buffer:一个被打开的文件在内存里的内容。打开 10 个文件就有 10 个 buffer,不管你看不看得见。
  • window:buffer 的一个「视口」。split 出来的每一格都是一个 window,多个 window 可以看同一个 buffer。
  • tab:一组 window 的布局集合。注意 Vim 的 tab 不是「每个文件一个标签」(那是 VSCode 思维),而是「一套窗口排布」。

一句话:buffer 是文件,window 是看它的窗,tab 是一组窗的布局。

分屏(split)

:split    或 :sp     水平分屏(上下)
:vsplit   或 :vs     垂直分屏(左右)
:sp file            分屏并打开指定文件
Ctrl-w s / Ctrl-w v  快捷分屏(水平 / 垂直)

窗口间切换

所有窗口操作都以 Ctrl-w 开头:

Ctrl-w h/j/k/l    切到 左/下/上/右 的窗口
Ctrl-w w          循环切换窗口
Ctrl-w q          关闭当前窗口
Ctrl-w o          只保留当前窗口(关掉其它)

调整窗口大小

Ctrl-w =          所有窗口等宽等高
Ctrl-w _          当前窗口最大化高度
Ctrl-w |          当前窗口最大化宽度
Ctrl-w + / -      增高 / 减高
Ctrl-w < / >      减宽 / 增宽
:resize 20        设当前窗口高 20 行

buffer 切换

不分屏、只在当前窗口切换打开的文件:

:ls 或 :buffers   列出所有 buffer
:b <n>           切到第 n 个 buffer
:bn / :bp        下一个 / 上一个 buffer
:bd              关闭当前 buffer

配合 fzf 的 :Buffers 可以模糊查找已开文件,比记编号快。

标签页(tab)

需要几套完全不同的布局时才用 tab:

:tabnew          新建标签页
gt / gT          下一个 / 上一个标签页
:tabclose        关闭当前标签页

提示:日常多文件用 buffer + split 就够了,tab 适合「这套窗口做功能 A、另一套做功能 B」的场景,别拿它当 VSCode 的文件标签用。

小结

记住「buffer=文件、window=视口、tab=布局」这条主线,多文件编辑就清晰了::vs 分屏、Ctrl-w + hjkl 切窗、Ctrl-w =/_/| 调大小、:b 切 buffer。掌握这套,一个 Vim 窗口里也能流畅地多文件并行。

相关文章

评论 (6)

H

hellojs

split 和 tab 我一直混着用,这下规范了

V

Vincent

马克一下

N

Nova

zsh 启动慢困扰我半年,照着排查果然是某个插件

G

Gavin

小项目我个人更倾向轻量方案,按需演进就好

F

foglight

中文乱码那段帮大忙了

W

wwwwei

这博客质量是真的高