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

lap*_*ira 2 javascript vim

我有以下 vimrc 配置,该配置对于 Python 文件运行良好:

execute pathogen#infect()
syntax on
filetype plugin indent on
set tabstop=4
Run Code Online (Sandbox Code Playgroud)

所以当我按 Tab 时,它是 4 个空格的别名。

但它似乎不适用于 JavaScript 文件。

当我按 Tab 时,它总是为每个缩进添加一个 Tab 加 2 个空格。我可以接受两个空格,但如何用 4 个空格替换该制表符?

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

我知道您可以为特定文件指定制表符/空格,但我无法使其工作

autocmd FileType javascript setlocal shiftwidth=1 tabstop=4
Run Code Online (Sandbox Code Playgroud)

Ing*_*kat 5

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

autocmd FileType javascript setlocal shiftwidth=4 tabstop=4 softtabstop=0 expandtab
Run Code Online (Sandbox Code Playgroud)

我建议将选项放入~/.vim/after/ftplugin/javascript.vim而不是定义大量:autocmd FileType javascript; 它更干净并且扩展性更好;不过,要求你有:filetype plugin on

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

:verbose setlocal shiftwidth? tabstop? softtabstop? expandtab?
Run Code Online (Sandbox Code Playgroud)