【发布时间】:2012-04-15 12:10:14
【问题描述】:
我的 Vim 配置文件中有 set smartindent,但我想修改 Vim 中自动制表符插入的一个方面。例如,假设我开始输入一个 for 循环:
1. for (auto& foo : bar) {
2.
点击回车后,Vim 会在第 2 行的开头插入一个制表符,这正是我想要的。但是如果意识到我需要跳转到文件中的其他位置来修改某些内容,然后返回到第 2 行,则该选项卡不再存在。时不时地按几次 Tab 并不是什么大问题,因为当我编写一个包含大量缩进的复杂算法时,不得不多次混搭 Tab 键可能会令人沮丧。
在执行自动缩进时,让 Vim 实际上写入一个选项卡到当前缓冲区的最佳解决方案是什么,而不是只让我有机会在我从上一个返回时插入选项卡行吗?
感谢您的帮助!
【问题讨论】:
-
这个在很多地方都讨论过很多次了。检查this问题,它可能会帮助你。
-
接受的答案所建议的 hack 问题是,当我输入“}”时,缩进不会自动向左移动一个单位。此外,在缩进消失的空行上使用
cc或S仍然会使我处于行首。 -
使用
filetype indent on而不是smartindent很有可能获得更好的结果。cc和S在这种情况下应该可以工作。来自 freenode 上的#vim 帮助频道:“你不是说愚蠢的吗?说真的,'smartindent' 是类 C 语法的过时选项。它已被 'cindent' 取代,并且设置 'cindent' 也会覆盖'smartindent'。Vim 对许多语言提供了开箱即用的缩进支持,并且在你的 .vimrc 中设置 'smartindent'(或 'cindent')可能会干扰这一点。使用 'filetype plugin indent on'并且快乐。”
标签: vim autocomplete auto-indent tabstop