2009-10-13 56 views
128

在我的工作空白的喜好,我必須遵循縮進房子的風格,肚裏如下:設置的Vim的文件類型

  • 2位編碼的HTML和紅寶石
  • 標籤時編碼的JavaScript時,與tabwidth = 4推薦

什麼是指定不同的每個文件類型的空白首選項的最佳方式是什麼?

+0

[按文件類型改變的Vim壓痕行爲(可能重複http://stackoverflow.com/questions/158968/changing-vim-indentation-by-file-type) – acgtyrant 2015-07-12 12:54:42

+0

所有這些答案只是讓我更加困惑。問題是這些選項已經取決於優先選擇。接受的答案有一個很好的語法。這是一個很好的指南:http://vimcasts.org/transcripts/2/en/ – Mikuz 2016-02-02 07:03:12

回答

203

有很多方法,但這裏有一個簡單易懂的方法。添加這些行到你~/.vimrc

autocmd Filetype html setlocal ts=2 sts=2 sw=2 
autocmd Filetype ruby setlocal ts=2 sts=2 sw=2 
autocmd Filetype javascript setlocal ts=4 sts=4 sw=4 
+5

+1:setlocal – 2009-10-13 20:25:06

+1

完美,謝謝! – nelstrom 2009-10-13 21:52:22

+20

TS =「的空格數在文件中使用」 STS =「的空格數使用在編輯」 詳見 SW =「的空間來使用(自動)縮進步數」: http://vimdoc.sourceforge.net/htmldoc/quickref.html#option-list – zdsbs 2014-01-03 04:18:46

32

+1彼得的答案,但Vim中提供了另一種解決方案,以及。如果你想做一些比單個setlocal更復雜的事情,比如同時設置一大堆選項,命令和映射,那麼vim的filetype插件功能就可以解決了。

您需要在您的.vimrc中有filetype plugin onfiletype plugin indent on,然後創建一個插件,例如,紅寶石你可以創建~/.vim/ftplugin/ruby.vim。從技術上講,你可以在這裏使用你喜歡的任何命令,在加載Ruby文件時運行,但推薦的命令包括setlocal,map <buffer>command -buffer,並定義了函數。更多信息在用戶指南中;如果你對vim腳本非常熟悉,那麼跳轉到:help 41.11,否則請閱讀:help usr_40:help usr_41

+1

謝謝,這讓我有足夠的閱讀。 – nelstrom 2009-10-13 21:52:59

72

彼得的答案很簡單,但不幸的是,選項是不正確的。您需要使用下面的選項,而不是:

autocmd Filetype html setlocal ts=2 sw=2 expandtab 
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab 
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 noexpandtab 

還要注意:

  • 您可以通過使用:set list使Vim顯示製表符。
  • 一旦你正確設置了tab/space選項,你可以使用:retab!命令讓vim修復文件(用製表符替換空格,反之亦然)。
+2

'expandtab'比'sts = 2'有什麼好處 – 2013-10-14 02:58:48

+12

@JamesMcMahon expandtab將所有標籤擴展爲空格。 sts(softtabstop)爲縮進插入空格和製表符:基於tabstop大小的縮進符合多少個製表符,然後是空格。當然,如果展開選項卡,所有插入的選項卡都將轉換爲空格。 http://stackoverflow.com/questions/1562336/tab-vs-space-preferences-in-vim可能會有所幫助。如果沒有展開標籤,彼得的答案會插入2個字符寬的標籤,而不是空格。 – ajmccluskey 2014-04-28 11:02:17

9

還有一個不錯的vim腳本:DetectIndent它試圖檢測您打開的文件的縮進。 如果您使用不同編碼風格的許多文件,這非常方便。

我在使用自動命令我的.vimrc

:autocmd BufReadPost * :DetectIndent 
0

要每當按下Tab鍵插入空格字符,請設置 'expandtab' 選項:

:set expandtab 

下一步是要控制在按Tab鍵時要插入的空格字符數,請設置'tabstop'選項。例如,要插入2空間爲一個標籤上,使用:

:set tabstop=2 

REF:http://vim.wikia.com/wiki/Converting_tabs_to_spaces