我想在管道中间使用Vim。这个existing post看起来像我想做的,只是我希望不用Python的帮助--只需要bash。[如果有帮助,环境就是Android上Terminal IDE应用程序中的bash shell。]
拜托,我知道如何通过Vim内部的命令来传输缓冲区。这很好,但这不是我想要的。我想退出Vim并将活动缓冲区传递给stdout。
FWIW,我还知道如何将另一个命令作为输入传递到Vim中。
我想在管道中间使用Vim。这个existing post看起来像我想做的,只是我希望不用Python的帮助--只需要bash。[如果有帮助,环境就是Android上Terminal IDE应用程序中的bash shell。]
拜托,我知道如何通过Vim内部的命令来传输缓冲区。这很好,但这不是我想要的。我想退出Vim并将活动缓冲区传递给stdout。
FWIW,我还知道如何将另一个命令作为输入传递到Vim中。
5条答案
按热度按时间bd1hkmkf1#
从我有限的经验来看,让Vim写
stdout
是不可能的。您可以从这个package尝试
vipe
指令。jpfvwuh42#
将导致Vim打开一个未命名的文件,其中包含文件列表
fred*
也许我误解了你的问题。
替代解释:
请参见page,它描述了一种技术,
在不保存当前缓冲区的情况下,您希望将其内容发送到解释器(python、scheme等),并且希望该解释器在新生成的xterm中运行。新的xterm窗口很有用,因为在Vim中运行shell不允许同时检查程序输出和代码缓冲区,而且Vim的shell在几个方面都很弱。
8zzbczxx3#
看看
vipe
,它是moreutils
的一部分,它允许你使用任何编辑器作为管道的一部分。要在
vim
中使用它,只需确保将其设置为bashrc
或cshrc
或您使用的任何shell中的默认编辑器。UPDATE:如果您想要一个仅
bash
的解决方案,可以使用如下脚本如需更便于携带的版本,请更换
与
tpgth1q74#
要将缓冲区打印到shell标准输出,
vim
需要在Ex模式下启动,否则它将以"正常"方式打开自己的窗口,并在退出时清除任何输出缓冲区。下面是最简单的工作示例:
其等效于:
需要指定标准输入的特殊文件描述符(
/dev/stdin
),以防止出现额外的恼人消息。下面是一些解析字符串的示例:
相关:
5hcedyr05#
不能简单地将Vim放在管道中,因为那样Vim就不能显示它的UI。
解决这个问题的一个方法是在管道中使用
gvim -f -
,因为它在一个单独的窗口中打开。或者(也是在仅支持控制台的非图形环境中的唯一方法),您可以编写自己的脚本/函数
vimAndMore
,该函数将管道中应该跟随在vim后面的命令作为参数,如下所示:并将管道更改为:
如果后面有多个管道步骤,则必须使用显式shell调用: