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

nel*_*rom 147 vim whitespace preferences

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

  • 编码html和ruby时有2个空格
  • 编码javascript时的选项卡,建议使用tabwidth = 4

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

Pet*_*ter 233

有很多方法,但这里有一个简单易懂的方法.将这些行添加到您的~/.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
Run Code Online (Sandbox Code Playgroud)

  • ts ='文件中<Tab>使用的空格数'sts ='编辑'sw ='用于(自动)缩进步骤的空格数时<Tab>使用的空格数请参阅:http:/ /vimdoc.sourceforge.net/htmldoc/quickref.html#option-list (25认同)

too*_*php 80

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

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
Run Code Online (Sandbox Code Playgroud)

另请注意:

  • 您可以使用制作vim show制表符:set list.
  • 一旦正确设置了选项卡/空格选项,就可以使用该:retab!命令使vim修复文件(用选项卡替换空格,反之亦然).

  • @JamesMcMahon expandtab将所有选项卡扩展为空格.sts(softtabstop)为缩进插入空格和制表符:根据tabstop的大小,缩进所适应的多个制表符,然后是空格.当然,如果启用了expandtab,则插入的所有选项卡都将转换为空格.http://stackoverflow.com/questions/1562336/tab-vs-space-preferences-in-vim可能会有所帮助.如果没有展开选项卡,Peter的答案将插入2个字符宽的标签,而不是空格. (12认同)
  • `expandtab`比`sts = 2`有什么好处 (2认同)

hob*_*bbs 33

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

你需要有filetype plugin onfiletype plugin indent on在你的.vimrc,然后创建一个插件例如Ruby中,你可以创建~/.vim/ftplugin/ruby.vim.从技术上讲,你可以用你喜欢这里的任何命令,当加载一个Ruby文件来运行,但推荐的包括setlocal,map <buffer>,command -buffer,和定义功能.用户指南中提供了更多信息; 如果你非常熟悉vim的脚本,那么跳转到:help 41.11,否则阅读:help usr_40:help usr_41.


Ben*_*gel 10

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

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

:autocmd BufReadPost * :DetectIndent 
Run Code Online (Sandbox Code Playgroud)