如何将语法高亮规则从 vim 导出为 vimrc 格式

如何将语法高亮规则从 vim 导出为 vimrc 格式

当我分析日志文件时,vim我经常创建临时的语法高亮规则以便更好地定位。例如

:syntax match myerror match /NullPointerException/
:highlight myerror ctermbg=red

到目前为止一切顺利。但有时我在长时间的编辑过程中创建了相当复杂的规则,并且我想保存所有创建的临时规则,以便可以重复使用它们。我可以打印它们:

:syntax
myerror        xxx match /NullPointerException/
:highlight
myerror        xxx ctermbg=4

但此输出不仅包含临时规则,而且.vimrc由于格式不同,无法简单地复制到或复制到新的语法文件。:makevimrc根本不保存语法高亮规则。

知道如何导出临时着色规则吗?

答案1

据我所知,没有原生的 Vim 机制可以做到这一点。我认为,如果您要开发语法高亮规则集,那么您从一开始就会在 Vim 脚本中完成它。

我编写了一个简单的 Vim 脚本,它将把 :-命令历史记录中的所有语法和突出显示命令附加到一个命名文件中:

function! GetSyntaxHistory()
    let l:lines=[]
    for l:i in range(1,histnr(':'))
        let l:line = histget(':', l:i)
        if l:line =~ '^\s*\(syn\|syntax\|hi\|highlight\)\s\+'
            let l:lines += [l:line]
        endif
    endfor
    return l:lines
endfunction

function! WriteSyntax(file)
    let l:lines = GetSyntaxHistory()
    call writefile(l:lines, a:file, 'a')
endfunction

command! -nargs=1 -complete=file ExportSyn call WriteSyntax(<f-args>)

相关内容