Files
rikako-note/vim/vim.md
2025-07-24 01:27:14 +08:00

3.6 KiB
Raw Blame History

vim

Buffers,Windows,Tabs

在现代的文本编辑器,通常会存在windowstabs两种抽象。但是vim和常用的文本编辑器不同其抽象组成如下

  • windows
  • tabs
  • buffers

Buffer

buffer是一个内存空间可以向buffer写文本编辑文本。当通过vim打开一个文件后文件的内容就被关联到buffer中当打开3个文件就存在3个buffer。

可以通过如下命令打开多个buffer

vim file1.txt file2.txt

每当通过vim打开一个新文件都会为vim创建一个buffer。

如果想要在多个buffer之间进行切换可以使用如下方式。

:bnext :bprevious

通过:bnext:bprevious命令其支持在多个buffer之间进行切换切换到前一个/后一个buffer。

:buffer {filename}

通过:buffer {filename}的方式,可以切换到{filename}关联的buffer。

filename可以通过tab进行自动补全。

:buffer {n}

通过:buffer {n}的形式可以通过数字来进行buffer的跳转。

ctrl + ^

通过ctrl + ^的快捷键组合能够跳转到上次编辑的buffer。

如果想要对查看所有buffer可以通过如下方式

  • :ls
  • :files
  • :buffers

:bdelete

一旦vim创建了buffer其将会存在于buffer list中。如果想要移除buffer list中的buffer可以通过:bdelete的方式移除其支持接收buffer number和file name示例如下

:bdelete 1
:bdelete file1.txt

exit vim with all buffers closed

如果存在多个buffer想要关闭所有buffers可以使用如下方式

:qall

关闭所有buffer并且不保存修改

:qall!

保存并关闭所有buffer

:wqall

:e {filepath}

在当前存在buffer list的同时还想打开新的文件可以通过:e {filepath}的命令来实现

:e ~/f2.txt

windows

window是一个buffer的viewport。和目前主流的编辑器类似vim同样支持打开多个windows在界面同时展示多个buffer的内容。

:split {filename}

在当前已经存在buffer被展示到window的情况下如果想要同时展示多个window可以使用:split {filename},示例如下:

# 打开一个文件
vim f1

# 打开f1后此时目前只有一个buffer和一个window如果此时想要再打开一个window

# 打开f2并展示到f1 window的上部分
:split f2

# 执行完上述命令后vim被分割为两个window上面为f2下面为f1

切换窗口

如果想要在多个window之间切换焦点可以使用如下快捷键仅在normal模式下

  • ctrl + w + h:切换到左侧窗口
  • ctrl + w + l:切换到右侧窗口
  • ctrl + w + j:切换到下侧窗口
  • ctrl + w + k:切换到上侧窗口

之后,可以运行如下命令

:vsplit f3

运行之后vim会展示3个窗口上半部分展示f3, f2两个窗口,下半部分展示f1窗口。

关闭窗口

如果想要关闭当前窗口,可以调用ctrl + w + c快捷键,或是通过:q命令。即使关闭window关闭文件的buffer仍然存在于buffers中

split窗口快捷键

  • ctrl + w + s: 水平方向针对当前buffer打开一个window
  • ctrl + w + v: 垂直方向对当前buffer打开一个window
  • ctrl + w + c关闭当前window
  • ctrl + w + o关闭其他window仅保留当前window

窗口相关命令行

  • :vsplit {filename}
  • :split {filename}
  • :new {filename}