于具有很多屬性的標簽,我希望在新行上分割每個屬性,當按Enter鍵調用新行時,它應該只縮進一個標簽。
以下示例輸出我想如何縮進我的屬性:
<svg width="300px" height="150px">
<ellipse class="fill-current"
cx="150"
cy="75"
rx="100"
ry="75"
/>
</svg>
但PHPStorm會自動嘗試將我所有的行縮進到當前屬性:
<svg width="300px" height="150px">
<ellipse class="fill-current"
cx="150"
cy="75"
rx="100"
ry="75"
/>
</svg>
我無法在設置(編輯器 - >代碼樣式 - > HTML)中找到任何選項來更改此行為。有誰知道這個問題的解決方案?
這背后的原因是因為我經常在我的HTML模板中使用自定義標簽。有時候我自己的標簽很長,并且是2個或(罕見的情況下)3個單詞的組合,并且在新行上啟動所有額外屬性并且它不應該在標簽的末尾對齊。自己縮進屬性是很麻煩的。我想自動化它。
elocity中常常會寫出#foreach #if #else #end等語句,
但由于模板文件中html本身就帶有縮進,所以最終的縮進,并不符合velocity語句的含義。當主要針對velocity邏輯閱讀時,很不方便
沒有處理格式代碼:
模板代碼:
生成html文件截圖:
解決辦法:
“#if#foreach#else#end”這些語法,不用任何縮進。并且行尾加##注釋,表示不解析后面空格
velocity-wiki地址
https://cwiki.apache.org/confluence/display/velocity/VelocityWhitespaceTruncatedByLineComment
解決辦法截圖
件類型
回憶上節課內容
- 上次了解了縮進的各種方式 正常模式下用 << 縮進 插入模式下用 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"
?
- 在 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 文件類型插件生效
?
?