通过filetype设置Vim空白首选项

在我的工作中,我需要遵循房屋风格的缩进,如下所示:

  • 编码html和ruby的时候有2个空格
  • 编码JavaScript时的选项卡,build议使用tabwidth = 4

每种文件types指定不同的空白首选项的最佳方法是什么?

有很多方法,但是这里有一个简单易懂的方法。 将这些行添加到~/.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 

彼得的回答很简单,但不幸的是,选项是不正确的。 您需要使用以下选项:

 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修复文件(用制表符replace空格,反之亦然) :retab! 命令。

+1给彼得的回答,但是Vim也提供了另一个解决scheme。 如果你想做一些比setlocal更复杂的事情,比如同时设置一大堆的选项,命令和映射,那么vim的filetype插件function就可以解决了。

你需要在你的.vimrc filetype plugin indent on filetype plugin onfiletype plugin indent on ,然后创build一个插件,例如ruby,你可以创build~/.vim/ftplugin/ruby.vim 。 从技术上讲,你可以在这里使用你喜欢的任何命令,在加载一个Ruby文件时运行,但推荐的命令包括setlocalmap <buffer>command -buffer map <buffer>和定义函数。 用户指南中有更多信息; 如果你对vim脚本非常熟悉,那么跳转到:help 41.11 ,否则请阅读:help usr_40:help usr_41

还有一个不错的vim脚本: DetectIndent ,它试图检测你打开的文件的缩进。 如果您使用不同编码风格的许多文件,这是非常方便的。

我在.vimrc中使用自动命令:

 :autocmd BufReadPost * :DetectIndent 

要按Tab键插入空格字符,请设置“expandtab”选项:

 :set expandtab 

下一步是控制按Tab键时要插入的空格字符的数量,设置“tabstop”选项。 例如,要为选项卡插入2个空格,请使用:

 :set tabstop=2 

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