过渡到vim。缩进有问题

过渡到vim。缩进有问题,vim,vim-plugin,Vim,Vim Plugin,我正在从手术中恢复,因此,我正在过渡到VIM。作为我的起点,我选择使用VIM敏感插件作为配置的基础。此外,我还安装了“vim rails”和“vim ruby”插件。这些都是通过病原体装载的 无论出于何种原因,插件都没有根据文件类型调整缩进设置。选项卡似乎锁定为9列。我可以手动设置它们,但显然这并不理想 这是我的。正如你所看到的,这是非常基本的 execute pathogen#infect() syntax on filetype plugin indent on 在我的vimrc中,我有以

我正在从手术中恢复,因此,我正在过渡到VIM。作为我的起点,我选择使用VIM敏感插件作为配置的基础。此外,我还安装了“vim rails”和“vim ruby”插件。这些都是通过病原体装载的

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

这是我的。正如你所看到的,这是非常基本的

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
您可以使用FileType或BufEnter更改特定设置:


在我的vimrc中,我有以下内容:

set autoindent
set expandtabs
set shiftwidth=4
set tabstop=4
事实上我只是

set ai et sw=4 ts=4
您可以使用FileType或BufEnter更改特定设置:


Vim提供以下用于管理缩进的缓冲区本地选项:“softtabstop”、“shiftwidth”、“tabstop”和“expandtab”。我们的想法是为特定的文件类型设置这些选项,例如ruby,或者使用自动命令,或者使用after ftplugin目录my preference

后目录法 将以下内容添加到~/.vim/after/ftplugin/ruby.vim文件中:

自动命令方法 将以下内容添加到~/.vimrc文件中:

了解更多 由于您刚刚开始使用vim,因此最好学习如何查询这些选项,以便跟踪将来的bug。查询选项非常简单:verbose set{option}?,例如:verbose set expandtab

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

有关更多帮助,请参阅:

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

Vim提供以下用于管理缩进的缓冲区本地选项:“softtabstop”、“shiftwidth”、“tabstop”和“expandtab”。我们的想法是为特定的文件类型设置这些选项,例如ruby,或者使用自动命令,或者使用after ftplugin目录my preference

后目录法 将以下内容添加到~/.vim/after/ftplugin/ruby.vim文件中:

自动命令方法 将以下内容添加到~/.vimrc文件中:

了解更多 由于您刚刚开始使用vim,因此最好学习如何查询这些选项,以便跟踪将来的bug。查询选项非常简单:verbose set{option}?,例如:verbose set expandtab

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

有关更多帮助,请参阅:

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

查看vimrc文件会很有帮助。对于初学者,请确保在~/.vimrc文件中有以下行:filetype plugin indent onMaybe您预期的是错误的。正如有人提到的那样,按tab键将手动增加缩进,并将缩进间隔移动两个空格。这与基于文件类型的缩进设置无关。基于文件类型的缩进设置仅影响自动缩进。查看vimrc文件会有所帮助。对于初学者,请确保在~/.vimrc文件中有以下行:filetype plugin indent onMaybe您预期的是错误的。正如有人提到的那样,按tab键将手动增加缩进,并将缩进间隔移动两个空格。这与基于文件类型的缩进设置无关。基于文件类型的缩进设置仅影响自动缩进。您不应将缓冲区本地设置添加到~/.vimrc文件中,因为ftplugin的“获取源代码”。即使这确实有效,但将这些设置用于所有文件类型也没有什么意义,例如设置expandtab和Makefile的“请勿混合”。您的autocmd中缺少set/setlocal。您可能希望使用来保护auto命令不被资源占用。Hm。真奇怪。我肯定有expandtab,但我可以毫无问题地编辑makefiles。当然,现在我想起来了,这可能是因为我依赖自动缩进,自己不点击标签。不,这是因为编辑文件时ftplugins来源于vimrc之后。编辑makefile或执行:set ft=make然后运行:verbose set expandtab?查看设置的来源。设置将来自$VIMRUNTIME/ftplugins/。现在打开一些其他文件,再次执行verboseset命令,查看它们的来源。我想你不会对来自vimrc的任何东西感到满意,除非它们是autocmd的一部分。学到了一些新东西!您不应该将缓冲区本地设置添加到~/.vimrc文件中,因为ftplugin的源代码是在之后获得的。即使这确实有效,但将这些设置用于所有文件类型也没有什么意义,例如设置expandtab和Makefile的“请勿混合”。您的autocmd中缺少set/setlocal。您可能希望使用来保护auto命令不被资源占用。Hm。真奇怪。我肯定有expandtab,但我可以毫无问题地编辑makefiles。当然,现在我想起来了,这可能是因为我依赖自动缩进,自己不点击标签。不,这是因为编辑文件时ftplugins来源于vimrc之后。编辑makefile或do:set ft=make然后运行:verbos
设置扩展选项卡?查看设置的来源。设置将来自$VIMRUNTIME/ftplugins/。现在打开一些其他文件,再次执行verboseset命令,查看它们的来源。我想你不会对来自vimrc的任何东西感到满意,除非它们是autocmd的一部分。学到了一些新东西!谢谢vim sleuth提供了预期的行为。@mattmarcello如果这回答了您的问题,您应该单击复选标记将其标记为已接受谢谢。。。vim sleuth提供了预期的行为。@mattmarcello如果这回答了您的问题,您应该单击复选标记将其标记为已接受