Shi*_*a91 0 ruby vim file-type indentation vim-syntax-highlighting
我目前正在使用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
Run Code Online (Sandbox Code Playgroud)
语法高亮是否有类似的东西?
第一,
确保在您的顶部附近有以下几行vimrc:
filetype plugin indent on
syntax on
Run Code Online (Sandbox Code Playgroud)
第二,
这个片段在技术上是正确的:
autocmd FileType python set tabstop=8|set shiftwidth=4|set expandtab
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab
Run Code Online (Sandbox Code Playgroud)
但它可以做成:
sets 更简单,更易读,更改剩余的更安全,setlocal以限制您对目标缓冲区的选择:
autocmd FileType python setlocal tabstop=8 shiftwidth=4 expandtab
autocmd FileType ruby setlocal tabstop=8 shiftwidth=2 expandtab
Run Code Online (Sandbox Code Playgroud)第三,
当你重新获得你的时候,那些自动命令不会取代它们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
Run Code Online (Sandbox Code Playgroud)
第四,
Vim的文件类型检测机制已经通过查找ftplugin/python.vim并after/ftplugin/python.vim在&runtimepath每次FileType使用值触发事件时为您完成大部分工作python...这使得FileType自动命令添加到您的vimrc大部分冗余.
vimrc通过after/ftplugin/python.vim使用以下内容创建文件,保持精益和干净:
setlocal tabstop=8
setlocal shiftwidth=4
setlocal expandtab
Run Code Online (Sandbox Code Playgroud)
对于ruby和其他文件类型等等...
注意:ftplugin/python.vim如果您想完全覆盖默认的python filetype插件,并且after/ftplugin/python.vim只想添加/更改一些内容,请使用.
注意:路径与~/.vimunix类系统和%userprofile%\vimfilesWindows相关.