2009-10-13 59 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