有没有办法限制:Ag输出,所以它总是需要一行并且不会炸毁快速修复窗口?
目前它看起来像这样,这很糟糕。我看不到文件名,一切都超级慢而且很糟糕:

更新作为记录,我稍微滚动了 Quickfix 窗口以更好地说明这一点。虽然它可以通过 使用:cn :cp,但我希望能够通过 快速浏览结果j k。
查看手册页,似乎没有任何方法可以限制 Ag 本身内置的输出。
还有另一种限制行长的方法吗?实际上,您在 Linux 中确实有内置的“cut”命令,例如在 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 本身添加的额外字符。
ag现在支持--width开关。rg有类似的--max-columns开关。
更改快速修复窗口的几何形状不会帮助您解决问题:窗口无法使用不是因为它的大小,而是因为您的搜索结果被最小化文件中的多余匹配所污染。
最小化的 JavaScript 或 CSS 相当于前端开发的二进制文件,搜索工具、索引工具、文件导航工具甚至版本控制工具有时应该忽略这种文件,因为它们通常无关紧要。
将这些行添加到您的~/.agignore将使 Ag 仅在实际源文件中搜索:
*.min*
*-min*
*_min*
*.min.*
bundle
min
vendor
tags
cscope.*
根据您的喜好调整该列表。
假设你正在使用这个插件。您应该将其添加到您~/.vimrc指定的:h g:ag_qhandler
let g:ag_qhandler = 'copen 1'
但是,您可能只能这样做let :g:ag_qhandler = 'cc'。这将在底部打印结果。当您通过快速修复列表移动时,:cnext它:cprev也会打印当前结果。
如需更多帮助,请参阅:
:h g:ag_qhandler
:h :cope