协慌网

登录 贡献 社区

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

我如何制作vi - Vim从不使用制表符(将空格转换为制表符,不好!),制作 Tab 键 == 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 类型语法将正确缩进,太(甚至是 lisps)