gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:33:03 25 4
gpt4 key购买 nike

有没有一种方法可以限制 :Ag 的输出,使其始终占用一行并且不会炸毁 quickfix 窗口?

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

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

最佳答案

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

还有其他限制行长度的方法吗?实际上,您在 Linux 中确实有内置的“cut”命令,例如在外壳上使用它:

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 本身添加的额外字符。

关于Vim、Ag 和 Quickfix 窗口,限制输出宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26645547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com