过渡到 vim。缩进有问题

Transitioning to vim. Having issues with indentation

我正在从手术中恢复,因此,我正在过渡到 VIM。作为我的起点,我选择使用 vim-sensible 插件作为我配置的基础。此外,我还安装了 'vim-rails' 和 'vim-ruby' 插件。这些都是通过 Pathogen 加载的。

无论出于何种原因,插件都没有根据文件类型调整缩进设置。选项卡似乎锁定到 9 列。我可以手动设置它们,但显然这并不理想。

这是我的 .vimrc。如您所见,它非常基础。

execute pathogen#infect()
syntax on
filetype plugin indent on

在我的 vimrc 中有以下内容:

set autoindent
set expandtabs
set shiftwidth=4
set tabstop=4

其实我只有

set ai et sw=4 ts=4

您可以使用 FileTypeBufEnter 更改特定设置:

autocmd BufEnter *.py ai et sw=4 ts=4

Vim 提供以下用于管理缩进的缓冲区局部选项:'softtabstop''shiftwidth''tabstop''expandtab'。这个想法是为特定的文件类型设置这些选项,例如ruby 通过使用 autocommand 或使用 after ftplugin 目录(我的偏好)。

目录方法后

将以下内容添加到您的 ~/.vim/after/ftplugin/ruby.vim 文件中:

setlocal softtabstop=2
setlocal shiftwidth=2
setlocal tabstop=2

自动命令方法

将以下内容添加到您的 ~/.vimrc 文件中:

augroup MyIndentSettings
  autocmd!
  autocmd FileType ruby setlocal softtabstop=2 shiftwidth=2 tabstop=2
augroup END

了解更多

由于您刚刚开始 vim,因此最好学习如何查询这些选项,以便您可以追踪未来的错误。查询选项就像 :verbose set {option}? 一样简单,例如:verbose set expandtab?.

您可能还对 Tim Pope 的 vim-sleuth 启发式设置缩进设置感兴趣。

如需更多帮助,请参阅:

:h :set
:h 'softtabstop'
:h 'shiftwidth'
:h 'tabstop'
:h 'expandtab'
:h after-directory