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


85

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

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

回答:


134

これらの2つのコマンドはそれを行う必要があります:

:set autoindent
:set cindent

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


12
また、これらを〜.vim / ftplugin / c.vimに入れて、常にcindentを使用するのではなく、C / C ++ファイルにのみ使用することをお勧めします。
greywh 2009年

@graywh:pl、php、cpp、as、java、および同じインデントを付けたい他のすべてのファイルについてはどうですか?それぞれに個別の設定ファイルを作成する必要がありますか?
davr 2010

17
私はVimのバンドルされたインデントスクリプト(:filetypeインデントオン)に依存しています。これは、常に「cindent」を使用するよりもはるかに優れています。
greywh 2010

3
ファイルタイプのインデントははcindentを使用するよりも優れている理由であるだけでなく、ここで説明:vim.wikia.com/wiki/...
Jayen

1
自動インデントの場合は、省略形:set ai
Iam Zesh 2014年

56

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

:set cindent

2つのスペースをインデントするには(8つのスペースの1つのタブではなく、vimのデフォルト):

:set shiftwidth=2

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

:set expandtab

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

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


とても素敵なブログ。私はまだvimにかなり慣れていませんが、そこに良いリソースがあることを知ってうれしいです。
zxcv 2008

3
また、shiftwidthに加えてsofttabstopの変更も見逃しました。
greywh 2009年

8

多くの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


6

単に実行します:

user@host:~ $ echo set autoindent >> .vimrc

1
私は反対票を投じた人ではありませんでしたが、単に「set autoindent」が「{」と「}」を入力したときにそれ自体の自動インデントを行わず、間隔を自動的に2スペースに設定しないためと考えられます。これは彼らが求めたものです。
ビクターザマニアン2013年

3

最良の答えは実際にはvimwikiaで説明されていると思います:

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

「setautoindent」の使用はお勧めしませんのでご注意ください。この説明で私が見つけたすべての最高の機能は、ファイルごとの設定を設定できることです。これは、たとえば、PythonとC ++でプログラミングする場合に特に便利です。たとえば、前者のタブに4つのスペース、後者のスペース。


0

スペースとタブのこの由緒ある説明を常に覚えておいてください。

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


2
その男の議論とは何ですか?TAB文字を使用せず、代わりにハードコードされたスペースで埋めることで、すべての人の問題を解決する方法には従いません。これにより、たとえば、ファイルを開いて、そのインデントの幅を自分の好みに合わせて表示することができなくなります。
thomasrutter 2009年

1
この男の解決策ははるかに優れています:)blogs.msdn.com/cyrusn/archive/2004/09/14/229474.aspx
thomasrutter

-1

試してみてください:

sw = 2に設定

ts = 2を設定します

smartindentを設定する


ヘルプによると、cindentはsmartindentよりも優れていますが、Cのようなコードでのみ機能します。
thomasrutter 2009年

smartindentは非推奨になりました(Cのようなコードのみでした)。ファイルタイプのインデントスクリプトははるかに優れています。
greywh 2010

権威ある情報源がsmartindentの非推奨ステータスを述べているwiki以外の@graywh?
memeplex 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.