关于空格:Tab键== 4个空格并在Vim中的花括号后自动缩进

Tab key == 4 spaces and auto-indent after curly braces in Vim

如何使ViVim从不使用制表符(将空格转换为制表符,坏!),使tab键==4个空格,并像Emacs那样在大括号块后自动缩进代码?

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

我见过其他与此相关的问题,但似乎总是有点偏离我想要的。


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

1
2
3
4
5
6
7
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:文件中:

1
2
3
4
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab

帮助文件需要一点时间来适应,但是你读得越多,VIM就越能:

1
:help smartindent

更好的是,您可以在源代码中嵌入这些设置以实现可移植性:

1
:help auto-setting

要查看当前设置:

1
:set all

正如GrayWh在评论中指出的那样,smartindent已经被cident所取代,cident"更聪明地工作",尽管它仍然主要用于具有C类语法的语言:

1
:help C-indenting

< /打击>


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

1
set expandtab ts=4 sw=4 ai

您可以用整个文件中的空格替换所有选项卡

1
:%retab


获得文件类型特定缩进的最佳方法是在VIMRC中使用filetype plugin indent on。例如,您可以在.vim/ftplugin/c.vim中指定set sw=4 sts=4 et之类的内容,而不必使所有正在编辑的文件都具有全局性,其他非C类型的语法也将得到正确的缩进(甚至是lisps)。


在大多数文件中有4个空间选项卡,在AcMcfile中包含8个真正的Tabar char,在包括C/C++的各种文件中自动缩进,将其放入EDOCX1×3文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
" 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:添加上述配置

1
2
3
4
filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab

第三步:保存文件,按SHIFT+ZZ


推荐的方法是使用基于文件类型的缩进,如果还不够的话,只使用smartindent和cindent。

将以下内容添加到.vimrc中

1
2
3
4
set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on

希望它能成为一个不同的答案。


编辑您的~/.vimrc

1
$ vim ~/.vimrc

添加以下行:

1
2
3
4
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab

从vim wiki:

1
2
3
:set tabstop=4
:set shiftwidth=4
:set expandtab

自动缩进基于当前语法模式。我知道,如果您正在编辑foo.java,那么输入{并点击enter将缩进以下行。

对于选项卡,有两种设置。在vim中,输入冒号,然后输入"set tabstop=4",将选项卡设置为四个空格。再次单击冒号并键入"set expandtab",这将为选项卡插入空格。

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