Vim

全局位置信息表,局部位置信息表

在某一个动作返回一系列「位置」的时候,我们可以利用「全局位置信息表」和「局部位置信息表」来存储这些位置信息,方便以后跳转回对应的位置。每一个存储的位置包括文件名、行号和列号。

比如,编译代码是出现错误,这时候我们就可以把错误的位置直接显示在全局位置信息表,或者通过外部抓取工具使位置显示在局部位置信息表中。

尽管我们也可以把这些信息显示到一个空格缓冲区中,但用这两个信息表显示的好处在于接口调用很方便,而且也便于浏览输出。

VIM 中,全局位置信息表只能有一个,但每一个窗口都可以有自己的局部位置信息表。这两个信息表的外观看上去很类似,但在操作上会稍有不同。

以下为两者的操作比较:

动作 全局位置信息表 局部位置信息表
打开窗口 :copen :lopen
关闭窗口 :cclose :lclose
下一个条目 :cnext :lnext
上一个条目 :cprevious :lprevious
第一个条目 :cfirst :lfirst
最后一个条目 :clast :llast

请参阅 :h :cc 以及底下的内容,来获取更多命令的帮助。

应用实例 : 如果我们想用 grep 递归地在当前文件夹中寻找某个关键词,然后把输出结果放到全局位置信息表中,只需要这样:

:let &grepprg = 'grep -Rn $* .'
:grep! foo
<grep output - hit enter>
:copen

执行了上面的代码,你就能看到所有包含字符串 "foo" 的文件名以及匹配到的相关字段都会显示在全局位置信息表中。