我可以在Vim的同一个文件中同时使用Python和SQL语法高亮显示吗?

Mar*_*ani 9 vim syntax-highlighting

我在Python程序中使用多行字符串进行SQL查询.

有没有办法告诉Vim在其中应用不同的突出显示规则,可能是使用--SQL标记?

Mar*_*ani 11

我从这里复制粘贴:

function! TextEnableCodeSnip(filetype,start,end,textSnipHl) abort
  let ft=toupper(a:filetype)
  let group='textGroup'.ft
  if exists('b:current_syntax')
    let s:current_syntax=b:current_syntax
    " Remove current syntax definition, as some syntax files (e.g. cpp.vim)
    " do nothing if b:current_syntax is defined.
    unlet b:current_syntax
  endif
  execute 'syntax include @'.group.' syntax/'.a:filetype.'.vim'
  try
    execute 'syntax include @'.group.' after/syntax/'.a:filetype.'.vim'
  catch
  endtry
  if exists('s:current_syntax')
    let b:current_syntax=s:current_syntax
  else
    unlet b:current_syntax
  endif
  execute 'syntax region textSnip'.ft.'
  \ matchgroup='.a:textSnipHl.'
  \ start="'.a:start.'" end="'.a:end.'"
  \ contains=@'.group
endfunction

au FileType python call TextEnableCodeSnip('sqlpostgres', "'''", "'''", 'SpecialComment')
Run Code Online (Sandbox Code Playgroud)

现在,每个多行三重单引号字符串都会获得sql语法.三重双引号字符串仍然很明显.我已经改变了sqlpostgres.vim来给出绿色的SQL细微差别以区分这两种语言,并且它在256色墨水池方案中看起来很甜美.

还相关:Vim中嵌入式语法highligting