[英]neovim only highlighting sytax in files with certain extension (regardless of filetype)
[英]in vimrc apply certain highlighting rules only for certain filetype
在我的vimrc中,我有一个脚本,当在* *双星*之间绑定时,它会以粗体转换文本(实际上就像在此编辑器中一样),但是我不希望它应用于我的js或c或任何编程文件当然,所以我尝试使其仅在.txt文件中运行:
if (&filetype=='text')
set concealcursor=n
set conceallevel=3
hi AsteriskBold ctermfg=Green cterm=bold
autocmd BufEnter * syn match Asterisks contained "**" conceal
autocmd BufEnter * syn match AsteriskBold "\*\*.*\*\*" contains=Asterisks
endif
但是显然“ if”的条件不起作用,因为该规则不再适用于我的文件,文本或其他
编辑=>解决方案
阅读答案后,我在vimrc中选择了此解决方案(即使这不是ingo解释的vim最佳工作方式)
au BufEnter *.txt setf text "(set a filetype unless it already exist)
au filetype text set cocu=n cole=3
au filetype text hi AsteriskBold ctermfg=Green cterm=bold
au filetype text syn match Asterisks contained "**" conceal
au filetype text syn match AsteriskBold "\*\*.*\*\*" contains=Asterisks
特定于文件类型的设置进入~/.vim/after/ftplugin/text.vim
。 (这要求您使用:filetype plugin on
;使用after目录允许您覆盖$VIMRUNTIME/ftplugin/text.vim
完成的任何默认文件类型设置。)或者,您可以直接定义:autocmd FileType text ...
在~/.vimrc
,但是一旦您进行了许多自定义,这往往变得很笨拙。
对于:syntax
命令,有一个对应的目录~/.vim/after/syntax/text.vim
。 (Vim目前并不用专用船舶text
语法,你可以放下after
部分,让你的语法主要原因之一。)
按照语法脚本约定,您的语法组应以文件类型为前缀; 例如textAsterisks
。 :hi
组也必须重命名; 但是,语法脚本通常使用:hi def link
将语法组:hi def link
到(更通用的)突出显示组: hi def link textAsteriskBold AsteriskBold
。 有关更多信息,请usr_44.txt
。
这些是全局的,您可以将:hi
命令直接放入~/.vimrc
并仅定义一次。
隐藏设置是窗口本地的 ,但是文件类型和语法适用于buffers 。 通过使用:set
(而不是:setlocal
),这些设置将被从显示文本文件的窗口打开的任何新窗口继承。 根据您的工作流程(以及您编辑的其他文件类型是否全部使用隐藏),您可能永远不会注意到这一点,并且没有很好的解决方法(只有大量的:autocmd
可以尝试适应这些问题)。 请注意这一点。
您正在寻找一个augroup
。
请参阅:help augroup
和:help filetype
。
例如:
augroup asteriskbold
au!
au BufNewFile,BufRead *.txt,*.md,*.mkd,*.markdown,*.mdwn set concealcursor=n conceallevel=3
au BufNewFile,BufRead *.txt,*.md,*.mkd,*.markdown,*.mdwn hi AsteriskBold ctermfg=Green cterm=bold
au BufNewFile,BufRead *.txt,*.md,*.mkd,*.markdown,*.mdwn syn match Asterisks contained "**" conceal
au BufNewFile,BufRead *.txt,*.md,*.mkd,*.markdown,*.mdwn syn match AsteriskBold "\*\*.*\*\*" contains=Asterisks
augroup end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.