【问题标题】:auto highlight dictionary words when opening text file in vim在vim中打开文本文件时自动突出显示字典单词
【发布时间】:2014-09-26 16:09:58
【问题描述】:

打开文本文件时(在启动时),如何让 vim 突出显示字典中的所有单词?

我的首选方法是在我的 vimrc 中添加一些 2 或 3 行 settings/fun/autocmd,但如果不可能,那么提供这个字典单词突出显示功能的插件是什么? 提前致谢。

【问题讨论】:

  • 拼写检查会反过来并突出显示拼写错误的单词 (set spell)
  • 也许您可以查看这个 vimscript,它允许您一次突出显示多个搜索(可能基于字典文件填充)。 vim.wikia.com/wiki/Highlight_multiple_words

标签: vim vim-syntax-highlighting


【解决方案1】:

我尝试了各种方法,例如创建自定义词典,然后 重新定义 NormalSpellBad 单词的突出显示。我也试过 将所需单词标记为“稀有”(因为 Vim 使用不同的 突出显示稀有词)但这些想法没有奏效。这里是最好的 我可以想出:

定义突出显示

首先,定义您希望如何突出显示单词。在这个例子中,我 想要突出显示从一到十的所有数字,所以我打电话给我的小组, “数字”并告诉 Vim 我希望这些词以红色显示 终端或 GUI 版本。

highlight Numbers ctermfg=red guifg=red

选项 1:语法

如果单词很多,使用syntax命令定义关键字 要突出显示:

syntax on
syntax keyword Numbers one two three four five six seven eight nine ten One Two Three Four Five Six Seven Eight Nine Ten 

选项 2:匹配

请注意,使用语法选项,您需要包括不同的排列 大写和小写。如果您不想这样做,则可以改用 match 关键字,它作用于正则表达式模式而不是 单词列表。使用\c 选项忽略大小写。

match Numbers /\c\<one\>\|\<two\>\|\<three\>\|\<four\>\|\<five\>\|\<six\>\|\<seven\>\|\<eight\>\|\<nine\>\|\<ten\>/

使用match 的缺点是 Vim 必须不断评估匹配 文本变化的模式。如果 正则表达式模式太长(很多单词)。这会导致 Vim 变得太慢了。

【讨论】:

  • 感谢安东尼的努力。我会选择语法选项。在某些情况下,我的 dict 单词有数百个。所以我想我必须创建一个语法 vim 文件,就好像它是一种语言 (.vim/syntax/mine.vim)。
  • 很高兴地意识到一个语法文件可以在编辑相关(文件类型)缓冲区时吸收超过 4000 个关键字而不会减慢速度。我的语法文件现在有 150kB 大。
  • 哇!这很让人佩服。有趣的是 Vim 可以处理这么多。感谢您的反馈。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-03
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 2012-08-31
  • 2015-01-12
相关资源
最近更新 更多