按文件类型设置Vim空白首选项

时间:2009-10-13 20:06:22

标签: vim whitespace preferences

在我的工作中,我需要按照家庭风格进行缩进,如下所示:

  • 编码html和ruby时的2个空格
  • 编码javascript时的
  • 标签,建议使用tabwidth = 4

为每个文件类型指定不同的空白首选项的最佳方法是什么?

5 个答案:

答案 0 :(得分:226)

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

彼得的答案很简单,但遗憾的是选项不对。您需要使用以下选项:

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 show标签字符
  • 正确设置选项卡/空格选项后,可以使用:retab!命令使vim修复文件(用选项卡替换空格,反之亦然)。

答案 2 :(得分:33)

彼得的回答是+1,但Vim也提供了另一种解决方案。如果你想做一些比单setlocal更复杂的事情,比如一次设置一大堆选项,命令和映射,那么vim的文件类型插件功能就可以解决了。

您需要在filetype plugin on中拥有filetype plugin indent on.vimrc,然后为例如{}创建插件ruby你可以创建~/.vim/ftplugin/ruby.vim。从技术上讲,您可以在此处使用您喜欢的任何命令,以便在加载Ruby文件时运行,但推荐的命令包括setlocalmap <buffer>command -buffer和定义函数。用户指南中提供了更多信息;如果您对vim脚本非常熟悉,请跳至:help 41.11,否则请阅读:help usr_40:help usr_41

答案 3 :(得分:9)

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

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

:autocmd BufReadPost * :DetectIndent 

答案 4 :(得分:0)

要在按Tab键时插入空格字符,请设置&#39; expandtab&#39;选项:

:set expandtab

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

:set tabstop=2

参考:http://vim.wikia.com/wiki/Converting_tabs_to_spaces