Vim使用空格而不是制表符缩进JavaScript文件

Vim使用空格而不是制表符缩进JavaScript文件,javascript,vim,Javascript,Vim,我有以下vimrc配置,它可以很好地用于Python文件: execute pathogen#infect() syntax on filetype plugin indent on set tabstop=4 所以当我按tab键时,它是4个空格的别名 但它似乎不适用于JavaScript文件 当我按tab键时,它总是为每个缩进添加一个tab加上两个空格。 我可以使用两个空格,但如何用4个空格替换该选项卡 所有代码都缩进了空格我不想开始添加制表符/空格混合 我知道您可以为特定文件指定选项卡/空

我有以下vimrc配置,它可以很好地用于Python文件:

execute pathogen#infect()
syntax on
filetype plugin indent on
set tabstop=4
所以当我按tab键时,它是4个空格的别名

但它似乎不适用于JavaScript文件

当我按tab键时,它总是为每个缩进添加一个tab加上两个空格。 我可以使用两个空格,但如何用4个空格替换该选项卡

所有代码都缩进了空格我不想开始添加制表符/空格混合

我知道您可以为特定文件指定选项卡/空格,但我无法使其正常工作

autocmd FileType javascript setlocal shiftwidth=1 tabstop=4

要配置4空间缩进,您需要
:setlocal tabstop=4 expandtab
。为安全起见,建议还将
'softtabstop'
选项重置为
0
。通常,您希望
'shiftwidth'
选项与所选缩进对齐;这将是
shiftwidth=4

autocmd FileType javascript setlocal shiftwidth=4 tabstop=4 softtabstop=0 expandtab
我建议将选项放入
~/.vim/after/ftplugin/javascript.vim
中,而不是定义大量的
:autocmd文件类型javascript
;它更干净,结垢更好;但要求您在上有
:文件类型插件

如果这不起作用,某些文件类型插件(或另一个
:autocmd
)可能会覆盖您的设置。你可以跟我核对一下

:verbose setlocal shiftwidth? tabstop? softtabstop? expandtab?

要配置4空间缩进,您需要
:setlocal tabstop=4 expandtab
。为安全起见,建议还将
'softtabstop'
选项重置为
0
。通常,您希望
'shiftwidth'
选项与所选缩进对齐;这将是
shiftwidth=4

autocmd FileType javascript setlocal shiftwidth=4 tabstop=4 softtabstop=0 expandtab
我建议将选项放入
~/.vim/after/ftplugin/javascript.vim
中,而不是定义大量的
:autocmd文件类型javascript
;它更干净,结垢更好;但要求您在
上有
:文件类型插件

如果这不起作用,某些文件类型插件(或另一个
:autocmd
)可能会覆盖您的设置。你可以跟我核对一下

:verbose setlocal shiftwidth? tabstop? softtabstop? expandtab?

嗯,它不起作用,而且:verbose说它已经在vimrc中定义(我把autocmd放在这里测试它),但是如果我添加到vimrc中,只设置shiftwidth=4并设置expandtab,在我的问题上写的配置之后,它似乎起作用了,也许vim没有检测到javascript文件?或者任何vim病原体的东西正在覆盖它?可能是;您可以通过
:setlocal filetype?
进行检查,它应该返回
javascript
。是的,它说javascript,奇怪的是我不能让它与autocmd一起工作,但是如果我只是在vimrtry单独添加选项,从
:autocmd
切换到文件
~/.vim/after/ftplugin/javascript.vim
;这至少为您提供了
:verbose
的精确位置,并且可能解决了autocmd排序的问题。mmm它不起作用,而:verbose表示它已在vimrc中定义(我将autocmd放在此处进行测试)然而,如果我添加到vimrc中,只需设置shiftwidth=4,并在我的问题中写入配置后设置expandtab,那么它似乎可以工作,也许vim没有检测到javascript文件?或者任何vim病原体的东西正在覆盖它?可能是;您可以通过
:setlocal filetype?
进行检查,它应该返回
javascript
。是的,它说javascript,奇怪的是我不能让它与autocmd一起工作,但是如果我只是在vimrtry单独添加选项,从
:autocmd
切换到文件
~/.vim/after/ftplugin/javascript.vim
;这至少为您提供了
:verbose
的精确位置,并且可能解决了autocmd排序的问题。只是一个切题注释:如果您想修复现有文件,那么工具
展开
取消展开
可能会派上用场。希望这有帮助!只是一个切题注释:如果您想修复现有文件,那么工具
expand
unexpand
可能会派上用场。希望这有帮助!