如何自动缩进新行?


15

我从事缩进程度不同的项目。在许多这样的项目中,由于文件的典型结构,大多数行至少缩进了两个级别(例如Java文件中的方法)。

这意味着在一行上时创建新行

public void something () {

将我的光标移到下一行,自动缩进,例如

public void something () {
    [cursor]

虽然我可以在新行中按几次Tab键以使其对齐,但是有没有更好的方法(可能自动执行)?

Answers:


12

可以结合使用autoindent选项和filetype插件来完成。

autoindent选项将在创建新行时复制您当前的缩进。因此,如果在开始新行时当前的缩进级别为4,则光标将在下一行移至相同的缩进级别。

~/.vimrc文件中,您将

set autoindent

您也可以使用该filetype插件根据文件类型自动确定下一个缩进级别。

您可以通过以下方式即时启用此功能

:filetype indent on

或者,在您的~/.vimrc文件中,您将

filetype plugin indent on

它将根据文件类型自动确定缩进。


6

使用:set cindent:set cin简称)或:set smartindent:set si简称)。如果您的行以大括号结尾,并且您单击Enter,则下一行将自动缩进一个级别。(这好于:set autoindent,后者仅缩进了同一级别的下一行。) cindent更适合于类似C的语言,而smartindent对于其他编程语言则更加通用。

量和缩进的类型是由控制:set shiftwidth=…:set tabstop=…:set expandtab


'smartindent'已弃用,因此这不是最佳选择。它已取代'cindent''cinoptions'于C这样的语言。但是,总的来说,文件类型缩进是一种解决方法,但它有'autoindent'一个后备功能。
jamessan

@jamessan smartindent并不被弃用,但cindent值得注意。我已经更新了答案。(谢谢!)
200_success

我还建议您看一下editorconfig.org 。当然,有一个vim插件(和许多其他编辑器),这是让您的编辑器默认设置在VCS上的一种好方法
Cyber​​ Oliveira

0

在文件底部,我正在使用:

# vim: ts=2 sw=2 sts=2 sr noet st ai si

例如Dockerfile

FROM centos-7
RUN ...
CMD ...

# vim: ts=2 sw=2 sts=2 sr noet st ai si

如果只想保留缩进,请使用 # vim: st ai si

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.