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

Posted

技术标签:

【中文标题】按文件类型设置 Vim 空白首选项【英文标题】:Setting Vim whitespace preferences by filetype 【发布时间】:2010-12-06 11:10:36 【问题描述】:

在我的工作中,我需要按照house风格进行缩进,具体如下:

html 和 ruby​​ 编码时有 2 个空格 javascript 编码时的标签,推荐使用 tabwidth=4

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

【问题讨论】:

Changing Vim indentation behavior by file type的可能重复 所有这些答案让我更加困惑。问题是选项取决于偏好。不过,接受的答案有一个很好的语法。这是一个很好的指南:vimcasts.org/transcripts/2/en 【参考方案1】:

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

【讨论】:

ts = '文件中 使用的空格数' sts = '编辑时 使用的空格数' sw = '用于(自动)缩进步骤的空格数' 详情见:vimdoc.sourceforge.net/htmldoc/quickref.html#option-list 我至少需要为 ruby​​ 附加 expandtab,在这里查看“太多 php”的答案【参考方案2】:

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

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 修复文件(用制表符替换空格,反之亦然)。

【讨论】:

expandtabsts=2 有什么好处 @JamesMcMahon expandtab 将所有制表符扩展为空格。 sts (softtabstop) 为缩进插入空格和制表符:根据制表符的大小,尽可能多的制表符适合缩进,然后是空格。当然,如果打开了 expandtab,所有插入的选项卡都会转换为空格。 ***.com/questions/1562336/… 可能会有所帮助。如果没有展开选项卡,彼得的答案将插入 2 个字符宽的选项卡,而不是空格。【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

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

:autocmd BufReadPost * :DetectIndent 

【讨论】:

【参考方案5】:

要在按下 Tab 键时插入空格字符,请设置 'expandtab' 选项:

:set expandtab

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

:set tabstop=2

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

【讨论】:

以上是关于按文件类型设置 Vim 空白首选项的主要内容,如果未能解决你的问题,请参考以下文章

如何设置.txt 的默认打开方式为notepad++

android中EditText输入类型为啥不能设置为中文

使用单个 `.vimrc`(不带 ftplugin)按文件类型更改 Vim 行为

editplus怎么设置默认打开方式

vim 查看文件类型及设置字典

Vim 在最后一行或 eof 上没有行尾