From 449caf7a6c2e22c7befcd1c1fa7f93cb8d9360c2 Mon Sep 17 00:00:00 2001 From: asahi Date: Fri, 25 Jul 2025 01:56:01 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E9=98=85=E8=AF=BBvim=20tab=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vim/vim.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/vim/vim.md b/vim/vim.md index c11c253..5264654 100644 --- a/vim/vim.md +++ b/vim/vim.md @@ -114,3 +114,66 @@ vim f1 - `:split {filename}` - `:new {filename}` +### tabs +vim除了支持同时展示多个windows之外,也同样支持`tab`。在vim中,tab和浏览器/现代编辑器类似,tab为对window的布局(垂直/水平多个window的布局)。 + +在vim中,tab并不表示打开的文件,即使当tab被关闭,文件的buffer仍然会存在。 + +tab的常用命令如下 + +#### `:tabnew` +`:tabnew {filename}`用于在新tab中打开文件,使用示例如下: + +```bash +:tabnew file1.txt +``` + +`:tabnew`并不实际依托于buffer存在,可以直接调用`:tabnew`先创建一个tab,然后在新tab中调用`:e`打开文件进行编辑。 + +```bash +:tabnew + +:e file2.txt +``` + +#### `:tabclose` +`:tabclose`命令用于关闭当前tab + +#### `:tabnext` +`:tabnext`命令用于切换到下个tab + +#### `:tabprevious` +`:tabprevious`命令用于切换到前一个tab + +#### `:tablast` +`:tablast`用于切换到最后一个tab + +#### `:tabfirst` +`:tabfirst`用于切换到第一个tab + +#### `gt` +除了通过命令外,还可以通过快捷键`gt`切换到`下一个tab页面`。 + +#### `gT` +快捷键`gT`则是可以切换到`前一个tab页面`。 + +#### `{n}gt` +`{n}gt`支持通过tab序号快速切换tab,例如`3gt`可以切换到第三个tab。 + + +#### `vim -p` +在进入vim时,如果想打开多个tab,可以添加`-p`选项,示例如下 + +```bash +vim -p f1.txt f2.txt f3.txt +``` + +### window和buffer的组合 +vim支持同时打开多个window,并且,`每一个window都包含了一个buffer`。可以通过`ctrl + w + {dir}`快捷键的方式在window之间切换,但是,`对于当前的焦点window,仍可以通过 :buffer {filename} 的方式来切换当前焦点window对应的buffer`。 + +例如,当前存在三个windows,`w1, w2, w3`,其打开文件分别为`f1, f2, f3`,可以切换到`w2` window,并且调用`:b f3`命令,此时会将当前的`w2`的buffer切换到`f3`,此时,`w1, w2, w3`对应的打开文件则变成了`f1, f3, f3`。 + +> 通常,在图形操作系统中使用vim,其`terminal`(如`windows系的Windows Terminal`和`Linux系的KConsole`,其终端本身就支持`tab`功能,此时可以无需使用vim本身的tab功能。 +> +> 但是,在非图形化系统(如通过ssh访问服务器),此时在服务端未提供图形支持的前提下,可以使用vim tab来实现多tab打开。 +