在某一个动作返回一系列「位置」的时候,我们可以利用「全局位置信息表」和「局部位置信息表」来存储这些位置信息,方便以后跳转回对应的位置。每一个存储的位置包括文件名、行号和列号。
比如,编译代码是出现错误,这时候我们就可以把错误的位置直接显示在全局位置信息表,或者通过外部抓取工具使位置显示在局部位置信息表中。
尽管我们也可以把这些信息显示到一个空格缓冲区中,但用这两个信息表显示的好处在于接口调用很方便,而且也便于浏览输出。
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" 的文件名以及匹配到的相关字段都会显示在全局位置信息表中。