Vim知多少

Vim的官网

Vim最早在1991年由Bram Moolenaar发布,是Vi的一个改良版, 表示Vi IMproved.

Vi最早在1976年由Bill Joy发布。

Richard Stallman称Vi是魔鬼的编辑器(VI-VI-VI在罗马数字中表示兽名数目)。

Vi的支持者反讽Emacs是一个伟大的操作系统,只缺个体面的编辑器。两者有太多的往事不堪回首。

首页 » Vim » 使用Vim编辑多个文件

使用Vim编辑多个文件

缓冲区 - gf跳转 -

启动Vim时打开多个文件:

$ vim one.txt tow.txt three.txt
$ vim *.txt

缓冲区

这样启动Vim,只有一个文件出现在当前窗口,使用:buffers或:ls查看其他位于缓冲区内的文件列表:

:ls
  1 #h + "vim/files.php"                第 21 行
  2      "vim/side.php"                 第 6 行
  3      "vim/VimWiki.php"              第 1 行
  4 %a   "vim/chinese.php"              第 1 行
  5      "vim/tricks.php"               第 0 行
  6      "vim/vim.php"                  第 0 行
  7      "vim/vimrc.php"                第 0 行
  8   =  "/usr/include/stdlib.h"        第 1 行
  9      "~/.vimrc"                     第 35 行
 10      "/www/zhuji/vim/../header.php" 第 1 行
 11      "/www/zhuji/vim/../topnav.php" 第 1 行
 12      "~/.screenrc"                  第 1 行
 13u a-  "windows.txt.gz"               第 0 行

:ls输出的每一行有4个组成部分:缓冲区编号、文件状态标识、文件名和行号。这些部分中,唯有文件状态较难理解。文件状态本身由5列组成:

文件状态标识说明
u一个不会列出的缓冲区,只有用:ls!才会出现。例如taglist窗口、帮助窗口。
    %占据当前window的缓冲区(光标焦点所在的缓冲区)。
    #候选缓冲区。当你用Ctrl-^或:e #时就会切换到它头上
        a激活了的缓冲区。同时出现在当前window的缓冲区都被标识为a。
        h隐藏了的缓冲区。
            -不可修改的缓冲区
            =只读缓冲区
                +一个被修改过的缓冲区(还没保存在磁盘)
                x有读错误的缓冲区

再看另一个例子

:ls!
  2 #    "libs/type_order.php"          第 303 行
  3u%a-  "__Tag_List__"                 第 159 行
  4  a   "htdocs/admin-orders.php"      第 26 行
  5u a-  "starting.txt.gz"              第 0 行

切换缓冲区文件有几种方式:

  • 通过:buf X(缓冲区编号)切换到对应的文件
  • 通过:e #X(缓冲区编号)切换
  • 通过:buf filename的方式切换,如果输入文件名,Vim会为你找到最佳匹配。

看上去用缓冲区编号切换比较容易,但你通常需要先用:ls查看编号;:buf filename通常会更快,因为Vim会为你匹配最合适的文件。

在Vim启动后,可以通过:edit file编辑新文件,或通过:args file1 file2编辑多个文件(同样进入缓冲区)。打开新文件后,可以通过Ctrl-^切换到前一个文件。Ctrl-^也常用在最近访问的两个文件间跳转。

gf跳转到目标文件

gf的含义是goto file。在编辑C文件时,光标移动到如

#include <stdlib.h>

在stdlib.h上键入gf即可打开stdlib.h的源文件(/usr/include/stdlib.h),这个技巧对PHP等其他语言也有效。如果不能打开文件,你需要检查Vim的path变量:

:se path
  path=.,./**,/usr/include

以上是我的path配置。

分享

0