在我的工作空白的喜好,我必須遵循縮進房子的風格,肚裏如下:設置的Vim的文件類型
- 2位編碼的HTML和紅寶石
- 標籤時編碼的JavaScript時,與tabwidth = 4推薦
什麼是指定不同的每個文件類型的空白首選項的最佳方式是什麼?
在我的工作空白的喜好,我必須遵循縮進房子的風格,肚裏如下:設置的Vim的文件類型
什麼是指定不同的每個文件類型的空白首選項的最佳方式是什麼?
有很多方法,但這裏有一個簡單易懂的方法。添加這些行到你~/.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
+1彼得的答案,但Vim中提供了另一種解決方案,以及。如果你想做一些比單個setlocal
更復雜的事情,比如同時設置一大堆選項,命令和映射,那麼vim的filetype插件功能就可以解決了。
您需要在您的.vimrc
中有filetype plugin on
或filetype plugin indent on
,然後創建一個插件,例如,紅寶石你可以創建~/.vim/ftplugin/ruby.vim
。從技術上講,你可以在這裏使用你喜歡的任何命令,在加載Ruby文件時運行,但推薦的命令包括setlocal
,map <buffer>
,command -buffer
,並定義了函數。更多信息在用戶指南中;如果你對vim腳本非常熟悉,那麼跳轉到:help 41.11
,否則請閱讀:help usr_40
和:help usr_41
。
謝謝,這讓我有足夠的閱讀。 – nelstrom 2009-10-13 21:52:59
彼得的答案很簡單,但不幸的是,選項是不正確的。您需要使用下面的選項,而不是:
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顯示製表符。:retab!
命令讓vim修復文件(用製表符替換空格,反之亦然)。'expandtab'比'sts = 2'有什麼好處 – 2013-10-14 02:58:48
@JamesMcMahon expandtab將所有標籤擴展爲空格。 sts(softtabstop)爲縮進插入空格和製表符:基於tabstop大小的縮進符合多少個製表符,然後是空格。當然,如果展開選項卡,所有插入的選項卡都將轉換爲空格。 http://stackoverflow.com/questions/1562336/tab-vs-space-preferences-in-vim可能會有所幫助。如果沒有展開標籤,彼得的答案會插入2個字符寬的標籤,而不是空格。 – ajmccluskey 2014-04-28 11:02:17
還有一個不錯的vim腳本:DetectIndent它試圖檢測您打開的文件的縮進。 如果您使用不同編碼風格的許多文件,這非常方便。
我在使用自動命令我的.vimrc:
:autocmd BufReadPost * :DetectIndent
要每當按下Tab鍵插入空格字符,請設置 'expandtab' 選項:
:set expandtab
下一步是要控制在按Tab鍵時要插入的空格字符數,請設置'tabstop'選項。例如,要插入2空間爲一個標籤上,使用:
:set tabstop=2
[按文件類型改變的Vim壓痕行爲(可能重複http://stackoverflow.com/questions/158968/changing-vim-indentation-by-file-type) – acgtyrant 2015-07-12 12:54:42
所有這些答案只是讓我更加困惑。問題是這些選項已經取決於優先選擇。接受的答案有一個很好的語法。這是一個很好的指南:http://vimcasts.org/transcripts/2/en/ – Mikuz 2016-02-02 07:03:12