gpt4 book ai didi

python - 如何在 Vim 插件输出中为单词着色

转载 作者:行者123 更新时间:2023-12-01 09:01:44 24 4
gpt4 key购买 nike

我正在编写一个 Vim 插件。主要逻辑是用 Python (Python 3.6) 和所需的 Vim 脚本包装器代码编写的。

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

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

我该如何让“失败”一词以红色显示?

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

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

最佳答案

尝试失败

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

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

有效的方法(GVIM 除外)是调用外部命令,因为它的输出直接发送到终端。但这对您没有帮助(除非您愿意转而调用外部 Python 解释器)。

:!echo "The ^[[41maction^[[0m has failed."

影响输出颜色的方法是通过 Vim 的高亮组,即 :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"')

关于python - 如何在 Vim 插件输出中为单词着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52415540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com