2024-05-13 10:25:46 发布
网友
我现在是一个Python/Ruby polyglot,需要根据我使用的文件类型切换my.vimrc中的值。在
我需要tabstop=2,softtabstop=2用于Ruby,tabstop=4,softtabstop=4用于Python。我的googlefu在如何做到这一点上失败了。关于如何检测文件扩展名有什么想法吗?在
tabstop=2
softtabstop=2
tabstop=4
softtabstop=4
请确保您的~/.vimrc中包含此内容:
~/.vimrc
filetype plugin on
然后在~/.vim/ftplugin中创建这两个文件:
~/.vim/ftplugin
在~/.vim/ftplugin/python.vim中:
~/.vim/ftplugin/python.vim
在~/.vim/ftplugin/ruby.vim:
~/.vim/ftplugin/ruby.vim
setlocal tabstop=2 softtabstop=2 shiftwidth=2 expandtab
(我添加了shiftwidth和expandtab,因为你几乎肯定也想要它们。)
shiftwidth
expandtab
Vim将检测文件类型,然后根据类型运行相应的文件。这是很好的,因为它可以使你的~/.vimrc保持整洁。您可以对Vim识别的任何文件类型执行此操作。当您编辑一个文件时,您可以使用:set filetype?来查看Vim认为它是什么类型的文件。在
:set filetype?
首先,肮脏的方式:
autocmd FileType ruby setlocal tabstop=2 softtabstop=2 autocmd FileType python setlocal expandtab tabstop=4 softtabstop=4
您需要setlocal来防止这些设置应用于其他缓冲区。在
setlocal
那么,不那么脏的方法是:
命名的augroup有助于组织您的~/.vimrc,但也可以在需要时一次性启用/禁用它。在
augroup
当你重新加载你的~/.vimrc,如果你做了很多修改,这可能会发生很多,autocmd永远不会取代以前的:它们被添加、添加和添加,这可能会导致严重的问题。autocmd!删除当前augroup中的所有autocmd,然后将它们添加回以避免出现问题。在
autocmd
autocmd!
那么,干净的方法是:
将以下行添加到~/.vim/after/ftplugin/ruby.vim:
~/.vim/after/ftplugin/ruby.vim
setlocal tabstop=2 setlocal softtabstop=2
将以下行添加到~/.vim/after/ftplugin/python.vim:
~/.vim/after/ftplugin/python.vim
setlocal expandtab setlocal tabstop=4 setlocal softtabstop=4
即使您将它们组织得很干净,并做autocmd!来防止它们堆积起来,autocmd绑定到^{事件的autocmd仍然会带来问题:它们复制了Vim内置的文件类型检测机制。假设您的filetype plugin indent on在~/.vimrc中,该机制已经对缓冲区的FileType做出反应,并尝试源代码~/.vim/ftplugin/和{}中包含的脚本。在
filetype plugin indent on
FileType
~/.vim/ftplugin/
对于特定于文件类型的设置,这是最合适的地方。在
您需要基于如下文件类型:
au FileType ruby set tabstop=2 softtabstop=2 au FileType python set expandtab tabstop=4 softtabstop=4
它会放在你的.vimrc或任何在它之后加载的文件中。在
请确保您的
~/.vimrc
中包含此内容:然后在
~/.vim/ftplugin
中创建这两个文件:在
^{pr2}$~/.vim/ftplugin/python.vim
中:在
~/.vim/ftplugin/ruby.vim
:(我添加了
shiftwidth
和expandtab
,因为你几乎肯定也想要它们。)Vim将检测文件类型,然后根据类型运行相应的文件。这是很好的,因为它可以使你的
~/.vimrc
保持整洁。您可以对Vim识别的任何文件类型执行此操作。当您编辑一个文件时,您可以使用:set filetype?
来查看Vim认为它是什么类型的文件。在首先,肮脏的方式:
您需要
setlocal
来防止这些设置应用于其他缓冲区。在那么,不那么脏的方法是:
^{pr2}$命名的
augroup
有助于组织您的~/.vimrc
,但也可以在需要时一次性启用/禁用它。在当你重新加载你的
~/.vimrc
,如果你做了很多修改,这可能会发生很多,autocmd
永远不会取代以前的:它们被添加、添加和添加,这可能会导致严重的问题。autocmd!
删除当前augroup
中的所有autocmd
,然后将它们添加回以避免出现问题。在那么,干净的方法是:
将以下行添加到
~/.vim/after/ftplugin/ruby.vim
:将以下行添加到
~/.vim/after/ftplugin/python.vim
:即使您将它们组织得很干净,并做事件的}中包含的脚本。在
autocmd!
来防止它们堆积起来,autocmd
绑定到^{autocmd
仍然会带来问题:它们复制了Vim内置的文件类型检测机制。假设您的filetype plugin indent on
在~/.vimrc
中,该机制已经对缓冲区的FileType
做出反应,并尝试源代码~/.vim/ftplugin/
和{对于特定于文件类型的设置,这是最合适的地方。在
您需要基于如下文件类型:
它会放在你的.vimrc或任何在它之后加载的文件中。在
相关问题 更多 >
编程相关推荐