Vim 根据文件类型设置选项卡宽度
我正在努力学习使用Vim。我喜欢按4个空格缩进,但对某些语言(如Nim和MoonScript)使用2个空格。我尝试将此添加到我的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
.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
。