Vim,Ag和Quickfix窗口,限制输出宽度和高度

时间:2014-10-30 05:11:55

标签: vim ag

有没有办法限制:Ag输出,所以它总是需要一行而不会炸毁quickfix窗口?

此刻它看起来像这样,很可怕。我看不到文件名,一切都超级慢,只是很糟糕:

更新为了记录,我稍微滚动了Quickfix窗口以更好地说明这一点。虽然可以通过:cn :cp使用,但我希望能够使用j k快速浏览结果。

4 个答案:

答案 0 :(得分:4)

查看手册页,似乎没有任何方法可以限制Ag本身内置的输出。

是否有另一种限制线长的方法?实际上,你确实有内置的" cut" Linux中的命令,例如在shell上使用它:

ag --column foo | cut -c 1-80

将所有行限制为80。

现在我们必须让ag.vim执行我们特制的命令,g:agprg存在。所以我想到的第一件事是:

let g:agprg='ag --column \| cut -c 1-80'  " doesn't work

这个问题是ag.vim插件只是在末尾添加了额外的参数,因此你最终会执行ag --column | cut -c 1-80 something-i-searched-for之类的操作。有没有办法直接"插入" |?

之前的参数

一个技巧是使用临时shell函数,如下所示:

f() { ag --column "$@" | cut -c 1-80 }; f something-i-search-for

不幸的是,我们仍然无法使用它。 ag.vim检查第一个单词是否是实际命令。所以它抱怨没有可执行的名称为" f()"存在。所以我的最终解决方案是:

let g:agprg='true ; f(){ ag --column "$@" \| cut -c 1-80 }; f'

由于true始终存在且除了返回true之外没有做任何事情,这都有效!

根据您的实际屏幕宽度而不是80,您可以使用:

let g:agprg='true ; f(){ ag --column "$@" \| cut -c 1-'.(&columns - 6).' }; f'

我在这里添加了魔法- 6以说明Vim自己添加的额外字符。

答案 1 :(得分:2)

ag现在支持--width转换。 rg有类似的--max-columns切换。

答案 2 :(得分:1)

假设您正在使用此plugin。您应该按照~/.vimrc

的指定将其添加到:h g:ag_qhandler
let g:ag_qhandler = 'copen 1'

但是你可以做let :g:ag_qhandler = 'cc'。这将在底部打印结果。当您通过:cnext:cprev移动修订列表时,它也会打印当前结果。

如需更多帮助,请参阅:

:h g:ag_qhandler
:h :cope

答案 3 :(得分:1)

更改quickfix窗口的几何图形不会帮助您解决问题:窗口不可用,不是因为它的大小,而是因为您的搜索结果受到最小化文件中多余匹配的污染。

最小化的JavaScript或CSS是前端开发相当于二进制文件,搜索工具,索引工具,文件导航工具甚至版本控制工具有时会忽略这种文件,因为它们通常不相关

将这些行添加到~/.agignore将仅在实际源文件中进行Ag搜索:

*.min*
*-min*
*_min*
*.min.*
bundle
min
vendor
tags
cscope.*

根据自己的喜好调整该列表。