文件类型
回忆上节课内容
上次了解了缩进的各种方式正常模式下用缩进插入模式下用tab缩进显示缩进情况:setlistchars=eol:$,tab:-,space:_有关于缩进对应空格数的参数expandtabshiftwidthtabstopsofttabstopautoindent简写为:setnoetsw=4ts=4sts=4ai不同的文件类型可以对应不同的缩进长度吗??
检测文件类型
首先需要检测文件类型:filetype可以设置当前文件类型检测信息:filetypeon检测文件扩展名:filetypeoff取消检测文件扩展名如果是.c并且:filetypeon就可以检测文件类型为.c那我怎么知道filetype是什么呢?:setfiletype?结果是filetype=c但是如何单独设置.c文件缩进为8呢?
文件类型缩进设置
我们书写一个demo.c可以发现这个文件tab是对应着4个空格的
如果想单独设置.c文件类型的缩进的话需要打开文件类型缩进的开关:filetypeindenton
找到缩进配置文件
系统的配置文件的位置在/usr/sha/vim/vim81/indent/c对应c.vimjava对应java.vimhtml对应html.vim不同的文件类型可以设置不同的缩进c缩进为8java缩进为4html缩进为2找到了/usr/sha/vim/vim81/indent/c.vim就可以设置c的缩进在最后加上:setetsw=8ts=8sts=8ai然后退出并重新打开demo.c再gg=G就可以按照新设置的/usr/sha/vim/vim81/indent/c.vim来重新控制缩进了
更改文件类型
我们打开demo.c时,系统会检测他的文件类型但是如果我们非要硬要说他是一个java文件会如何呢?:setfiletype=java文件对于include之类的语法高亮消失了gg=G让文件缩进的数量变回了4按照java文件缩进的要求来做高亮可以根据文件类型而不同么?
文件类型语法高亮
#找出所有的java.vim文件sudofind/-name"java.vim"
找出所有和java有关的文件
在indent下的java.vim负责缩进在syntax下的java.vim负责语法高亮语法高亮的设置在/usr/sha/vim/vim81/syntax/下面
:syntaxon可以设置关键词高亮,这个是所有语法高亮的根开关
文件类型的插件
除此之外,也可以加载java文件类型的的插件plugin文件类型插件可以设置一键编译运行、跳转到函数定义之类的前提是:setfiletypepluginon文件类型插件的设置在/usr/sha/vim/vim81/ftplugin/下面ftplugin=FileTypePlugin回忆文件类型缩进和语法在indent下的java.vim负责缩进在syntax下的java.vim负责语法高亮在ftplugin下的java.vim负责针对java文件类型的插件
命名规则
除了对于每个用户都好使的高亮、缩进和插件之外用户还可以设置只对于自己好使的高亮、缩进和插件
以java语言的插件来举例系统通用文件夹/usr/sha/vim/vim81/ftplugin/java.vim/usr/sha/vim/vim81/ftplugin/java_xxx.vim/usr/sha/vim/vim81/ftplugin/java/xxx.vim用户专用文件夹~/.vim/ftplugin/java.vim~/.vim/ftplugin/java_def.vim~/.vim/ftplugin/java/header.vim上面是命名的规则java对应的就是filetype
文件夹不存在?
如果没有文件夹的话就要新建:!mkdir-p~/.vim/ftplugin注意是ftplugin而不是pluginplugin里面的插件全部都被加载ftplugin里面的插件根据文件类型加载
尝试分文件类型进行控制
保存后打开java文件时状态栏告诉我这是java文件第三行setstatusline=[oeasy-java]%F%m打开css文件时状态栏告诉我这是css文件第三行setstatusline=[oeasy-css]%F%m都设置好之后分别打开java文件和css文件
强行指定
如果我偏说css文件是java文件会如何呢?可以注意到状态栏的变化由于不同文件类型filetype的syntax文件不同用css的语法去标注java的高亮组所以高亮显示的状态也不同
总结
根据扩展名我们可以设置某些特定类型文件的配置相关文件类型的设置放在相应的文件夹里文件类型缩进文件夹/usr/sha/vim/vim81/indent/文件类型语法高亮文件夹/usr/sha/vim/vim81/syntax/文件类型插件文件夹系统通用文件夹/usr/sha/vim/vim81/ftplugin/java.vim/usr/sha/vim/vim81/ftplugin/java_xxx.vim/usr/sha/vim/vim81/ftplugin/java/xxx.vim用户专用插件文件夹~/.vim/ftplugin/java.vim~/.vim/ftplugin/java_def.vim~/.vim/ftplugin/java/header.vim在文件夹~/.vim/ftplugin中的html.vim的设置只针对html包括文件的缩进、配色、语法高亮、行号、状态栏等:filetypeindenton文件类型缩进生效:filetypesyntaxon文件类型语法高亮生效:filetypepluginon文件类型插件生效
还有什么好玩的吗?下次再说