viを作成するにはどうすればよいですか?Vimはタブを使用せず(スペースをタブに変換します、悪いです!)、タブキー== 4スペースにし、 Emacsのように中括弧ブロックの後にコードを自動的にインデントしますか?
また、これらの設定を保存して、再度入力する必要がないようにするにはどうすればよいですか?
これに関連する他の質問を見たことがありますが、それはいつも私が望むものから少し外れているようです。
viを作成するにはどうすればよいですか?Vimはタブを使用せず(スペースをタブに変換します、悪いです!)、タブキー== 4スペースにし、 Emacsのように中括弧ブロックの後にコードを自動的にインデントしますか?
また、これらの設定を保存して、再度入力する必要がないようにするにはどうすればよいですか?
これに関連する他の質問を見たことがありますが、それはいつも私が望むものから少し外れているようです。
他のいくつかの回答で指摘されているように、現在推奨される方法は 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
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
関連して、タブとスペースの両方を使用するファイルを開いた場合、
set expandtab ts=4 sw=4 ai
ファイル全体ですべてのタブをスペースに置き換えることができます
:%retab
ファイルタイプ固有のインデントを取得する最良の方法はfiletype plugin indent on
、vimrc で使用することです。次に、たとえば .vim/ftplugin/c.vim のようなものを指定できます。set sw=4 sts=4 et
編集中のすべてのファイルに対してそれらをグローバルにする必要はなく、他の非 C タイプの構文も(LISP でさえ)正しくインデントされます。
推奨される方法は、ファイルタイプ ベースのインデントを使用し、それが十分でない場合にのみ smartindent と cindent を使用することです。
以下を .vimrc に追加します
set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on
別の答えとして役立つことを願っています。
~/.vimrc を編集します
$ vim ~/.vimrc
次の行を追加します。
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
VIM wikiから:
:set tabstop=4
:set shiftwidth=4
:set expandtab
自動インデントは、現在の構文モードに基づいています。Foo.java を編集している場合は、次の行に a を入力し{
てEnterインデントを押します。
タブに関しては、2 つの設定があります。Vim 内で、コロンを入力してから "set tabstop=4" を入力すると、タブが 4 つのスペースとして表示されるように設定されます。もう一度コロンを押して「set expandtab」と入力すると、タブのスペースが挿入されます。
これらの設定は、ホーム ディレクトリの .vimrc (Windows では _vimrc) に入れることができるので、一度入力するだけで済みます。