我想修改我的vim配置文件,使其只突出显示我声明的变量,而不是关键字。这篇文章展示并解释了我的意思:备选语法高亮
我是vim的新手(从未更改默认的配置文件)。能否有人指点我正确的方向?
我想修改我的vim配置文件,使其只突出显示我声明的变量,而不是关键字。这篇文章展示并解释了我的意思:备选语法高亮
我是vim的新手(从未更改默认的配置文件)。能否有人指点我正确的方向?
let vars = ['init', 'editable', 'init_ui']
let colors = ['ff0000', '00ff00', '0000ff']
for var in vars
execute 'syn keyword var_' . var var
execute 'hi default var_' . var 'guifg=#' . remove(colors, 0)
endfor
并且它按预期工作。这为列表中的每个变量创建了语法项:var_init
、var_editable
和var_init_ui
。然后,它为每个语法项分配了一个高亮颜色。
为了超越概念证明,您必须获得变量名称列表。您可以通过解析标签文件(例如由ctags生成)或在vim中编写解析器(这将非常便携)来实现此目的。您可以对列表进行排序并删除重复项,但是我认为如果您跳过此步骤,使用:hi default
将为您节省时间。想出比我的示例更好的生成颜色的方法。
您可以在输入缓冲区时使用autocommand完成所有这些操作,或者当用户显式调用函数时完成。然后,您可以开始考虑自动更新新定义的变量。
<Leader>m
,通常转换为\后跟M)。我自己使用它来理解代码的复杂部分或在疑难解析日志文件时使用。~/.vimrc
中,您可以拥有多达77种不同的颜色可用:let g:mwDefaultHighlightingPalette = 'maximum'
有这样一个插件:https://github.com/jaxbot/semantic-highlight.vim
它将每个变量都着以不同的颜色,这个想法是由Evan Brooks的博客文章普及起来的。
我不喜欢在使用脚本语言时将文本字符串转换为命令的想法,因为这种语言理论上应该能够保留某些语义和结构来描述不同的构造。因此,我实现了一种可以使用变量的高亮处理过程,如下所示:
function s:hl(group, attrs)
let l:command = "highlight" . " " . a:group
for name in keys(a:attrs)
let l:command .= " " . name . "=" . a:attrs[name]
endfor
execute l:command
endfunction
有了上述内容,我可以传递一个高亮属性字典给一个组进行设置,字典的值显然可以是变量引用。
然后,我们可以通过调用上述函数来实现Vim有效地运行相同的highlight <group> <name>=<value> ...
命令,例如:
call s:hl("Keyword", { "guifg": "yellow" })
call s:hl("Normal", { "guifg": "white", "guibg": "black" })
。let s:chefchaouen_blue = "#468fea"
call s:hl("Comment", { "guifg": s:chefchaouen_blue })
execute
命令一起使用 - 但我发现Vim能够突出显示其自己脚本文本的元素 - 例如在颜色方案文件中上面的call s:hl(...)
语句 - 是值得的。此外,更多的内容可以更早地检查语法错误(而不是连接到一个字符串中),尽管对大多数人来说区别可能微不足道。