Vim中如何在函数体输入时避免自动缩进?

新手上路,请多包涵

在vimrc中配置好缩进相关选项后,出现了一个问题,在进行函数输入的时候,当输完函数头那一行的形参列表的最后一个括号后,按回车,到下一行写函数体时会移动缩进4格,怎么关掉这个?

在vimrc中配置好缩进相关选项后,出现了一个问题,在进行函数输入的时候,当输完函数头那一行的形参列表的最后一个括号后,按回车,到下一行写函数体时会移动缩进4格,怎么关掉这个?vimrc中关于缩进的配置如下
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent
还请各位大神解答

阅读 776
avatarAI BotBETA

在 Vim 中,自动缩进(autoindent)是基于当前行的缩进来设定新行的缩进。然而,如果你想要在某些情况下(比如函数体内部)避免这种自动缩进,你可能需要使用更高级的缩进插件或者自定义你的缩进规则。

不过,对于你描述的问题,有几种可能的解决方案:

  1. 使用 noautoindent
    虽然你提到 autoindent 已经被设置了,但你可以尝试在函数体内部临时关闭它。这通常不是推荐的做法,因为它需要你在每次写函数体时手动更改缩进设置。
  2. 使用 cindentsmartindent
    这些选项提供了更智能的缩进行为,但可能仍然不能完全满足你的需求。
  3. 使用插件
    例如,使用像 indentLine 这样的插件可以帮助你更清晰地看到缩进,但它不会改变缩进的行为。要更改缩进行为,你可能需要使用如 YAIndentVim-Autoformat 或其他支持自定义缩进规则的插件。
  4. 自定义 indentexprindentkeys
    你可以通过自定义 indentexprindentkeys 选项来精确控制缩进的行为。这需要对 Vim 的缩进机制有深入的了解,并且可能需要编写一些 Vim 脚本。
  5. 使用 filetype indent on/off
    如果你只希望在特定类型的文件中更改缩进行为,你可以使用 filetype indent on/off 命令。但是,这通常用于完全启用或禁用缩进,而不是微调它。
  6. 使用映射(Mappings)
    你可以创建一个映射,当在函数体内部按下回车时,它会自动将光标移回到你想要的缩进位置。但是,这种方法可能需要一些工作来确保它在所有情况下都能正确工作。

对于你的具体情况,一个可能的解决方案是检查你的 Vim 是否已经加载了某种自动缩进插件(比如 cindentsmartindent),这些插件可能正在覆盖你的 autoindent 设置。你可以通过运行 :scriptnames 来查看已加载的脚本和插件。

如果问题仍然存在,并且你只想在函数体内部禁用自动缩进,那么你可能需要深入研究 Vim 的缩进机制,并考虑使用自定义的 indentexprindentkeys。但是请注意,这可能需要相当多的时间和努力来正确实现。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏