使用gVim。请帮我将外部!
命令的输出重定向到我的Windows笔记本电脑上的Vim寄存器。这是一个具体的例子:
在我的Linux桌面上,!python %
将执行python file_in_active_buffer
并在Vim窗格中显示输出。我可以使用redir@a
在Vim寄存器中捕获此输出,然后将其“放入”(正常模式)"ap
。
在我的Windows笔记本电脑上,!python %
将执行python file_in_active_buffer
并在vimrun.exe窗口中显示输出。如何将此输出重新编号(等)到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 --
答案 0 :(得分:1)
:redir
捕获vim的消息,而不是外部命令的输出。
如果要捕获它,请使用system()
。
let output = system(printf('python %s', shellescape(expand('%'))))
如果要读取当前缓冲区中的输出,请使用r!
:r! python %