Skip to content

第五章:分屏与标签页 ​

先把三个容易混淆的概念分开:

  • buffer 是载入内存、正在编辑的文本;
  • window 是显示某个 buffer 的视口;
  • tab page 是一组 window 的布局。

同一个 buffer 可以同时显示在两个窗口里,一个标签页也可以包含多个窗口。因此,Vim 里的标签页不是普通编辑器中“一个标签对应一个文件”的模型。

窗口分屏 ​

工作中经常会遇到这种情况,就是需要参照其他文档编辑当前文档(场景:翻译),或者从 另外一个文档 copy 代码到当前文档(场景:复制 html 元素类名到 css 文档),这时候 就是你最需要分屏的时候。

分屏方式 ​

  • :split 缩写 :sp or Ctrl-w s 上下分屏
  • :vsplit 缩写 :vs or Ctrl-w v 左右分屏
  • :diffsplit 缩写 :diffs diff 模式打开一个分屏,后面可以加上

窗口跳转 ​

  • Ctrl-w w 激活下一个窗口
  • Ctrl-w j 激活下方窗口
  • Ctrl-w k 激活上方窗口
  • Ctrl-w h 激活左侧窗口
  • Ctrl-w l 激活右侧窗口

移动分屏 ​

  • Ctrl-w L 移动到最右侧
  • Ctrl-w H 移动到最左侧
  • Ctrl-w K 移动到顶部
  • Ctrl-w J 移动到底部

注意:区分大小写。另外,可以将底部的屏幕移动到右侧,实现上下分屏到左右分屏的转 换。

屏幕缩放 ​

  • Ctrl-w = 平均窗口尺寸
  • Ctrl-w + 增加高度
  • Ctrl-w - 缩减高度
  • Ctrl-w _ 最大高度
  • Ctrl-w > 增加宽度
  • Ctrl-w < 缩减宽度
  • Ctrl-w | 最大宽度

实践!实践!实践!

执行 :split,然后在两个窗口中分别滚动。你看到的是同一个 buffer 的两个视口;在 其中一边修改文字,另一边也会同步变化。练习结束后按 u 恢复,再用 Ctrl-w c 关闭当前窗口。

标签页 ​

标签页适合保存不同的窗口布局,例如一个标签页查看代码和测试,另一个标签页查看文档 和日志。单纯切换文件时,通常继续使用第二章介绍的 buffer 更直接。

创建标签页 ​

  • :tabnew or :tabedit 缩写 :tabe 打开新标签页
  • Ctrl-w gf 在新标签页中打开当前光标所在位置的文件名

注意::tabnew 和 :tabedit 后面都可以跟一个 <空格><文件名> 用以在新标签页中 打开指定文件,还可以在 : 后面加一个数字,指出新标签页在列表中的位置(从 0 开始 )。

切换标签页 ​

  • gt or :tabnext 缩写 :tabn 下一个标签页(最后一个会循环到第一个)
  • gT or :tabprevious 缩写 :tabp 上一个标签页(第一个会循环到最后一个)
  • :tabrewind 缩写 :tabr or :tabfirst 缩写 :tabfir 到第一个
  • :tablast 缩写 :tabl 到最后一个标签页

关闭标签页 ​

  • :tabclose 缩写 :tabc 关闭当前标签页
  • :-tabc 关闭上一个标签页
  • :+tabc 关闭下一个标签页
  • :tabonly 缩写 :tabo 关闭其他标签页

执行 :tabnew chapter01.md,再执行 :vsplit chapter02.md。现在用 gt 在标签页 之间切换,用 Ctrl-w w 在当前标签页的窗口之间切换。最后依次执行 :close 和 :tabclose 回到本章。

下一章将介绍块操作。