如何更改 Vim 拼写检查中的突出显示样式?
Posted
技术标签:
【中文标题】如何更改 Vim 拼写检查中的突出显示样式?【英文标题】:How to change the highlight style in Vim spellcheck? 【发布时间】:2011-08-25 22:05:05 【问题描述】:现在,当我在 Vim 中执行 :set spell
时,拼写错误会突出显示,就好像它们是选定的文本一样。我想要的是一个 MS-Word,比如拼写错误的下划线。我试图查找:help spell
,但找不到线索。任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:拼写错误使用SpellBad
突出显示组突出显示。要根据需要突出显示它,您应该输入类似
hi clear SpellBad
hi SpellBad cterm=underline
" Set style for gVim
hi SpellBad gui=undercurl
在你的 vimrc 中改变配色方案的最后一行之后(它是 set background=(dark|light)
或 colorscheme schemename
)。
有关其他 Spell* 高亮组的名称和说明,另请参阅 :h hl-SpellBad
。
【讨论】:
打败我!还值得一提的是undercurl
(类似于 ms 字的“波浪形”下划线)是 gvim 中的默认值,但显然,没有办法在终端中制作“波浪形”下划线。
改变颜色也很有用,例如:hi SpellBad cterm=underline ctermfg=red
。或者在和粗体下划线::hi SpellBad cterm=underline,bold
.
@yoda 替换在哪里?制作支持波浪线下划线的 X 终端并非不可能,但我不知道我使用的任何终端中的该功能。我猜这个终端要么有波浪线而不是正常的下划线,要么在没有手动修补的情况下不受 vim 支持。
@ZyX:我不知道,只是想知道。我的所有人也将其显示为----
,但更改为 squiggly 应该只涉及用~
替换-
似乎是合乎逻辑的,但我可能错了。
@yoda:我不知道----
显示在哪里?终端不使用下划线符号(尽管您总是可以编写自己的符号),它们只是将 vim 发送的特定转义序列解释为“开始下划线区域”,另一个序列解释为“结束下划线区域”(甚至是“清除所有样式»)。实际显示的内容由终端代码确定,但我猜它们中的大多数只是将样式信息传递给字体渲染库。这里没有什么可以阻止终端支持波浪线下划线,但字体库不使用符号来下划线。【参考方案2】:
每次设置颜色方案时都需要输入上述内容。如果你想避免它,你应该使用autocmd
。
见https://vi.stackexchange.com/questions/18295/how-to-set-a-colorscheme-that-still-shows-spelling-errors
【讨论】:
【参考方案3】:如果您加载了颜色方案,则要更改突出显示颜色的一种快速而肮脏的方法是修改您的颜色方案。
正在运行,:verbose highlight SpellBad
向我展示了我的主题的配置文件在哪里。更像是,它显示了 SpellBad 指令的设置位置。你的旅费可能会改变。请看下面的输出:
:verbose highlight SpellBad
SpellBad xxx term=reverse ctermbg=9 gui=undercurl guisp=Red
Last set from /usr/share/vim/vim81/colors/desert.vim line 17
我导航到desert.vim
并添加了hi SpellBad term=reverse ctermbg=226 gui=undercurl guisp=Yellow1
并保存了文件。 (您需要 sudo 来修改文件)。一旦我重新打开 vim 并运行,:verbose highlight SpellBad
现在的输出是:
:verbose highlight SpellBad
SpellBad xxx term=reverse ctermbg=226 gui=undercurl guisp=Yellow1
Last set from /usr/share/vim/vim81/colors/desert.vim line 35
我的高亮颜色已更改!请注意,如果您更改配色方案,您很可能必须更改所选配色方案文件中的突出显示颜色。
【讨论】:
以上是关于如何更改 Vim 拼写检查中的突出显示样式?的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 IPython(Jupyter) 中代码的突出显示颜色样式?
Jekyll - 如何更改突出显示字体系列的 pygments 语法?