在我的工作中,我被要求按照house风格进行缩进,如下:
- 编码 html 和 ruby 时的 2 个空格
- 编写 javascript 时的选项卡,建议使用 tabwidth=4
为每种文件类型指定不同的空白首选项的最佳方法是什么?
在我的工作中,我被要求按照house风格进行缩进,如下:
为每种文件类型指定不同的空白首选项的最佳方法是什么?
有很多方法,但这里有一个简单易懂的方法。将这些行添加到您的~/.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
。:retab!
正确设置制表符/空格选项后,您可以使用该命令让 vim 修复文件(用制表符替换空格,反之亦然) 。对彼得的回答 +1,但 Vim 也提供了另一种解决方案。如果你想做一些比单个 更复杂的事情setlocal
,比如一次设置一大堆选项、命令和映射,那么 vim 的文件类型插件功能就会派上用场。
你需要有filetype plugin on
或filetype plugin indent on
在你的.vimrc
,然后创建一个插件,例如你可以创建的 ruby ~/.vim/ftplugin/ruby.vim
。从技术上讲,您可以在此处使用您喜欢的任何命令,以便在加载 Ruby 文件时运行,但推荐的命令包括setlocal
、map <buffer>
、command -buffer
和定义函数。更多信息在用户指南中;如果您对 vim 脚本非常熟悉,请跳转到:help 41.11
,否则请阅读:help usr_40
and :help usr_41
。
还有一个不错的 vim 脚本:DetectIndent尝试检测您打开的文件的缩进。如果您处理许多具有不同编码风格的文件,这将非常方便。
我在.vimrc中使用自动命令:
:autocmd BufReadPost * :DetectIndent
要在按下 Tab 键时插入空格字符,请设置 'expandtab' 选项:
:set expandtab
下一步是控制按下 Tab 键时将插入的空格字符数,设置 'tabstop' 选项。例如,要为制表符插入 2 个空格,请使用:
:set tabstop=2