- 上次了解了缩进的各种方式 正常模式下用 << 缩进 插入模式下用 tab 缩进 显示缩进情况 :set listchars=eol:$,tab:>-,space:_
- 有关于缩进对应空格数的参数 expandtab shiftwidth tabstop softtabstop autoindent
- 简写为 :set noet sw=4 ts=4 sts=4 ai
- 不同的文件类型可以对应不同的缩进长度吗??
- 首先需要检测文件类型
- :filetype 可以设置当前文件类型检测信息 :filetype on 检测文件扩展名 :filetype off 取消检测文件扩展名
- 如果是.c 并且:filetype on 就可以检测文件类型为 .c 那我怎么知道 filetype 是什么呢?
- :set filetype? 结果是 filetype=c
- 但是如何单独设置 .c 文件缩进为 8 呢?
- 我们书写一个 demo.c
- 可以发现这个文件 tab 是对应着 4 个空格的
- 如果想单独设置 .c 文件类型的缩进的话 需要打开文件类型缩进的开关 :filetype indent on
- 系统的配置文件的位置在 /usr/share/vim/vim81/indent/ c 对应 c.vim java 对应 java.vim html 对应 html.vim 不同的文件类型可以设置不同的缩进 c 缩进为 8 java 缩进为 4 html 缩进为 2 找到了 /usr/share/vim/vim81/indent/c.vim 就可以设置c的缩进
- 在最后加上 :set et sw=8 ts=8 sts=8 ai
- 然后退出并重新打开 demo.c
- 再g g = G
- 就可以按照新设置的 /usr/share/vim/vim81/indent/c.vim来重新控制缩进了
- 我们打开 demo.c 时,系统会检测他的文件类型
- 但是如果我们非要 硬 要说他是一个 java 文件会如何呢?
- :set filetype=java
- 文件对于 include 之类的语法高亮消失了
- g g = G
- 让文件缩进的数量变回了 4 按照java文件缩进的要求来做
- 高亮可以根据文件类型而不同么?
#找出所有的java.vim文件
sudo find / -name "java.vim"
- 找出所有和 java 有关的文件
- 在 indent 下的 java.vim 负责缩进
- 在 syntax 下的 java.vim 负责语法高亮
- 语法高亮的设置在 /usr/share/vim/vim81/syntax/下面
- :syntax on 可以设置关键词高亮,这个是所有语法高亮的根开关
- 除此之外,也可以加载 java 文件类型的的插件 plugin 文件类型插件可以设置一键编译运行、跳转到函数定义之类的 前提是 :set filetype plugin on
- 文件类型插件的设置在 /usr/share/vim/vim81/ftplugin/下面 ftplugin = FileType Plugin
- 回忆文件类型缩进和语法 在 indent 下的 java.vim 负责缩进 在 syntax 下的 java.vim 负责语法高亮
- 在 ftplugin 下的 java.vim 负责针对 java文件类型 的插件
- 除了对于每个用户都好使的高亮、缩进和插件之外
- 用户还可以设置只对于自己好使的高亮、缩进和插件
- 以 java 语言的插件来举例
- 系统通用文件夹 /usr/share/vim/vim81/ftplugin/java.vim /usr/share/vim/vim81/ftplugin/java_xxx.vim /usr/share/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 而不是 plugin plugin 里面的插件全部都被加载 ftplugin 里面的插件根据文件类型加载
- 保存后
- 打开 java 文件时 状态栏告诉我这是 java 文件 第三行 set statusline=[oeasy-java]%F%m
- 打开 css 文件时 状态栏告诉我这是 css 文件 第三行 set statusline=[oeasy-css]%F%m
- 都设置好之后
- 分别打开java文件和css文件
强行指定
- 如果我偏说 css 文件是 java 文件会如何呢? 可以注意到状态栏的变化 由于不同文件类型 filetype 的 syntax 文件不同 用 css 的语法去标注 java 的高亮组 所以高亮显示的状态也不同
- 根据扩展名我们可以设置某些特定类型文件的配置
- 相关文件类型的设置放在相应的文件夹里
- 文件类型缩进文件夹 /usr/share/vim/vim81/indent/
- 文件类型语法高亮文件夹 /usr/share/vim/vim81/syntax/
- 文件类型插件文件夹 系统通用文件夹 /usr/share/vim/vim81/ftplugin/java.vim /usr/share/vim/vim81/ftplugin/java_xxx.vim /usr/share/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 包括文件的缩进、配色、语法高亮、行号、状态栏等
- :filetype indent on 文件类型缩进生效
- :filetype syntax on 文件类型语法高亮生效
- :filetype plugin on 文件类型插件生效
- 还有什么好玩的吗?
- 下次再说
,