web-dev-qa-db-ja.com

Tabキー== 4スペースとVimの中括弧の後に自動インテント

vi - Vim はタブを使わず(スペースをタブに変換するのは悪いことです)、タブキーを== 4スペースにし、中括弧ブロックの後に自動的にコードをインデントします Emacs しますか?

また、入力しなくても済むように、これらの設定を保存するにはどうすればよいですか。

私はこれに関連する他の質問を見ました、しかしそれは私が欲しいものから常に少しずれているようです。

1170
mmcdole

以下のいくつかの答えで指摘されているように、現在推奨されている方法はsmartindentを使うことではなく、代わりに以下を使うことです(あなたの .vimrc

filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab

.vimrc: ファイルに

set smartindent
set tabstop=4
set shiftwidth=4
set expandtab

ヘルプファイルは慣れるのに少し時間がかかりますが、あなたが読むほど、Vimは良くなります:

:help smartindent

さらに良いことに、移植性のためにこれらの設定をソースに埋め込むことができます。

:help auto-setting

現在の設定を確認するには:

:set all

コメントで指摘されている graywh が指摘するように、smartindentはcindentに置き換えられました。

:help C-indenting
1732
Ken

タブとスペースの両方を使用するファイルを開いた場合、

set expandtab ts=4 sw=4 ai

ファイル全体ですべてのタブをスペースに置き換えることができます。

:%retab
217
netjeff

ファイルタイプ固有のインデントを取得する最良の方法は、vimrcでfiletype plugin indent onを使用することです。次に、.vim/ftplugin/c.vimでset sw=4 sts=4 etのようなものを指定できます。たとえば、編集中のすべてのファイルに対してグローバルにする必要はなく、他の非Cタイプの構文も正しくインデントされます- (偶数lisps)

87
graywh

ほとんどのファイルに4スペースのタブ、Makefileの実際の8ワイドのタブ文字、そしてC/C++を含むさまざまなファイルの自動インデントを設定するには、これを~/.vimrcファイルに入れます。

" Only do this part when compiled with support for autocommands.
if has("autocmd")
    " Use filetype detection and file-based automatic indenting.
    filetype plugin indent on

    " Use actual tab chars in Makefiles.
    autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif

" For everything else, use a tab width of 4 space chars.
set tabstop=4       " The width of a TAB is set to 4.
                    " Still it is a \t. It is just that
                    " Vim will interpret it to be having
                    " a width of 4.
set shiftwidth=4    " Indents will have a width of 4.
set softtabstop=4   " Sets the number of columns for a TAB.
set expandtab       " Expand TABs to spaces.
50
Shervin Emami

Ubuntuのような多くのLinuxシステムでは、.vimrcファイルはデフォルトでは存在しないので、最初にそれを作成することが推奨されます。

ホームディレクトリに存在する.viminfoファイルを使用しないでください。それは異なった目的のために使われます。

ステップ1:あなたのホームディレクトリに行く

cd ~

ステップ2:ファイルを作成する

vim .vimrc

ステップ3:上記の設定を追加する

filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab

ステップ3:を押してファイルを保存する Shift + ZZ

49
Erick

推奨される方法は、ファイルタイプに基づくインデントを使用し、それが十分でない場合にのみsmartindentとcindentを使用することです。

以下を.vimrcに追加してください。

set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on

別の答えとして役立つことを願っています。

28
Chaudhry Junaid

〜/ .vimrcを編集してください

$ vim ~/.vimrc

以下の行を追加してください。

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
11
Yusuf Ibrahim

VIM wikiから

:set tabstop=4
:set shiftwidth=4
:set expandtab
9
User

自動インデントは現在の構文モードに基づいています。あなたがFoo.Javaを編集しているならば、{を入力してヒットすることを私は知っています Enter 次の行を字下げします。

タブに関しては、2つの設定があります。 Vimの中で、コロンを入力してから "set tabstop = 4"とすると、タブは4つのスペースとして表示されます。もう一度コロンを打ち、タブのためのスペースを挿入する "set expandtab"とタイプしてください。

これらの設定はホームディレクトリの.vimrc(またはWindowsでは_vimrc)に入れることができるので、一度入力するだけで済みます。

6
Joey Gibson