在Vim嵌入式Python脚本中打开新窗口
我刚开始学习如何使用vim和python脚本(之前对原生的vim脚本没有经验)。
我想知道怎么打开一个新窗口来显示后台进程的输出。
目前,我在查看了一些关于python的帮助文档后,看到的唯一选项是类似这样的:
cmd = ":bel new"
vim.command(cmd)
1 个回答
3
因为 vim.command
可以执行大部分(如果不是全部的话)ex 命令,所以你可以直接在里面调用 :new +read!ls
。
:new
这个命令会把当前窗口分成两部分,并在上面的窗口里放一个新的(空的,没有名字的)缓冲区。它接受一个参数 +[cmd]
,我们用它来执行 read!cmd
,这个命令会把 cmd 执行后的输出内容读入到缓冲区里。需要注意的是,你的命令中如果有空格,要用 \
来转义。
总的来说,你可以用 vim.command("new +read!cmd")
来实现。
:python vim.command("new +read!ls")
这样就可以把当前目录的内容读入到一个新的缓冲区里,并且窗口会水平分割。
如果你想处理特殊字符的转义,可以考虑使用 Python 的 re.escape():
:py import re;vim.command("new +read!"+re.escape("ls Dire*"))
这对于大多数情况来说应该是足够的。如果不确定,可以查看它的文档,并和你的命令行进行对比。