通过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 on
或filetype plugin indent on
,然后创build一个插件,例如ruby,你可以创build~/.vim/ftplugin/ruby.vim
。 从技术上讲,你可以在这里使用你喜欢的任何命令,在加载一个Ruby文件时运行,但推荐的命令包括setlocal
, map <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