在我的工作空白的喜好,我必须遵循缩进房子的风格,肚里如下:设置的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