Vim:移动窗口和tab

Vim相比于IDE一个高效的地方就是可以快速移动和切换窗口,完全不必借助于鼠标。

开启多窗口非常简单:

  • 在NerdTree中使用s键或i键在当前的窗口中以横/竖分屏的方式打开目标文件
  • 在NerdTree中使用t/T在新的tab打开目标文件(区别在于是否focus到新的tab)
  • 在buffer中使用:split命令对当前buffer分屏
  • 使用:tabnew打开一个新的tab

在多个分屏中移动也很简单:

  • <CTRL+W>hjkl,光标在不同的分屏中移动
  • <CTRL+W>HJKL,将光标所在的分屏移动到最左/下/上/右
  • gt到下一个tab
  • gT到上一个tab

但是有时候有这样的需求:我在一个分屏的窗口编辑文件,想要将当前的这个分屏全屏化,也就是说,将目前的一个分屏作为一个新的tab。也很简单:<CTRL+W>T 将当前buffer作为一个新的tab打开。

又有时候有这样的需求:在一个tab中编辑文件,但是想要参考上一个tab中已经打开的一个窗口的内容,这时候想要将当前的tab变成上一个tab的一个分屏。其实这是很常用的需求,但是这比较难办了,搜了一圈没有发现这样的Vim内置功能。但是找到了一个同样作用的VimScript。

于是可以在.vimrc中加入这些代码,其实就是两个函数:

这两个函数可以做到,将tab变成上一个tab的一个分屏,或者将tab变成下一个tab的一个分屏。模仿之前有关tab的快捷键,我加了下面这两个映射:

这样使用mt可以快速移动tab了,亲测有效。至此好像在vim中没有什么移动是做不到了,可以穿梭自如了。

参考资料:

  1. Move current window between tabs

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注