回答:
以下のいくつかの回答で指摘されているように、ここで推奨される方法は、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はものの、依然として主にCに似た構文を持つ言語について、その「ワークスより賢く」はcindentに置き換えられました。
:help C-indenting
関連して、タブとスペースの両方を使用するファイルを開いた場合、
set expandtab ts=4 sw=4 ai
ファイル全体ですべてのタブをスペースに置き換えることができます
:%retab
ほとんどのファイルで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.
else
か?最後の行がすべてのケースでメイクファイル固有のものを上書きするように思えます
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。
Shift + ZZ
しないでください。.swpファイルが作成されます。使用しますwq
。
Ctrl-Z
別の話です...)
vim -n <file>
。スワップファイルは、保存時に生成されるものではありません。スワップファイルは、突然終了した編集セッションの回復に役立つため、その目的はかなり損なわれます。
推奨される方法は、ファイルタイプベースのインデントを使用し、それが十分でない場合のみsmartindentおよびcindentを使用することです。
以下を.vimrcに追加してください
set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on
それが別の答えとして役立つことを願っています。
まず、TabVim のキーを手動インデントに使用しないでください。Vimには、インデントの量を手動で増減するための挿入モードのコマンドのペアがあります。これらのコマンドはCtrl-TおよびCtrl-Dです。これらのコマンドはtabstop
、shiftwidth
およびの値を監視し、expandtab
スペースとタブの正しい混合を維持します(タブの最大数とそれに続く必要なスペースの数)。
第二に、自動インデントを使用する場合は、これらの手動インデントキーをあまり使用する必要はありません。
場合Ctrl-Tの代わりに、Tab気になるあなたを、あなたはそれを再マップすることができます:
:imap <Tab> ^T
次のように再マッピングShift-Tabして、Ctrl-D強制解除することもできます。
:imap <S-Tab> ^D
ここで、^ Tおよび^ Dは、として挿入できるリテラル制御文字ですCtrl-VCtrl-T。
このマッピングを行っても、を使用してバッファにリテラルTabを入力できますCtrl-VTab。:set expandtab
オンにしても、これを行うと、展開されていないタブ文字が表示されることに注意してください。
<Tab>
マップと同様の効果がを使用して実現さ:set smarttab
れます。これにより、行の先頭のバックスペースもスマートに動作します。
ではsmarttab
際モード、Tab行の先頭にない使用されている、それは特別な意味を持ちません。これは上記のTabtoのマッピングとは異なりますCtrl-T。なぜなら、Ctrl-T(挿入モードで)行のどこかで使用すると、その行のインデントが増えるからです。
その他の有用なマッピングは次のとおりです。
:map <Tab> >
:map <S-Tab> <
これで、いくつかの行を選択し、ヒットTabしてインデントすることができます。またはTab、コマンドモードで行を2回押して、インデントを増やします。
適切なインデント管理コマンドを使用すると、すべてが3つのパラメーターshiftwidth
(tabstop
と)によって制御されますexpandtab
。
shiftwidth
パラメータは、あなたのインデントのサイズを制御します。4つのスペースインデントが必要な場合は:set shiftwidth=4
、またはを使用します:set sw=4
。
これだけを行うnoexpandtab
と、デフォルトでスペースとタブを組み合わせてインデントが作成されます。を使用し:set expandtab
ます。これにより、バッファーに入力したタブ文字がスペースに展開され、Vim管理のインデントではスペースのみが使用されます。
ときにexpandtab
オンになり、そしてあなたがすべて正しいVimのメカニズムを通して、あなたのインデントを管理する場合、の値はtabstop
無関係になります。ファイルでタブが発生した場合のタブの表示方法を制御します。あなたが持っている場合はset tabstop=8 expandtab
、次に使用してファイルにハードタブをこっそりCtrl-VTab、それはいつものように、次の8列ベースのタブ位置に配置を生成します。
<C-t>
では、リテラルではなくその構文を使用できます。最後に、<Tab>
ノーマルモードでのマッピングもマッピングされます<C-i>
(これらは同じ文字です)ので、お勧めしません(vim機能の気の利いた部分を失う