有人可以用简单的语言向我解释根据文件类型更改Vim的缩进行为的最简单方法吗?例如,如果我打开一个Python文件,它应该缩进2个空格,但如果我打开一个Powershell脚本,它应该使用4个空格.
.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,向下滚动到filetype插件部分.
使用ftplugins或autocommands设置选项.
在 ~/.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
.
编辑你的~/.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空白首选项
根据〜/ .vimrc中的文件后缀放置autocmd命令
autocmd BufRead,BufNewFile *.c,*.h,*.java set noic cin noexpandtab autocmd BufRead,BufNewFile *.pl syntax on
您正在寻找的命令可能是ts =和sw =
我通常使用expandtab
set,但这对makefile来说很糟糕.我最近补充说:
:autocmd FileType make set noexpandtab
到.vimrc文件的末尾,它将Makefile,makefile和*.mk识别为makefile,并且不会扩展选项卡.据推测,你可以扩展它.
我总是对那些为不同文件类型更改选项卡大小的人感到惊讶.当您使用较少的文件查看文件时,您到底做了什么?
就个人而言,我在.vimrc中使用这些设置:
autocmd FileType python set tabstop=8|set shiftset expandtab autocmd FileType ruby set tabstop=8|set shiftset expandtab
这可能是我们大多数人都知道的,但无论如何(我第一次感到困惑):执行:set et
(:set
expandtabs)不会更改文件中已存在的选项卡,而是必须这样做:retab
.例如:
:set et :retab
并且文件中的选项卡被足够的空格替换.要让标签返回,只需:
:set noet :retab