<p>首先,肮脏的方式:</p>
<pre><code>autocmd FileType ruby setlocal tabstop=2 softtabstop=2
autocmd FileType python setlocal expandtab tabstop=4 softtabstop=4
</code></pre>
<p>您需要<code>setlocal</code>来防止这些设置应用于其他缓冲区。在</p>
<hr/>
<p>那么,不那么脏的方法是:</p>
^{pr2}$
<p>命名的<code>augroup</code>有助于组织您的<code>~/.vimrc</code>,但也可以在需要时一次性启用/禁用它。在</p>
<p>当你重新加载你的<code>~/.vimrc</code>,如果你做了很多修改,这可能会发生很多,<code>autocmd</code>永远不会取代以前的:它们被添加、添加和添加,这可能会导致严重的问题。<code>autocmd!</code>删除当前<code>augroup</code>中的所有<code>autocmd</code>,然后将它们添加回以避免出现问题。在</p>
<hr/>
<p>那么,干净的方法是:</p>
<p>将以下行添加到<code>~/.vim/after/ftplugin/ruby.vim</code>:</p>
<pre><code>setlocal tabstop=2
setlocal softtabstop=2
</code></pre>
<p>将以下行添加到<code>~/.vim/after/ftplugin/python.vim</code>:</p>
<pre><code>setlocal expandtab
setlocal tabstop=4
setlocal softtabstop=4
</code></pre>
<p>即使您将它们组织得很干净,并做<code>autocmd!</code>来防止它们堆积起来,<code>autocmd</code>绑定到^{<cd13>事件的<code>autocmd</code>仍然会带来问题:它们复制了Vim内置的文件类型检测机制。假设您的<code>filetype plugin indent on</code>在<code>~/.vimrc</code>中,该机制已经对缓冲区的<code>FileType</code>做出反应,并尝试源代码<code>~/.vim/ftplugin/</code>和{<cd18>}中包含的脚本。在</p>
<p>对于特定于文件类型的设置,这是最合适的地方。在</p>