oeasy教您玩轉(zhuǎn)vim - 27 - 文件類型
文件類型
回憶上節(jié)課內(nèi)容??
上次了解了縮進(jìn)的各種方式
正常模式下用
<<
縮進(jìn)插入模式下用
tab
縮進(jìn)顯示縮進(jìn)情況
:set listchars=eol:$,tab:>-,space:_
有關(guān)于縮進(jìn)對應(yīng)空格數(shù)的參數(shù)
expandtab
shiftwidth
tabstop
softtabstop
autoindent
簡寫為
:set noet sw=4 ts=4 sts=4 ai
不同的文件類型可以對應(yīng)不同的縮進(jìn)長度嗎????
檢測文件類型

首先需要檢測文件類型
:filetype
可以設(shè)置當(dāng)前文件類型檢測信息:filetype on
檢測文件擴展名:filetype off
取消檢測文件擴展名如果是
.c
并且
:filetype on
就可以檢測文件類型為
.c
那我怎么知道
filetype
是什么呢?:set filetype?
結(jié)果是
filetype=c
但是如何單獨設(shè)置
.c
文件縮進(jìn)為8
呢?
文件類型縮進(jìn)設(shè)置
我們書寫一個
demo.c
可以發(fā)現(xiàn)這個文件 tab 是對應(yīng)著 4 個空格的

如果想單獨設(shè)置
.c
文件類型的縮進(jìn)的話需要打開文件類型縮進(jìn)的開關(guān)
:filetype indent on
找到縮進(jìn)配置文件
系統(tǒng)的配置文件的位置在
/usr/share/vim/vim81/indent/
c
縮進(jìn)為8
java
縮進(jìn)為4
html
縮進(jìn)為2
c
對應(yīng)c.vim
java
對應(yīng)java.vim
html
對應(yīng)html.vim
不同的文件類型可以設(shè)置不同的縮進(jìn)
找到了
/usr/share/vim/vim81/indent/c.vim
就可以設(shè)置c
的縮進(jìn)在最后加上
:set et sw=8 ts=8 sts=8 ai
然后退出并重新打開
demo.c
再gg=G
就可以按照新設(shè)置的
/usr/share/vim/vim81/indent/c.vim
來重新控制縮進(jìn)了
更改文件類型

我們打開
demo.c
時,系統(tǒng)會檢測他的文件類型但是如果我們非要
硬
要說他是一個java
文件會如何呢???:set filetype=java
文件對于
include
之類的語法高亮消失了gg=G
讓文件縮進(jìn)的數(shù)量變回了
4
按照
java
文件縮進(jìn)的要求來做高亮可以根據(jù)文件類型而不同么???
文件類型語法高亮
#找出所有的java.vim文件sudo find / -name "java.vim"
找出所有和 java 有關(guān)的文件

在
indent
下的java.vim
負(fù)責(zé)縮進(jìn)在
syntax
下的java.vim
負(fù)責(zé)語法高亮語法高亮的設(shè)置在
/usr/share/vim/vim81/syntax/
下面

:syntax on
可以設(shè)置關(guān)鍵詞高亮,這個是所有語法高亮的根開關(guān)
文件類型的插件
除此之外,也可以加載
java
文件類型的的插件plugin
文件類型插件可以設(shè)置一鍵編譯運行、跳轉(zhuǎn)到函數(shù)定義之類的
前提是
:set filetype plugin on
文件類型插件的設(shè)置在
/usr/share/vim/vim81/ftplugin/
下面ftplugin = FileType Plugin
回憶文件類型縮進(jìn)和語法
在
indent
下的java.vim
負(fù)責(zé)縮進(jìn)在
syntax
下的java.vim
負(fù)責(zé)語法高亮在
ftplugin
下的java.vim
負(fù)責(zé)針對
java文件類型
的插件
命名規(guī)則
除了對于每個用戶都好使的高亮、縮進(jìn)和插件之外
用戶還可以設(shè)置只對于自己好使的高亮、縮進(jìn)和插件

以
java
語言的插件來舉例系統(tǒng)通用文件夾
/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
上面是命名的規(guī)則
java 對應(yīng)的就是 filetype
文件夾不存在?
如果沒有文件夾的話就要新建
:!mkdir -p ~/.vim/ftplugin
注意是
ftplugin
而不是plugin
plugin
里面的插件全部都被加載ftplugin
里面的插件根據(jù)文件類型加載
嘗試分文件類型進(jìn)行控制
保存后
打開 java 文件時
第三行 set statusline=[oeasy-java]%F%m
狀態(tài)欄告訴我這是 java 文件
打開 css 文件時
狀態(tài)欄告訴我這是 css 文件
第三行 set statusline=[oeasy-css]%F%m
都設(shè)置好之后
分別打開java文件和css文件

強行指定

如果我偏說
css
文件是java
文件會如何呢?可以注意到狀態(tài)欄的變化
由于不同文件類型
filetype
的syntax
文件不同用
css
的語法去標(biāo)注java
的高亮組所以高亮顯示的狀態(tài)也不同
總結(jié)
根據(jù)擴展名我們可以設(shè)置某些特定類型文件的配置
相關(guān)文件類型的設(shè)置放在相應(yīng)的文件夾里
文件類型縮進(jìn)文件夾
/usr/share/vim/vim81/indent/
文件類型語法高亮文件夾
/usr/share/vim/vim81/syntax/
文件類型插件文件夾
~/.vim/ftplugin/java.vim
~/.vim/ftplugin/java_def.vim
~/.vim/ftplugin/java/header.vim
/usr/share/vim/vim81/ftplugin/java.vim
/usr/share/vim/vim81/ftplugin/java_xxx.vim
/usr/share/vim/vim81/ftplugin/java/xxx.vim
系統(tǒng)通用文件夾
用戶專用插件文件夾
在 文件夾
~/.vim/ftplugin
中 的html.vim
的設(shè)置只針對
html
包括文件的縮進(jìn)、配色、語法高亮、行號、狀態(tài)欄等
:filetype indent on
文件類型縮進(jìn)生效:filetype syntax on
文件類型語法高亮生效:filetype plugin on
文件類型插件生效

還有什么好玩的嗎???
下次再說 *