为什么vim没有为html缩进两个空格?

时间:2017-09-20 14:44:47

标签: html vim

所以我正在尝试为python和web开发设置我的vimrc。这就是我的vimrc的样子。

"--------------vundle------------------------
set nocompatible
filetype off

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

"add plugins here
Plugin 'VundleVim/Vundle.vim'
Plugin 'tpope/vim-surround'
Plugin 'itchyny/lightline.vim'

call vundle#end()
filetype plugin indent on
"------------------end of vundle-------------------

"--------------python development-----------------
"PEP8 python indentation and formatting
au BufNewFile,BufREad *.py
    \ set tabstop=4
    \ set softtabstop=4
    \ set shiftwidth=4
    \ set textwidth=79
    \ set expandtab
    \ set autoindent
    \set fileformat=unix

let python_highlight_all=1
syntax on

"---------------web development------------------
"basic tab spacing for html, css and js
au BufNewFile,BufRead *.js, *.html, *.css
    \ set tabstop=2
    \set softtabstop=2
    \set shiftwidth=2

然而,当我打开或创建一个html文件时,它会缩进8个空格而不是2.我缺少什么?

谢谢!

1 个答案:

答案 0 :(得分:4)

您可以通过

查看缩进选项的设置位置
:verbose setlocal ts? sts? sw? et?

我相信您的情况,问题在于:autocmd

中的模式列表
au BufNewFile,BufRead *.js, *.html, *.css

模式之间一定不能有空格:

au BufNewFile,BufRead *.js,*.html,*.css

:help autocmd-patterns;它讨论了以逗号分隔的列表,并且那里的示例也没有空格。

替代方法

通过对各种语言的文件模式进行编码,您可以复制内置的文件类型检测

我建议将这些:setlocal命令放入~/.vim/after/ftplugin/html.vim(依此类推。这要求您拥有:filetype plugin on;在目录允许后使用您要覆盖$VIMRUNTIME/ftplugin/html.vim完成的任何默认文件类型设置。)

或者,您可以直接在:autocmd FileType {filetype\} ...中定义~/.vimrc。这至少可以避免文件模式的重复,但是一旦你进行了很多自定义,就会变得难以处理。