Vim 根据文件类型设置选项卡宽度

Vim 根据文件类型设置选项卡宽度,vim,Vim,我正在努力学习使用Vim。我喜欢按4个空格缩进,但对某些语言(如Nim和MoonScript)使用2个空格。我尝试将此添加到我的.vimrc: autocmd BufNewFile,BufRead,BufEnter *.nim :setlocal tabstop=2 shiftwidth=2 softtabstop=2 有问题吗?它什么都没做!所有发生的事情是,当我按下标签时,它什么也不做!我做错了什么 autocmd BufNewFile,BufRead *.nim setlocal tab

我正在努力学习使用Vim。我喜欢按4个空格缩进,但对某些语言(如Nim和MoonScript)使用2个空格。我尝试将此添加到我的
.vimrc

autocmd BufNewFile,BufRead,BufEnter *.nim :setlocal tabstop=2 shiftwidth=2 softtabstop=2
有问题吗?它什么都没做!所有发生的事情是,当我按下标签时,它什么也不做!我做错了什么

autocmd BufNewFile,BufRead *.nim setlocal tabstop=2 shiftwidth=2 softtabstop=2
这应该可以正常工作(在重新启动Vim/通过
:e!
重新编辑现有文件后),但它将文件类型检测与文件类型设置相混合。Vim有一个名为filetype的中间抽象,您应该使用它。使用它,您可以将文件glob(如
*.nim
映射到文件类型
nim
,然后通过
:autocmd filetype
~/.vim/ftplugin/nim.vim
中的文件类型插件来定义设置(对于后者,您需要
~/.vimrc
中的
:filetype plugin on

台阶 因此,在
~/.vim/ftdetect/nim.vim
中创建一个文件类型检测:

autocmd BufRead,BufNewFile *.nim setfiletype nim
setlocal tabstop=2 shiftwidth=2 softtabstop=2
然后,在
~/.vim/ftplugin/nim.vim
中创建一个文件类型插件:

autocmd BufRead,BufNewFile *.nim setfiletype nim
setlocal tabstop=2 shiftwidth=2 softtabstop=2

您可以通过
:scriptnames
输出检查这些文件是否正确加载。重启Vim后,这应该可以工作,您可以向后一个文件添加其他设置。如果您的文件类型派生自其他文件类型,则还可以添加
:runtime!ftplugin/javascript.vim(例如)在那里也可以获得这些设置。

你在ftplugin中尝试过吗?@lcd047你是什么意思?类似这样:
echo setlocal tabstop=2 shiftwidth=2 softtabstop=2>~/.vim/ftplugin/nim.vim
检查
:help filetype plugin
。如果您的选项卡未执行任何操作,则很可能您已将某些内容映射到它-您可以尝试
:imap