【问题标题】:Vim indent JavaScript files with spaces instead of tabVim 使用空格而不是制表符缩进 JavaScript 文件
【发布时间】:2017-09-13 11:02:52
【问题描述】:

我有以下适用于 Python 文件的 vimrc 配置:

execute pathogen#infect()
syntax on
filetype plugin indent on
set tabstop=4

所以当我按下制表符时,它是 4 个空格的别名。

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

当我按下制表符时,它总是为每个缩进添加一个制表符和 2 个空格。 我对这两个空格没问题,但是如何用 4 个空格替换那个选项卡?

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

我知道你可以为特定文件指定制表符/空格,但我不能让它工作

autocmd FileType javascript setlocal shiftwidth=1 tabstop=4

【问题讨论】:

  • 只是一个切题的评论:如果你想修复你现有的文件,工具expandunexpand 可能会派上用场。希望这会有所帮助!

标签: javascript vim


【解决方案1】:

要配置 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 FileType javascript;它更清洁,扩展性更好;不过,要求您拥有:filetype plugin on

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

:verbose setlocal shiftwidth? tabstop? softtabstop? expandtab?

【讨论】:

  • mmm 它不起作用,并且 :verbose 说它已经在 vimrc 中定义(我在其中放置了 autocmd 来测试它)但是如果我添加到 vimrc 中它似乎可以工作只需设置 shiftwidth=4并在我的问题上写的配置之后设置expandtab,也许vim没有检测到javascript文件?还是任何 vim 病原体的东西都覆盖了它?
  • 可能是;你可以通过:setlocal filetype?查看,应该返回javascript
  • 是的,它说的是 javascript,很奇怪我不能让它与 autocmd 一起工作,但如果我只是在 vimrc 中单独添加选项,它就可以工作
  • 尝试从:autocmd切换到文件~/.vim/after/ftplugin/javascript.vim;这至少可以为您提供:verbose 的精确位置,并可能解决自动命令排序的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多