2

有没有办法限制:Ag输出,所以它总是需要一行并且不会炸毁快速修复窗口?

目前它看起来像这样,这很糟糕。我看不到文件名,一切都超级慢而且很糟糕:

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

4

4 回答 4

4

查看手册页,似乎没有任何方法可以限制 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 本身添加的额外字符。

于 2014-10-30T10:13:12.903 回答
2

ag现在支持--width开关。rg有类似的--max-columns开关。

于 2017-05-03T02:28:46.857 回答
1

更改快速修复窗口的几何形状不会帮助您解决问题:窗口无法使用不是因为它的大小,而是因为您的搜索结果被最小化文件中的多余匹配所污染。

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

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

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

根据您的喜好调整该列表。

于 2014-10-30T08:41:53.417 回答
1

假设你正在使用这个插件。您应该将其添加到您~/.vimrc指定的:h g:ag_qhandler

let g:ag_qhandler = 'copen 1'

但是,您可能只能这样做let :g:ag_qhandler = 'cc'。这将在底部打印结果。当您通过快速修复列表移动时,:cnext:cprev也会打印当前结果。

如需更多帮助,请参阅:

:h g:ag_qhandler
:h :cope
于 2014-10-30T05:59:49.533 回答