我如何配置2种不同语言的Vim?
我目前正在使用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
是否有类似的语法突出显示?
第一,
确保你的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
并且在&runtimepath
after/ftplugin/python.vim
之后&runtimepath
每次使用值python
触发FileType
事件时都会执行大部分工作......这会使FileType
自动命令添加到您的vimrc
基本上是多余
使用以下内容after/ftplugin/python.vim
创建文件after/ftplugin/python.vim
保持您的vimrc
精益和清洁:
setlocal tabstop=8
setlocal shiftwidth=4
setlocal expandtab
等红宝石和其他文件类型...
注意:如果您想完全覆盖默认的python文件类型插件,并使用after/ftplugin/python.vim
如果您只想添加/更改一些内容,请使用ftplugin/python.vim
。
注意:路径相对于类似于unix的系统上的~/.vim
和Windows上的%userprofile%vimfiles
。
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
应该在文件中工作。