欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

如何关闭 vim 的缓冲区

*22.4* 缓冲区列表


Vim 编辑器使用术语 "缓冲区" 来描述编辑当中的文件。实际上,缓冲区是你编辑的文件
的副本。你修改完缓冲区,就把缓冲区的内容写进文件。缓冲区不仅存放文件内容,而且
还存放着全部标记,设定,以及其它跟被编辑文件相关的东西。


隐 藏 的 缓 冲 区

假设你在编辑文件 one.txt,同时又要编辑文件 two.txt。你本来可以简单地用 ":edit
two.txt" 来办到,但由于你已经修改了 one.txt,那样做就没用了。而你又不想在此时
就把 one.txt 存盘。Vim 可以为你解决这个问题:

        :hide edit two.txt

缓冲区 "one.txt" 从屏幕消失,但 Vim 仍然知道你在编辑这个缓冲区,因而保留着它修
改过的文本。这样的缓冲区称为隐藏的缓冲区: 缓冲区存放着文本,但你看不见它。
   命令 ":hide" 的参数是另一个命令。它使得那个命令表现得就像 'hidden' 选项已被
设定。你也可以不用 ":hide" 命令而设定 'hidden' 选项。其作用是当离开任何缓冲区
时,该缓冲区变成隐藏。
   小心!当你的隐藏的缓冲区已经改动,千万不要在所有缓冲区存盘之前就退出 Vim。


非 激 活 缓 冲 区

   一个缓冲区一经使用,Vim 就记住了一些有关该缓冲区的信息。即使它既不显示在窗
口内,又非隐藏缓冲区,它也仍然在缓冲区列表上。这样的缓冲区称为非激活缓冲区。一
般而言,

   激活         显示在窗口内,并加载文本
   隐藏         不显示在窗口内,但加载文本
   非激活       不显示在窗口内,不加载文本

非激活缓冲区不会被遗忘,因为 Vim 保存着关于它们的信息,如标记等。而且记住文件
名有个好处,你可以调阅你编辑过的文件名,再次编辑它们。


缓 冲 区 列 表

你可以用这个命令查看缓冲区列表:

        :buffers

另一个作用相当的命令,虽然意思不那么明白,但键入时省事多了:

        :ls

其输出可能像这样:

1 #h "help.txt"                      line 62 
2 %a+ "usr_21.txt"                    line 1 
3     "usr_toc.txt"                   line 1 

第一栏存放缓冲区号。你可以利用它来编辑文件,而不用键入文件名,参见下文。
   紧随缓冲区号的是些标志位。然后是文件名,以及光标最后一次停留的行号。
   可能出现的标志位有以下这些 (自左至右):

        u       列表外缓冲区 |unlisted-buffer|。
         %      当前缓冲区。
         #      轮换缓冲区。
          a     激活缓冲区,缓冲区被加载且显示。
          h     隐藏缓冲区,缓冲区被加载但不显示。
           =    只读缓冲区。
           -    不可改缓冲区, 'modifiable' 选项不置位。
            +   已修改缓冲区。


编 辑 缓 冲 区

你可以通过指定其缓冲区号来编辑一个缓冲区,而不必键入文件名:

        :buffer 2

但获知缓冲区号的唯一途径是查阅缓冲区列表。如果不用缓冲区号,你可以用文件名,或
其部分:

        :buffer help

Vim 将为你键入的文件名找到最佳匹配。如果只有一个缓冲区与之匹配,该缓冲区就被选
用。在这个例子中,被选中的就是 "help.txt"。
   要在新窗口中打开一个缓冲区:

        :sbuffer 3

这方法也适用于文件名。


使 用 缓 冲 区 列 表

你可以用这些命令在缓冲区列表间移动:

        :bnext          编辑下一个缓冲区
        :bprevious      编辑前一个缓冲区
        :bfirst         编辑第一个缓冲区
        :blast          编辑最后一个缓冲区

要从缓冲区列表上删除一个缓冲区,用这个命令:

        :bdelete 3

同样,这命令也适用文件名。
   如果你删除了一个激活的缓冲区 (显示在窗口中的缓冲区),你也就关闭了该窗口。如
果你删除了当前缓冲区,你也就关闭了当前窗口。如果它是最后一个窗口,Vim 将找一个
缓冲区来编辑。你无法什么也不编辑!

        备注:
        即使用 ":bdelete" 命令删除了缓冲区以后,Vim 依然记得它。这个缓冲区实际
        上成了 "列表外" 缓冲区,它不再出现在 ":buffers" 命令所报告的列表中。不
        过 ":buffers!" 命令仍会列出 "列表外" 缓冲区 (没错,Vim 无所不能)。要让
        Vim 彻底忘记一个缓冲区,用 ":bwipe" 命令。另见 'buflisted' 选项。


来自 https://blog.csdn.net/fudesign2008/article/details/7295138

普通分类: