有没有办法限制:Ag
输出,所以它总是需要一行而不会炸毁quickfix窗口?
此刻它看起来像这样,很可怕。我看不到文件名,一切都超级慢,只是很糟糕:
更新为了记录,我稍微滚动了Quickfix窗口以更好地说明这一点。虽然可以通过:cn
:cp
使用,但我希望能够使用j
k
快速浏览结果。
答案 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.*
根据自己的喜好调整该列表。