在vim中使用C自动缩进空格?

zxc*_*xcv 82 c vi vim coding-style

使用Eclipse和java,我有点被宠坏了.我开始使用vim在linux环境中进行C编码,有没有办法让vim自动为块做适当的间距?

因此在输入{下一行后将有2个空格缩进,并且该行的返回将使它保持相同的缩进,并且}将向后移动2个空格?

dav*_*avr 132

这两个命令应该这样做:

:set autoindent
:set cindent
Run Code Online (Sandbox Code Playgroud)

对于奖励积分,将它们放在linux上的主目录中名为.vimrc的文件中

  • 我依赖Vim的捆绑缩进脚本(:filetype indent on),这比仅使用'cindent'要好**. (17认同)
  • 我还建议将它们放入〜.vim/ftplugin/c.vim中,这样你就不会一直使用cindent,而只是用于C/C++文件. (12认同)
  • 为什么文件类型缩进比使用cindent更好,这里有很好的解释:http://vim.wikia.com/wiki/Indenting_source_code#Methods_for_automatic_indentation (3认同)

Com*_*ger 54

在vim中写了关于标签的所有内容,它提供了一些你没有问过的有趣的东西.要自动缩进大括号,请使用:

:set cindent
Run Code Online (Sandbox Code Playgroud)

要缩进两个空格(而不是八个空格的一个制表符,vim默认值):

:set shiftwidth=2
Run Code Online (Sandbox Code Playgroud)

要阻止vim将八个空格转换为制表符:

:set expandtab
Run Code Online (Sandbox Code Playgroud)

如果您想要更改文本块的缩进,请使用<和>.我通常将其与块选择模式结合使用(v,选择一个文本块,<或>).

(我试着告诉你使用两个空格的缩进,因为我(和大多数其他人)发现它很难读,但这是另一个讨论.)

  • 除了shiftwidth之外,您还错过了更换softtabstop. (3认同)

ram*_*ion 8

很多vim的功能(如autoindentcindent)默认关闭.要真正看到vim能为你做什么,你需要一个体面的~/.vimrc.

一个好的入门者是$VIMRUNTIME/vimrc_example.vim.如果你想尝试一下,请使用

:source $VIMRUNTIME/vimrc_example.vim
Run Code Online (Sandbox Code Playgroud)

什么时候在vim.

我实际上建议只是将内容复制到你的内容,~/.vimrc因为它评论很好,是一个开始学习如何使用vim的好地方.你可以这样做

:e $VIMRUNTIME/vimrc_example.vim
:w! ~/.vimrc
Run Code Online (Sandbox Code Playgroud)

这将覆盖你的当前~/.vimrc,但是如果你所拥有的只有Davr建议的缩进设置,我就不会这么做,因为示例vimrc也将为你处理.有关示例的完整演练以及它为您所做的工作,请参阅:help vimrc-intro.


Jam*_*Gen 6

简单地运行:

user@host:~ $ echo set autoindent >> .vimrc
Run Code Online (Sandbox Code Playgroud)


小智 5

我认为最好的答案实际上在 vim wikia 上有解释:

http://vim.wikia.com/wiki/Indenting_source_code

请注意,它建议不要使用“set autoindent”。我在这个解释中发现的最好的功能是能够设置每个文件的设置,例如,如果您使用 python 和 C++ 进行编程,这尤其有用,因为您需要 4 个空格用于前者的制表符,2 个空格用于表示前者的制表符。后者中的空格。