有没有办法限制: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