vim 中的半工作 Graphviz 点行为

Half-working Graphviz dot behavior in vim

我在 Windows 上使用 Vim 7.4,Vim Graphviz 点文件的缩进似乎无法正常工作。

如果我取消整个文件的缩进,突出显示所有文件,然后使用 =,一切都可以缩进。但是当我打字时,所有内容都会自动转到最左边的列(没有缩进)。

这是一个示例文件,以防我输入错误:

digraph "test" {
    "node1" -> "node2";
    "node2" -> "node3";
}

点文件的语法突出显示效果很好,其他文件(Java、XML 等)中的缩进也是如此。

这可能是因为您没有设置 smartindentcindent

检查

的输出
:set smartindent?
:set cindent?

如果他们分别return nosmartindentnocindent,则添加

set smartindent

(或 set cindent)将解决此问题。

来自 :h smartindent

Do smart autoindenting when starting a new line. Works for C-like programs, but can also be used for other languages.


  1. 那为什么缩进适用于其他文件类型?这是因为为这些文件类型设置了旨在告诉 vim 如何缩进称为 indentexpr 的给定行的特殊函数(在编辑 java 文件时尝试 :verb set indentexpr?)。 :h indentexpr :

It is used when a new line is created, for the |=| operator and in Insert mode as specified with the 'indentkeys' option. When this option is not empty, it overrules the 'cindent' and 'smartindent' indenting.

  1. 为什么缩进适用于 =?来自 :h =:

Filter {motion} lines through the external program given with the 'equalprg' option. When the 'equalprg' option is empty (this is the default), use the internal formatting function |C-indenting| and |'lisp'|. But when 'indentexpr' is not empty, it will be used instead.