Tab键== 4个空格,并在Vim中的大括号后面自动缩进

如何使vi – Vim从来没有使用制表符(转换空间到制表符,坏!),使制表符键== 4空格,并自动缩进像Emacs的花括号块后代码?

另外,如何保存这些设置,以免再次input?

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

正如在下面的几个答案中已经指出的,现在首选的方法是不使用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 

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

 :help auto-setting 

要查看您当前的设置:

 :set all 

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

 :help C-indenting 

相关的,如果你打开一个同时使用制表符和空格的文件,假设你已经有了

 set expandtab ts=4 sw=4 ai 

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

 :%retab 

获得文件types特定缩进的最好方法是在vimrc中使用filetype plugin indent on 。 然后,你可以在.vim / ftplugin / c.vim中指定set sw=4 sts=4 et类的东西,而不必为所有正在编辑的文件创build全局文件,而其他非Ctypes的语法将被正确缩进, (甚至lisses)

要在大多数文件中使用4-space制表符,在Makefiles中使用真正的8-wide制表符char,并在包括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文件默认情况下不存在,所以build议您先创build它。

不要使用主目录中存在的.viminfo文件。 它用于不同的目的。

第1步:转到您的主目录

cd ~

第2步:创build文件

vim .vimrc

第3步:添加上述configuration

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

第3步:保存文件,按Shift + ZZ

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

将以下内容添加到.vimrc中

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

希望它有助于作为一个不同的答案。

来自VIM wiki :

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

编辑你的〜/ .vimrc

 $ vim ~/.vimrc 

添加以下几行:

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

自动缩进基于当前语法模式。 我知道,如果你正在编辑Foo.java,那么input一个{并敲击Enter就会缩进下面一行。

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

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

有些框外的答案,但我使用一个完全可编程的键盘,并有一个4空间macros设置为fn +选项卡。