题
我已经被 Eclipse 和 java 宠坏了。我开始在linux环境下使用vim进行C编码,有没有办法让vim自动为块做适当的间距?
因此,在输入 { 后,下一行将缩进 2 个空格,并且该行上的回车将使其保持相同的缩进,而 } 将向后移动 2 个空格?
解决方案
这两个命令应该可以做到这一点:
:set autoindent
:set cindent
为了获得奖励积分,请将它们放在 linux 上主目录中名为 .vimrc 的文件中
其他提示
我 写了所有关于 vim 中选项卡的内容, ,其中提供了一些您没有询问的有趣的事情。要自动缩进大括号,请使用:
:set cindent
缩进两个空格(而不是 vim 默认的一个制表符八个空格):
:set shiftwidth=2
为了防止 vim 将八个空格转换为制表符:
:set expandtab
如果您想更改文本块的缩进,请使用 < 和 >。我通常将其与块选择模式结合使用(v,选择文本块,< 或 >)。
(我试图劝你不要使用两空格缩进,因为我(和大多数其他人)发现它很难阅读,但这是另一个讨论。)
很多 vim 的功能(比如 autoindent
和 cindent
) 默认情况下处于关闭状态。要真正了解 vim 能为你做什么,你需要一个像样的 ~/.vimrc
.
一个很好的入门者在 $VIMRUNTIME/vimrc_example.vim
. 。如果您想尝试一下,请使用
:source $VIMRUNTIME/vimrc_example.vim
当在 vim 中时。
我实际上建议将内容复制到您的 ~/.vimrc
因为它得到了很好的评论,并且是开始学习如何使用 vim 的好地方。你可以通过以下方式做到这一点
:e $VIMRUNTIME/vimrc_example.vim
:w! ~/.vimrc
这将覆盖您当前的 ~/.vimrc
, ,但如果你所拥有的只是 Davr 建议的缩进设置,我不会担心,因为示例 vimrc 也会为你处理这个问题。有关该示例的完整演练及其对您的作用,请参阅 :help vimrc-intro
.
只需运行:
user@host:~ $ echo set autoindent >> .vimrc
我认为最好的答案实际上在 vim wikia 上有解释:
http://vim.wikia.com/wiki/Indenting_source_code
请注意,它建议不要使用“设置自动设置”。我在此解释中发现的最佳功能是能够设置每个文件设置,例如,如果您在Python和C ++中进行编程,那么这将特别有用后者的空间。
永远记住这个关于空格+制表符的古老解释:
尝试:
设置sw=2
设置 ts=2
设置智能缩进