我正在编写Vim插件。主要逻辑是使用所需的Vim脚本包装器代码以Python(Python 3.6)编写的。
该插件使用Python打印功能向用户输出文本。例如:
print( "The action " + action + " has failed." )
我该如何使“失败”一词显示为红色?
到目前为止,我尝试搜索的所有内容都在Vim中突出显示语法并在Vim中呈现ANSI颜色转义代码。无论您要查找哪个文件,两种颜色都会在Vim主缓冲区中显示。
我想从插件的Python输出中为单词着色。有什么想法吗?
答案 0 :(得分:1)
我的实验证实, ANSI转义代码在嵌入式Python解释器中不起作用。这并不奇怪,因为Vim捕获输出并使用其自己的例程进行输出。由于您无法将ANSI代码与:echo
一起使用,因此可以肯定,这对:py print
也无效。另外,在GVIM中,没有连接终端,并且嵌入式终端仿真器相当笨。
:py print("The ^[[01maction^[[0m has failed.")
起作用的方法(GVIM除外)是调用外部命令,因为其输出直接发送到终端。但是,这对您没有帮助(除非您愿意切换到调用外部Python解释器)。
:!echo "The ^[[41maction^[[0m has failed."
影响输出色彩的方法是通过Vim的 highlight组,即:echohl
命令。不幸的是,此不能与:py print
组合:
:py vim.command('echohl ErrorMsg'); print("foobar")
您必须切换到Vim的:echo[msg]
才能使选定的突出显示组应用于输出;现在,所有内容都经过相同的API。您可以连接并执行单个命令序列:
:py vim.command('echohl ErrorMsg | echo "foobar" | echohl None')
或分别提交多个vim.command()
:
:execute "py vim.command('echohl ErrorMsg')" | py vim.command('echo "foobar"')