1372

viを作成するにはどうすればよいですか?Vimはタブを使用せず(スペースをタブに変換します、悪いです!)、タブキー== 4スペースにし、 Emacsのように中括弧ブロックの後にコードを自動的にインデントしますか?

また、これらの設定を保存して、再度入力する必要がないようにするにはどうすればよいですか?

これに関連する他の質問を見たことがありますが、それはいつも私が望むものから少し外れているようです。

4

12 に答える 12

2049

他のいくつかの回答で指摘されているように、現在推奨される方法は 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:][1] ファイルで:
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab

ヘルプ ファイルに慣れるまでに少し時間がかかりますが、読めば読むほど Vim は次のようになります。

:help smartindent

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

:help auto-setting

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

:set all

コメントで grayw が指摘しているように、smartindent は「より巧妙に機能する」cindent に置き換えられましたが、主に C に似た構文の言語向けです。

:help C-indenting
于 2008-10-24T17:45:13.557 に答える
260

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

set expandtab ts=4 sw=4 ai

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

:%retab
于 2008-11-27T05:42:13.667 に答える
92

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

于 2009-01-04T21:09:33.780 に答える
36

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

以下を .vimrc に追加します

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

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

于 2014-05-02T10:35:06.630 に答える
15

~/.vimrc を編集します

$ vim ~/.vimrc

次の行を追加します。

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
于 2015-10-08T01:26:41.920 に答える
13

VIM wikiから:

:set tabstop=4
:set shiftwidth=4
:set expandtab
于 2015-11-18T19:08:54.550 に答える
11

自動インデントは、現在の構文モードに基づいています。Foo.java を編集している場合は、次の行に a を入力し{Enterインデントを押します。

タブに関しては、2 つの設定があります。Vim 内で、コロンを入力してから "set tabstop=4" を入力すると、タブが 4 つのスペースとして表示されるように設定されます。もう一度コロンを押して「set expandtab」と入力すると、タブのスペースが挿入されます。

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

于 2008-10-24T17:48:21.520 に答える