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


155

在我的工作中,我需要遵循缩进的房屋样式,如下所示:

  • 编码html和ruby时2个空格
  • 编码javascript时使用制表符,建议使用tabwidth = 4

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



所有这些答案使我更加困惑。问题在于选项取决于偏好。接受的答案虽然语法不错。这是一个很棒的指南:vimcasts.org/transcripts/2/en
MikaelLindlöf'16

Answers:


245

有很多方法,但这是一种简单易懂的方法。将这些行添加到您的~/.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

27
ts ='文件中<Tab>使用的空格数'sts ='编辑时<Tab>使用的空格数'sw ='用于(自动)缩进步骤的空格数'有关详细信息,请参见:vimdoc.sourceforge .net / htmldoc / quickref.html#option-list
zdsbs 2014年

我至少需要为ruby附加expandtab,请在此处查看“太多PHP”的答案
迈克尔·杜兰特

87

彼得的答案很简单,但不幸的是选项不正确。您需要改用以下选项:

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

另请注意:

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

2
什么是造福expandtabsts=2
詹姆斯·麦克马洪

12
@JamesMcMahon expandtab将所有选项卡扩展为空格。sts(softtabstop)插入用于缩进的空格和制表符:根据tabstop的大小,将在缩进中容纳尽可能多的制表符,然后在其后空格。当然,如果expandtab启用,则所有插入的选项卡都将转换为空格。 stackoverflow.com/questions/1562336/…可能会进一步帮助。如果没有扩展标签,彼得的答案将插入宽度为2个字符而不是空格的标签。
ajmccluskey 2014年

35

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

你需要有filetype plugin onfiletype plugin indent on在你的.vimrc,然后创造如红宝石,你可以创建一个插件~/.vim/ftplugin/ruby.vim。从技术上讲,你可以这里使用任何你喜欢的命令,当加载一个Ruby文件来运行,但推荐的包括setlocalmap <buffer>command -buffer,和定义功能。《用户指南》中有更多信息。如果您对vim脚本编写非常熟悉,则跳至:help 41.11,否则请阅读:help usr_40:help usr_41


10

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

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

:autocmd BufReadPost * :DetectIndent 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.