Tab 键 == 4 个空格,在 Vim 中花括号后自动缩进

如何使vi - Vim从不使用制表符(将空格转换为制表符,很糟糕!),使制表符键 == 4 个空格,并在像Emacs这样的大括号块之后自动缩进代码?

另外,如何保存这些设置,这样我就不必再次输入它们了?

我已经看到了与此相关的其他问题,但是它似乎总是与我想要的东西有些偏离。

答案

正如以下几个答案中所指出的那样,现在首选的方法是不使用 smartindent,而使用以下内容(在.vimrc 中 ):

filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab

在您的.vimrc:文件中:

set smartindent
set tabstop=4
set shiftwidth=4
set expandtab

帮助文件需要一些时间来习惯,但是您读得越多,Vim 就会越好:

:help smartindent

更好的是,您可以将以下设置嵌入源中以实现可移植性:

:help auto-setting

要查看当前设置:

:set all

正如graywh在评论中指出的那样,smartindent 已被 cindent 取代,它更 “聪明地工作”,尽管它仍然主要用于具有 C 语法的语言:

:help C-indenting

相关的,如果您打开同时使用制表符和空格的文件(假设您已经

set expandtab ts=4 sw=4 ai

您可以将整个文件中的所有标签替换为空格

:%retab

获得特定于文件类型的缩进的最佳方法是在 vimrc 中使用filetype plugin indent on 。然后,例如,您可以在. vim / ftplugin / c.vim 中指定诸如set sw=4 sts=4 et ,而不必为所有正在编辑的文件设置全局名称,而其他非 C 类型语法将正确缩进,也是(甚至是嘴唇)

要在大多数文件中包含 4 个空格的制表符,在 Makefile 中包含真正的 8 宽制表符,并在包括 C / C ++ 在内的各种文件中自动缩进,请将其放入~/.vimrc文件中:

" Only do this part when compiled with support for autocommands.
if has("autocmd")
    " Use filetype detection and file-based automatic indenting.
    filetype plugin indent on

    " Use actual tab chars in Makefiles.
    autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif

" For everything else, use a tab width of 4 space chars.
set tabstop=4       " The width of a TAB is set to 4.
                    " Still it is a \t. It is just that
                    " Vim will interpret it to be having
                    " a width of 4.
set shiftwidth=4    " Indents will have a width of 4.
set softtabstop=4   " Sets the number of columns for a TAB.
set expandtab       " Expand TABs to spaces.

在许多 Linux 系统上,例如 Ubuntu,默认情况下不存在.vimrc文件,因此建议您首先创建它。

不要使用主目录中的.viminfo文件。它用于其他目的。

第 1 步:转到主目录

cd ~

步骤 2:建立档案

vim .vimrc

步骤 3:添加上述配置

filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab

步骤 3:按Shift + ZZ保存文件。

推荐的方法是使用基于文件类型的缩进,仅在不足时才使用 smartindent 和 cindent。

将以下内容添加到您的. vimrc 中

set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on

希望它能作为一个不同的答案有所帮助。

编辑您的〜/ .vimrc

$ vim ~/.vimrc

添加以下行:

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab

VIM Wiki

:set tabstop=4
:set shiftwidth=4
:set expandtab

自动缩进基于当前语法模式。我知道,如果您正在编辑 Foo.java,则输入{并按Enter 键可缩进下一行。

对于选项卡,有两个设置。在 Vim 中,键入一个冒号,然后 “set tabstop = 4”,这会将这些标签设置为显示为四个空格。再次点击冒号,然后键入 “set expandtab”,这将为制表符插入空格。

您可以将这些设置放在主目录中的. vimrc(或 Windows 上的_vimrc)中,因此只需键入一次即可。