在 Vim 中,自动缩进(autoindent
)是基于当前行的缩进来设定新行的缩进。然而,如果你想要在某些情况下(比如函数体内部)避免这种自动缩进,你可能需要使用更高级的缩进插件或者自定义你的缩进规则。
不过,对于你描述的问题,有几种可能的解决方案:
- 使用
noautoindent
:
虽然你提到 autoindent
已经被设置了,但你可以尝试在函数体内部临时关闭它。这通常不是推荐的做法,因为它需要你在每次写函数体时手动更改缩进设置。 - 使用
cindent
或 smartindent
:
这些选项提供了更智能的缩进行为,但可能仍然不能完全满足你的需求。 - 使用插件:
例如,使用像 indentLine
这样的插件可以帮助你更清晰地看到缩进,但它不会改变缩进的行为。要更改缩进行为,你可能需要使用如 YAIndent
、Vim-Autoformat
或其他支持自定义缩进规则的插件。 - 自定义
indentexpr
或 indentkeys
:
你可以通过自定义 indentexpr
或 indentkeys
选项来精确控制缩进的行为。这需要对 Vim 的缩进机制有深入的了解,并且可能需要编写一些 Vim 脚本。 - 使用
filetype indent on/off
:
如果你只希望在特定类型的文件中更改缩进行为,你可以使用 filetype indent on/off
命令。但是,这通常用于完全启用或禁用缩进,而不是微调它。 - 使用映射(Mappings):
你可以创建一个映射,当在函数体内部按下回车时,它会自动将光标移回到你想要的缩进位置。但是,这种方法可能需要一些工作来确保它在所有情况下都能正确工作。
对于你的具体情况,一个可能的解决方案是检查你的 Vim 是否已经加载了某种自动缩进插件(比如 cindent
或 smartindent
),这些插件可能正在覆盖你的 autoindent
设置。你可以通过运行 :scriptnames
来查看已加载的脚本和插件。
如果问题仍然存在,并且你只想在函数体内部禁用自动缩进,那么你可能需要深入研究 Vim 的缩进机制,并考虑使用自定义的 indentexpr
或 indentkeys
。但是请注意,这可能需要相当多的时间和努力来正确实现。