Vim的Buffer/缓冲区,文件

本文介绍了Vim编辑器中缓冲区的管理方法,包括如何查看、切换缓冲区,以及如何使用bufexplorer插件来增强缓冲区的操作体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于缓冲区与文件

vim可以打开多个文件 比如 vim test1 test2 test3,      vim *.txt

参考 VIM实用技巧   第6章 管理多个文件

关于缓冲区列表和文件 有几个命令,没太搞明白区别,似乎都能列出缓冲区/文件?

:buffers

:files

:ls


关于缓冲区:

以下转自  http://ju.outofmemory.cn/entry/102211   红色字体为我的备注

顾名思义, Buffer 是内存中的一块缓冲区域,用于临时存放Vim打开过的文件。用Vim打开文件后,文件就自动被加入到Buffer队列中,而且Buffer中永远是最新的版本,修改文件后还未保存时,改动就存在于Buffer中。打开过的文件会一直存在Buffer中,除非手动的删除(bw命令,不过很多时候没这个必要)。在阅读或者编写代码的时候,会经常在多个文件之间跳转,很好的利用Buffer会当然的 make your life more easier 

查看Buffer/缓冲区

使用下面命令可以同时打开多个文件:

vim test1 test2 test3

之后,可以用Vim命令 :继续打开文件 ??缩写 :o[pen] {filename} ?

:o test4

使用VIM命令 :buffers 可以查看当前Buffer中的文件列表:

:buffers

vim-buffer-snapshot

:buffers 命令还有两个更简单一些的别名: :ls 和 :files 。 上图中第一列是文件编号,第二列是缓冲文件的状态,第三列是文件的名称,第四列是上一次编辑的位置,即在不同文件之间切换的时候Vim会自动跳转到上一次光标所在的位置。 缓冲文件的状态有如下几种,仅供参考:

  • - (非活动的缓冲区)
  • a (当前被激活缓冲区)    #指光标所在的缓冲区
  • h (隐藏的缓冲区)
  • % (当前的缓冲区)          #是指当前窗口可见的缓冲区,因为可以分割窗口,可能有多个
  • # (交换缓冲区)             # 代表轮换文件,按 <C - ^> 可以在当前,怎么指定轮换?
  • = (只读缓冲区)
  • + (已经更改的缓冲区)

切换缓冲区

最常用的功能是缓冲区之间的切换了,最直接的方式是先用 :buffers 命令查看所有的缓冲区,然后使用 :buffer <编号> 或者 :buffer <文件名> 切换:

:buffer 1
:buffer test1

这种方式看起来比较费劲。

另外一种方式是使用切换上一个或者下一个缓冲区,以及直接切换到第一个和最后一个缓冲区的命令。文件比较少的时候的确很管用。

:bnext
:bprevious
:blast
:bfirst

当然,为了节省敲键盘的时间,可以在 .vimrc 中设置缓冲区前后切换的快捷键:

nmap <C-b>n  :bnext<CR>;
nmap <C-b>p  :bprev<CR>;

同时按下 Ctrl+b+或者 Ctrl+b+时切换到下一个或者前一个缓冲区。

维护缓冲区

如果希望维护一个简洁的缓冲区,不希望一些和当前工作不相关的缓冲区存在,或者希望手动的把一些和当前工作相关的文件加入到缓冲区,下面三个命令可以帮助你:

:badd test5
:bdelete test4

上面命令添加了一个名为 test5 的缓冲区,删除了缓冲区 test4 

bufexplorer插件

bufexplorer插件 提供了一些替换上面命令的快捷键,并且提供了一个窗口,可以选择、删除缓冲区,解压下载后的文件到~/.vim/目录,重启VIM就生效了。 常用的快捷键如下:

  • \bv 垂直方向打开一个窗口,显示缓冲区列表
  • \bs 水平方向打开一个窗口,显示缓冲区列表
  • \be 在当前编辑窗口中显示缓冲区列表

bufexplorer有下面的选项设置:

""""""""""""""""""""""""""""""
" BufExplorer
""""""""""""""""""""""""""""""
let g:bufExplorerDefaultHelp=0       " Do not show default help.
let g:bufExplorerShowRelativePath=1  " Show relative paths.
let g:bufExplorerSortBy='mru'        " Sort by most recently used.
let g:bufExplorerSplitRight=0        " Split left.
let g:bufExplorerSplitVertical=1     " Split vertically.
let g:bufExplorerSplitVertSize = 30  " Split width
let g:bufExplorerUseCurrentWindow=1  " Open in new window.

最后看起来应该是这个样子:

bufexplorer

参考

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值