0

我正在尝试使 vim 成为 vim 语法文件以突出显示 FlexLM 系统的文件。

它包含带有以空格分隔的关键字的行,我想根据它们所在的位置突出显示不同的颜色。

例如: FEATURE Infinisim infinism 2.4 31-may-2014 1 SUPERSEDE

以单词 FEATURE 开头的每一行将具有一种颜色的下一个单词,下一个是另一种颜色,依此类推,以空格分隔。

有没有办法做到这一点?

谢谢

4

1 回答 1

1

我有一个“noddy”vim 文件,因为我只想看到基础知识。将以下内容放入 ~/.vim/syntax/flexlm.vim

" For version 6.x: Quit when a syntax file was already loaded
if version < 600
  syntax clear
elseif exists("b:current_syntax")
  finish
endif

" Syntax is case INsensitive
syn case ignore


" Main statements
"===============================================
syn keyword     flexlmStatement       SERVER DAEMON USE_SERVER

syn keyword     flexlmStatement       FEATURE INCREMENT skipwhite nextgroup=flexlmToken
syn region      flexlmToken start="\S" end="\s" skipwhite nextgroup=flexlmDaemon
syn region      flexlmDaemon start="\S" end="\s" skipwhite nextgroup=flexlmVer
syn region      flexlmVer start="\S" end="\s" skipwhite nextgroup=flexlmDate
syn region      flexlmDate start="\S" end="\s" skipwhite nextgroup=flexlmCount
syn region      flexlmCount start="\S" end="\s" skipwhite nextgroup=flexlmStuff
syn region      flexlmStuff start="\S" end="$"

syn region flexlmComment  start=/#/ end=/$/

syn sync minlines=10

if version >= 508 || !exists("did_flexlm_syntax_inits")
  if version < 508
    let did_flexlm_syntax_inits = 1
    command -nargs=+ HiLink hi link <args>
  else
    command -nargs=+ HiLink hi def link <args>
  endif

  HiLink flexlmComment          Comment
  HiLink flexlmStatement        Keyword
  HiLink flexlmToken            Identifier
  HiLink flexlmDaemon           Tag
  HiLink flexlmVer              Label
  HiLink flexlmCount            Macro
  HiLink flexlmStuff            Type

  delcommand HiLink
endif

let b:current_syntax = "flexlm"

然后,您可以在 ~/.vimrc 中使用以下内容将其设置为默认语法高亮

au BufRead,BufNewFile *.dat set filetype=flexlm

显然,您可以根据文件扩展名使用该行,例如 .lic 等。您始终可以在 vim 中键入以下内容

:set syntax=flexlm

如果您想扩展语法突出显示 - 请回发结果,因为包含选项文件等会很好。

于 2015-02-06T16:37:22.750 回答