1

使用 gVim。请帮助我将外部!命令的输出重定向到我的 Windows 笔记本电脑上的 Vim 寄存器。这是一个具体的例子:

在我的 Linux 桌面上,!python %将执行python file_in_active_buffer并在 Vim 窗格中显示输出。我可以在 Vim 寄存器中捕获此输出,redir@a然后使用 (normal mode) 将其“放入” "ap

在我的 Windows 笔记本电脑上,!python %将执行python file_in_active_buffer并在 vimrun.exe 窗口中显示输出。如何将此输出重定向(ect)到 Vim 缓冲区?

这就是我在 Windows 笔记本电脑上尝试 redir 时发生的情况:

# filename test. py
print("this prints on vimrun.exe")

>>> :redir@a
>>> !python %
>>> "ap
"test.py" 
"test.py" 2L, 56C written
"test.py" 2L, 56C written

:!python test.py


-- INSERT ---- INSERT ---- INSERT ---- INSERT --
4

1 回答 1

1

:redir捕获 vim 的消息,而不是外部命令的输出。如果要捕获它,请使用system().

let output = system(printf('python %s', shellescape(expand('%'))))

如果要读取当前缓冲区中的输出,请使用r!

:r! python %
于 2013-07-01T05:45:55.897 回答