cygwin:vim 自定义语法突出显示不起作用

cygwin: vim custom syntax highlighting not working

我有一组标准格式的日志文件。我为这些日志创建了一个自定义语法文件,它在 linux 系统上运行良好。

但是,我无法让它在 cygwin 中运行。我的主目录中有以下 .vimrc 文件:

au BufRead,BufNewFile rc.log* set filetype=rclog
au! Syntax rclog source ~/.vim/log.vim

syntax on

在 ~/.vim/ 我有 log.vim:

:syn region logTime start=+^\d\{4}-\d\{2}-\d\{2} \d\{2}:\d\{2}:\d\{2}+ end=+ +me=e-1
:syn keyword logError ERROR skipwhite nextgroup=logThreadName
:syn keyword logWarn WARN skipwhite nextgroup=logThreadName
:syn keyword logInfo INFO skipwhite nextgroup=logThreadName
:syn keyword logDebug DEBUG skipwhite nextgroup=logThreadName
:syn keyword logAlways ALWAYS skipwhite nextgroup=logThreadName
:syn keyword logConfig CONFIG skipwhite nextgroup=logThreadName
:syn match logThreadName "\[\S\+\]" contained nextgroup=logClassName
:syn match logClassName " \S\+:" contained nextgroup=logLineNumber
:syn match logLineNumber "\d\+" contained

hi def logError ctermfg=white ctermbg=red
hi def logWarn ctermfg=black ctermbg=yellow
hi def logInfo ctermfg=green
hi def logDebug ctermfg=blue
hi def logAlways ctermfg=yellow
hi def logConfig ctermfg=cyan
hi def logTime ctermfg=white ctermbg=blue
hi def logThreadName ctermfg=magenta
hi def logClassName ctermfg=cyan
hi def logLineNumber ctermfg=yellow
hi link cConstant NONE

我试过执行 :source ~/.vimrc 但无济于事。我的日志文件总是没有语法高亮显示。具有内置突出显示的文件类型(例如 .py 或 .c)的文件工作正常。

不要使用:au! Syntax;相反,将 ~/.vim/log.vim 移动到 ~/.vim/syntax/rclog.vim;然后它会根据您的文件类型检测自动读取:

au BufRead,BufNewFile rc.log* set filetype=rclog

您可以使用 :scriptnames 或通过 :20verbose setlocal syntax=rclog 进行验证和故障排除。

由此 link,基本 Cygwin 安装附带的默认包是 vi 而不是 vim。当您在 base-installation Cygwin 中键入命令 vim 时,会调用一个看起来像 vim 但实际上是 vi 的文本编辑器,而 vi 不会有语法着色。要解决语法着色问题,只需从 Cygwin setup-x86.exe 安装 vim 包。此包属于 Editor 类别。