我目前正在使用Vim for Python,并希望在我学习Ruby的同时开始使用它。
有没有办法配置vimrc文件,以便根据当前正在处理的文件类型应用不同的设置?
例如,我的vimrc当前设置为有4个空格的缩进,我想将它们作为Ruby文件的2个空格。另外,我希望在处理ruby文件时使用语法Ruby语法突出显示,并为Python文件突出显示Python语法。
我偶然发现了这个以定义标签空间:
autocmd FileType python set tabstop=8|set shiftwidth=4|set expandtab
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab
语法高亮是否类似?
答案 0 :(得分:6)
<强>首先,强>
确保在vimrc
顶部附近有以下行:
filetype plugin indent on
syntax on
<强>其次,强>
此代码段在技术上是正确的:
autocmd FileType python set tabstop=8|set shiftwidth=4|set expandtab
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab
但可以制作:
set
,,将剩余的更改为setlocal
以便将您的选项限制为目标缓冲区更安全:
autocmd FileType python setlocal tabstop=8 shiftwidth=4 expandtab
autocmd FileType ruby setlocal tabstop=8 shiftwidth=2 expandtab
<强>第三,强>
当您重新获取vimrc
时,这些自动命令不会替换自己:它们只会堆积,向上,向上......直到您的Vim变得无法忍受缓慢且无响应。
如果您坚持将这些设置保留在vimrc
中,那么在他的回答中使用Cody描述的模式是明智的:
augroup python
autocmd!
autocmd FileType python setlocal tabstop=8 shiftwidth=4 expandtab
augroup END
augroup ruby
autocmd!
autocmd FileType ruby setlocal tabstop=8 shiftwidth=2 expandtab
augroup END
<强>四,强>
Vim的文件类型检测机制已经为您完成了大部分工作,每当ftplugin/python.vim
事件被after/ftplugin/python.vim
事件触发时&runtimepath
FileType
python
{1}} ...这使得FileType
自动命令添加到您的vimrc
基本上是多余的。
通过使用以下内容创建文件vimrc
,让您的after/ftplugin/python.vim
精益和干净:
setlocal tabstop=8
setlocal shiftwidth=4
setlocal expandtab
对于ruby和其他文件类型等等......
注意:如果您想完全覆盖默认的python filetype插件,请使用ftplugin/python.vim
,如果您只想添加/更改一些内容,请使用after/ftplugin/python.vim
。
注意:路径相对于类似unix的系统上的~/.vim
和Windows上的%userprofile%\vimfiles
。
答案 1 :(得分:1)
augroup ruby
autocmd!
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab
... Any other ruby specific settings
augroup END
augroup python
autocmd!
autocmd FileType python set tabstop=8|set shiftwidth=4|set expandtab
... Any other python specific settings
augroup END
在语法突出显示的情况下,它应该自动发生。如果vim未检测到您的文件类型,则:setf ruby
或:setf python
应该在您处于文件中时有效。