Vim 保持不缩进

Vim keeps unindenting

Vim 保持取消缩进我想保持缩进的行,如果我不在上面写任何东西的话......我举一个例子,其中 |是插入符号。

  1. 插入符号缩进,我按回车键

    if expression:
        print("hello world")
        |
    
  2. 插入符在下一行缩进,现在我按向上箭头

    if expression:
        print("hello world")
    
        |
    
  3. 现在插入符号不再缩进,发生了什么?

    if expression:
        print("hello world")
    |
    

那么如何保持缩进?

这是 vim 的预期行为。由于您已跳过下一行,因此它假定您不想写入该特定代码块

在我的安装中,它保留了缩进(至少对于 C 文件)。

您应该尝试在正常模式下使用 o 插入一个新行。

然后根据文档(参见:help o):

When 'autoindent' is on, the indent for a new line is obtained from the previous line. When 'smartindent' or 'cindent' is on, the indent for a line is automatically adjusted for C programs.

您可能只使用了 'autoindent' 选项。

有关详细信息,请参阅 :help indenting

对于非类 C 语言,您可能需要依赖 $VIMRUNTIME/indent 文件。

假设您的语言受支持,您可以通过添加 :set filetype indent on 来启用它。否则,您将不得不编写自己的缩进文件。

正如其他人所指出的,如果缩进是自动添加的,Vim 会故意删除空行的缩进。但是,如果您在该行中插入了任何文本,即使您将其删除,不会 发生这种情况。因此,根据具体情况,如果要保留空行的缩进,只需插入一些文本并使用退格键将其删除。如果您总是想要保留映射,映射也可以:

inoremap <CR> <CR>x<BS>