如何在Vim Plugin Outpu中为单词着色

2024-04-23 06:15:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我在写一个Vim插件。主逻辑是用Python(python3.6)编写的,带有必需的Vim脚本包装代码。在

该插件使用Python打印函数向用户输出文本。例如:

print( "The action " + action + " has failed." )

我该如何让“失败”这个词以红色出现?在

到目前为止,我尝试搜索的所有内容都是在Vim中突出显示语法和在Vim中呈现ANSI颜色转义代码。这两种颜色的文本都在主Vim缓冲区中,用于您正在查找的任何文件。在

我想从我的插件的Python输出中为一个单词上色。有什么想法吗?在


Tags: the代码用户文本脚本插件内容颜色
1条回答
网友
1楼 · 发布于 2024-04-23 06:15:47

失败的尝试

我的实验证实了ANSI转义码在嵌入式Python解释器中不起作用。这并不奇怪,因为Vim捕获输出并使用自己的例程进行输出。由于不能将ANSI代码与:echo一起使用,因此这与:py print一起使用是一致的。此外,在GVIM中,没有附加终端,而且嵌入式终端仿真器相当愚蠢。在

:py print("The ^[[01maction^[[0m has failed.")

工作(除了GVIM)是调用一个外部命令,因为它的输出直接发送到终端。不过,这对您没有帮助(除非您愿意切换到调用外部Python解释器)。在

^{pr2}$

影响输出着色的方法是通过Vim的highlight groups,即: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"')

相关问题 更多 >