web-dev-qa-db-ja.com

vimでCでスペースを自動インデントしますか?

私は、EclipseとJavaを使用していくぶん甘やかされてきました。 Linux環境でvimを使用してCコーディングを開始しましたが、vimにブロックの適切な間隔を自動的に実行させる方法はありますか?

{を入力した後、次の行には2つのスペースがインデントされ、その行に戻ると同じインデントが保持され、}が2つのスペースに戻りますか?

82
zxcv

次の2つのコマンドで実行できます。

:set autoindent
:set cindent

ボーナスポイントについては、Linuxのホームディレクトリにある.vimrcというファイルに保存してください。

132
davr

I vimのタブについてすべて書きました 。これは、あなたが尋ねなかったいくつかの興味深いことを与えます。ブレースを自動的にインデントするには、次を使用します。

:set cindent

2つのスペースをインデントするには(vimのデフォルトである8つのスペースの1つのタブの代わりに):

:set shiftwidth=2

Vimが8つのスペースをタブに変換しないようにするには:

:set expandtab

テキストブロックのインデントを変更する場合は、<と>を使用します。私は通常、これをブロック選択モードと組み合わせて使用​​します(v、テキストのブロックを選択、<または>)。

(私(および他のほとんどの人)は読みにくいと感じているため、2スペースのインデントを使用しないようにしようと思いますが、それは別の議論です。)

54

Vimの多くの機能(autoindentcindentなど)はデフォルトでオフになっています。 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

8
rampion

単に実行する:

[email protected]:~ $ echo set autoindent >> .vimrc
6
JamesM-SiteGen

最良の答えは、vim wikiaで実際に説明されていると思います。

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

「set autoindent」の使用は推奨されないことに注意してください。この説明で私が見つけるすべての最高の機能は、ファイルごとの設定を設定できることです。これは、たとえばpythonおよびC++前者のタブにはスペース、後者のスペースには2。

3
user809472

spaces + Tabsのこの由緒ある説明を常に覚えておいてください。

http://www.jwz.org/doc/tabs-vs-spaces.html

0
mike511