我要输入
tag {
}
当我在{
之后按'enter'时,我的光标缩进了2个空格(在第3列中)。 (选项卡对我来说是2个空格。)然后,当我键入}
(仍在第3列)时,我希望}
移至第1列。
当我在.cpp
文件中执行此操作时,光标会自动移动到第1列。
当我在另一个文件(本例中为.wiki
)中执行此操作时,它不会移动。 }
出现在第3列中。
我以为这是由'autoindent'和'smartindent'控制的,在wiki文件的情况下都可以设置。我想念什么?
我还可以提供其他哪些配置信息来帮助调试?如何比较cpp文件和wiki文件之间的配置选项?
(为清楚起见,请编辑:我正在使用vimwiki插件中定义的'.wiki'文件类型。)
答案 0 :(得分:1)
问题来自插件处理列表编辑的方式。这令人惊讶,因为tag { }
构造可能不应该被视为一个。要插入新的列表标记,该插件重新定义了一些映射,它们在:help vimwiki-lists
中进行了提及。即,o
和O
在正常模式下,<CR>
在插入模式下。与smartindent
进行交互时,它们映射为与事物具有几乎相同的行为:它们通过在新行上插入和删除虚拟字符来禁用缩进(例如,参见{{3} }。之所以可行,是因为:help smartindent
中的缩排仅在您在该行上键入第一行时才发生。
这可以通过删除相关的映射来禁用,但是这样做也会破坏插件的列表系统。要修复那个,您可以使用其他一些键来复制这些映射。
这可能值得与插件作者讨论,我认为出于缩进目的将所有内容都视为列表的一部分并不是他们真正想要的。