在Vim嵌入式Python脚本中打开新窗口

2 投票
1 回答
1347 浏览
提问于 2025-04-16 03:10

我刚开始学习如何使用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*"))

这对于大多数情况来说应该是足够的。如果不确定,可以查看它的文档,并和你的命令行进行对比。

撰写回答