您可以使用连续分割等进一步集成并在 vim 中呈现顺序 moreutils vipe 命令输出吗?

您可以使用连续分割等进一步集成并在 vim 中呈现顺序 moreutils vipe 命令输出吗?

我已经用过moreutils套件几次,我发现它让你进一步思考基本实用程序,并且很有洞察力(而且很有趣)。例如,vipevim允许在管道中间运行类似编辑器的操作并在继续执行之前编辑数据1。例如:

function refcheck_vipe() { echo -n "$@ documentation last udate: "; links -dump "http://www.gnu.org/software/$@/manual"| vipe | grep 'last updated' | vipe | cut -d ' ' -f 7,8,9 | vipe ; }
# refcheck_vipe grep

每次 time(3)vipe被任意放置在管道中并因此被调用时,都会在 vim 中呈现数据,一旦退出,执行就会继续。所以在这里你会得到网页, 匹配的线最后是孤立的细绳。也许缺少的是我在某些情况下保留使用过的缓冲区来比较内容......


我不知道你可以多路复用vim(!)中缓冲区的布局。现在我想知道我是否要在 vim 上启动我的命令命令行,是否有一种方法可以将每个 vipe 执行“步骤”重定向到不同的缓冲区。并允许tmp文件在我退出后以某种方式继续显示内容。事实上,您必须执行:q才能继续执行到下一个“步骤”,所以我不知道如何使我刚才所说的与此相一致。另一方面,我注意到我可以:split new这样做:r! ls,并且其输出也将包含在内。


为了总结和添加上下文,我正在考虑这样的事情:

command1 | vipe1 | command2 | vipe2 | command n | vipe n

would be wrapped by the answer to produce this in vim(the vipe part):
-------------------------
|       |       |       |           A buffer would open to the right side
| vipe  | vipe  | vipe  |           for every vipe command in the pipeline.
| step1 | step..| step n|           
|       |       |       |
|       |       |       |
-------------------------
|           |           |           Bottom left you see a "file manager".
|find . | \ | whatever  |           Its contents could be refreshed, from
|vidir -    |           |           time to time.
-------------------------
:cli

我知道vim不是一个窗口管理器或者复用器。这里的目标是展示 shell 命令中的数据处理,同时提高我的 vim 技能2。重点是vim,但考虑到vipe读取 EDITOR 变量,我也会感兴趣地阅读利用emacs.

那么,我是否可以实现一些别名/函数/设置来完成我所描述的内容(通过将缓冲区直观地添加到编辑器的右侧,对于vipe管道中的每个命令,允许以某种集成方式比较我获得的输出)?


1. 如果我将一些命令与正则表达式串在一起,但它不起作用(通常是这种情况),我将回溯,删除命令并简化管道中的表达式,直到我可以隔离问题。因此vipe在某些情况下可以提供帮助。

2. 除了应对必须使用系统的情况外,开箱或者i3不存在!

[..] 未引用但出现在代码示例中,vidir

答案1

vipe 使用临时文件(对我而言/tmp)在 Vim 之间传递和接收管道内容。由于管道的原因,以前的 vipe 调用无法再重新编辑;它们已经被 vipe 重新读取并沿着管道发送。因此,保存前一个 vipe 临时文件就足够了(因为原来的文件已被 vipe 删除),并在下一次从 vipe 调用 Vim 时重新打开该文件。

以下自动命令针对单个先前的管道步骤执行此操作。由于我无法识别 vipe 临时文件中的任何模式,因此这广泛处理在/tmp;中打开的所有文件。如果将 vipe 重新配置为使用单独的目录或唯一的命名方案会更好(较新的 vipe 版本支持--suffix SUFFIX,因此您可以变成**.SUFFIX

草图

autocmd BufWritePost /tmp/* silent! bdelete ~/.previous-vipe | keepalt write! ~/.previous-vipe
autocmd BufRead /tmp/* pedit ~/.previous-vipe

相关内容