Answers:
您可以.vim
在vim切换到特定文件类型时添加要执行的文件。
例如,我有一个~/.vim/after/ftplugin/html.vim
包含以下内容的文件:
setlocal shiftwidth=2
setlocal tabstop=2
这导致vim使用宽度为2个字符的制表符进行缩进(该noexpandtab
选项在我的配置中全局设置)。
对此进行了描述:http : //vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4,向下滚动到文件类型插件部分。
~/.vim/after/ftplugin/html.vim
。但是正如其他人在下面指出的那样,只需将添加autocmd FileType html setlocal shiftwidth=2 tabstop=2
到中就更好了.vimrc
。
autocmd FileType javascript setlocal shiftwidth=2 tabstop=2
)
filetype plugin on
到vimrc中。
使用ftplugins或自动命令来设置选项。
在 ~/.vim/ftplugin/python.vim:
setlocal shiftwidth=2 softtabstop=2 expandtab
并且不要忘记将它们打开~/.vimrc
:
filetype plugin indent on
(:h ftplugin
有关更多信息)
在~/.vimrc
:
autocmd FileType python setlocal shiftwidth=2 softtabstop=2 expandtab
您可以代替任何的长命令或设置及其短版本:
autocmd
:au
setlocal
:setl
shiftwidth
:sw
tabstop
:ts
softtabstop
:sts
expandtab
:et
我也建议学习之间的差异tabstop
和softtabstop
。很多人不知道softtabstop
。
sw
简称softwidth
,sts
简称softtabstop
,et
简称expandtab
,setl
简称setlocal
,au
简称autocmd
。您可以使用长格式代替短格式。
sw
扩展到shiftwidth
而不是softwidth
。
编辑~/.vimrc
,并为不同的缩进添加不同的文件类型,例如,我希望html/rb
缩进2个空格,js/coffee
文件缩进4个空格:
" by default, the indent is 2 spaces.
set shiftwidth=2
set softtabstop=2
set tabstop=2
" for html/rb files, 2 spaces
autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab
" for js/coffee/jade files, 4 spaces
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype coffeescript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype jade setlocal ts=4 sw=4 sts=0 expandtab
请参考:通过文件类型设置Vim空格首选项
"
:)
'
在我的所有Linux vim上都出错。(7.3+,8.0 ...)
"
,意味着不要用另一个关闭它"
。不知道为什么我要评论。
'
但并非"
没有"
@@@
将基于文件后缀的autocmd命令放在〜/ .vimrc中
autocmd BufRead,BufNewFile *.c,*.h,*.java set noic cin noexpandtab
autocmd BufRead,BufNewFile *.pl syntax on
您正在寻找的命令可能是ts =和sw =
FileType
?
我通常使用expandtab
set,但这对makefile不利。我最近补充说:
:autocmd FileType make set noexpandtab
到我的.vimrc文件的末尾,它会将Makefile,makefile和* .mk识别为makefile,并且不会展开选项卡。大概可以扩展它。
就个人而言,我在.vimrc中使用以下设置:
autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab
今天,您可以尝试使用editorconfig,还有一个vim插件。这样,您不仅可以在vim中更改缩进大小,而且可以在许多其他编辑器中保持一致的编码样式。
下面是一个简单的editorconfig,如您所见,python文件将具有4个缩进空间,而pug模板文件将仅具有2个空间。
# 4 space indentation for python files
[*.py]
indent_style = space
indent_size = 4
# 2 space indentation for pug templates
[*.pug]
indent_size = 2
对于使用的用户autocmd
,最好将它们组合在一起。如果分组与文件类型检测有关,则可能会有以下内容:
augroup filetype_c
autocmd!
:autocmd FileType c setlocal tabstop=2 shiftwidth=2 softtabstop=2 expandtab
:autocmd FileType c nnoremap <buffer> <localleader>c I/*<space><esc><s-a><space>*/<esc>
augroup end
分组有助于保持.vimrc
井井有条,尤其是在文件类型具有多个与其相关联的规则时。在上面的示例中,定义了专用于.c文件的注释快捷方式。
初始调用autocmd!
告诉vim删除所述分组中的所有先前定义的自动命令。如果.vimrc
再次获得定义,这将防止重复定义。有关:help augroup
更多信息,请参见。
我使用用C语言编写的实用程序autotab
。它分析您加载的文件的前几千行,并确定Vim参数的值shiftwidth
,tabstop
和expandtab
。
例如,使用编译gcc -O autotab.c -o autotab
。与Vim集成的说明在顶部的注释标题中。
Autotab相当聪明,但是可能会不时混淆,特别是使用不同的缩进样式不一致地对其进行维护时。
如果文件显然使用制表符或制表符和空格的组合来缩进,则Autotab将通过考虑诸如跨连续行的内部元素对齐之类的因素来确定正在使用的制表符大小,例如注释。
它适用于多种编程语言,并且宽恕了不遵循缩进增量的“带外”元素,例如C预处理指令,C语句标签,更不用说明显的空白行了。