当前位置: 首页 > 知识库问答 >
问题:

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

虞俊美
2024-06-27

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

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

共有1个答案

程举
2024-06-27

在 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。但是请注意,这可能需要相当多的时间和努力来正确实现。

 类似资料:
  • 问题内容: “ SQL语句缩进最佳实践”似乎是编写SQL块的公认格式。 是否有一个符合该标准的Vim缩进/语法文件,或者至少是紧密文件? 目前,我的Vim几乎保留了所有内容,仅缩进了某些关键字。 问题答案: “ SQLUtilities:SQL实用程序-格式化,生成- 列列表,数据库过程 ”具有SQL Utilities插件,该插件具有功能。与“如何在Vim中自动格式化和自动大写SQL ”是一个相

  • 问题内容: 我正在使用Vim并编辑Python脚本。 通常,自动缩进效果很好,但是当我开始换行并输入’#’来输入注释时,Vim会为我取消缩进。 例如,如果有 然后按回车,Vim会正确缩进 但是,如果我没有输入,而是输入,它会自动缩进 我的.vimrc文件如下。有人知道为什么会这样吗? 问题答案: 设置使Vim表现得像您为我描述的那样,而使用(这就是我倾向于使用的)Vim表现得像您希望的那样。 更新

  • 本文向大家介绍Python 自动补全(vim),包括了Python 自动补全(vim)的使用技巧和注意事项,需要的朋友参考一下 一、vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.python 模块内函数,变量补全 5.from module impor

  • Lodash castArray函数没有任何特殊之处。有没有什么方法可以在没有任何外部库的情况下,利用最新的语言功能解决这个问题,但时间很短? 如果您不熟悉该任务: 有没有办法在没有类型检查的情况下做到这一点?请注意,我寻找最短的等效物ES6。

  • 在上一节 “Vim 的模式中” 我们知道了在 Vim 中如何移动光标。其实除了 h,l,j,k 键之外还有两种操作可以让我们移动光标: 键 含义 h 左移 l 右移 j 下移 k 上移 ^/0 移动到行首 $ 移动到行尾 以上就是Vim中光标移动最基础的快捷键。但是初学者可能会觉得很别扭。因为现在大家更加习惯于键盘上的上下左右键,这更符合现在人的思维。这里需要对此做个解释,便于大家更加能够理解 V

  • 本文向大家介绍如何正确设置VIM自动缩进以编辑Python文件?,包括了如何正确设置VIM自动缩进以编辑Python文件?的使用技巧和注意事项,需要的朋友参考一下 要为VIM中的python文件设置autoindent,请使用以下配置: 示例 将此配置添加到主文件夹中的.vimrc文件。

  • 在我的vim配置中,我映射了,以运行phpunit测试。 但有时我想使用phpunit——filter来运行特定的测试 我们是否可以在vim中自动填写函数名?

  • 问题内容: 当使用注释使Java代码缩进时,vim坚持这样缩进: 我希望注释与方法定义在同一列中,但似乎无法找到一种告诉vim做到这一点的方法,除了可能使用缩进表达式外,但我不确定是否可以将其与经常碰碰碰。 编辑:文件类型插件已经打开,我对缩进插件有点困惑。接受的答案可能有点破烂,但对我也有用。 问题答案: 编辑:我不能删除自己的答案,因为它已经被接受,但是@pydave的答案似乎是更好(更可靠)