新しい行で自動的にインデントするにはどうすればよいですか?


15

私はさまざまなレベルのインデントでプロジェクトに取り組んでいます。これらのプロジェクトの多くでは、ファイルの一般的な構造により、ほとんどの行は少なくとも2レベルインデントされます(Javaファイルのメソッドなど)。

これは、回線上で新しい行を作成することを意味します

public void something () {

次のように、自動的にインデントされた次の行にカーソルを移動します

public void something () {
    [cursor]

新しい行でTabキーを数回押して整列させることができますが、これを行うより良い方法はありますか(自動的に可能)?

回答:


11

これは、autoindentオプションとfiletypeプラグインの組み合わせを使用して実行できます。

このautoindentオプションは、新しい行を作成するときに現在のインデントをコピーします。したがって、新しい行を開始するときに現在のインデントレベルが4の場合、カーソルは次の行の同じインデントレベルに移動します。

あなたの~/.vimrcファイルに、あなたは

set autoindent

filetypeプラグインを使用して、ファイルタイプに基づいて次のインデントレベルを自動的に決定することもできます。

これをオンザフライで有効にできます

:filetype indent on

または、あなたの~/.vimrcファイルにあなたが置くだろう

filetype plugin indent on

ファイルタイプに基づいて自動的にインデントを決定します。


6

:set cindent:set cin略して)または:set smartindent(略して)を使用し:set siます。行が開き中かっこで終了し、を押すとEnter、次の行が1レベルだけ自動的にインデントされます。(これは:set autoindent同じレベルで次の行をインデントするだけの)よりも優れています。) cindentCに似た言語に合わせて調整されている一方smartindentで、他のプログラミング言語で使用するための汎用性があります。

インデントの量と種類はによって制御され:set shiftwidth=…:set tabstop=…および:set expandtab


'smartindent'推奨されないため、これは最良の選択ではありません。それは置き換えられています'cindent'し、'cinoptions'C-ような言語のために。ただし、一般的に、'autoindent'フォールバックとして、ファイルタイプのインデントを使用する方法があります。
ジェームスサン

@jamessan smartindentは非推奨ではありませんが、cindent注目に値します。答えを更新しました。(ありがとう!)
200_success

また、editorconfig.orgをご覧になることをお勧めします 。もちろん、vim(および他の多くのエディター)用のプラグインがあり、VCSでエディターのデフォルトを維持する素晴らしい方法です
Cyber​​ Oliveira

0

ファイルの最後に、私は使用しています:

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Dockerfile

FROM centos-7
RUN ...
CMD ...

# vim: ts=2 sw=2 sts=2 sr noet st ai si

インデントのみを保持する場合は、使用します # vim: st ai si

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.