我刚开始围绕vim + python脚本(没有使用本地vim脚本的经验)打包头。在Vim-embedded python脚本中打开一个新窗口
如何打开一个新窗口来包含来自后台进程的stdout?
目前,阅读一些经过:帮助蟒蛇,我看到的唯一的选择是一样的东西:
cmd = ":bel new"
vim.command(cmd)
我刚开始围绕vim + python脚本(没有使用本地vim脚本的经验)打包头。在Vim-embedded python脚本中打开一个新窗口
如何打开一个新窗口来包含来自后台进程的stdout?
目前,阅读一些经过:帮助蟒蛇,我看到的唯一的选择是一样的东西:
cmd = ":bel new"
vim.command(cmd)
由于vim.command
可以执行大部分(如果不是全部?)ex命令,你可以简单地从内调用:new +read!ls
它。
:new
拆分当前窗口并将新的(空的,无名称)缓冲区放入上部窗口。它需要一个参数,我们用这个参数来执行read!cmd
,这个参数读取缓冲区中爆炸后的cmd的stdout。要知道,你需要逃避你的命令空间与\
总而言之,你得到vim.command("new +read!cmd")
:python vim.command("new +read!ls")
在当前目录的内容读入一个新的缓冲区中的cichew,水平分割窗口。
如果你要处理的特殊字符转义,可以考虑使用python的re.escape():
:py import re;vim.command("new +read!"+re.escape("ls Dire*"))
这应该足以满足大多数情况下。如果有疑问,请检查其文档并将其与您的shell进行比较。
不处理转义,但确实回答了大部分问题。这个问题看起来不太可能得到更多的关注,所以我奖励了奖金。 – 2010-11-05 14:08:35
确定你的意思是窗口?一个窗口只是一个到缓冲区的视口。例如,你是否想将当前窗口分成两部分,并将某些命令的stdout加载到此窗口中的新缓冲区中? – Sarah 2010-11-03 10:43:44
@Sarah:我也注意到了,但不知道如何更好地表达它。你说的后者是有道理的。 – 2010-11-03 11:01:18
在这种情况下,不需要使用脚本。所有你需要做的是:新的+读\!升...记得要逃避所有的空间。 :新的窗口分裂,创建一个空的缓冲区并运行读取。用有用的东西替换ls。 – Sarah 2010-11-03 11:10:49