回答:
>コマンドを使用します。5行をインデントするには、5>>。行のブロックをマークしてインデントするには、Vjj>3行をインデントします(Vimのみ)。中括弧ブロックをインデントするには、カーソルを中括弧の1つに置き、>%ブロック内の任意の場所から使用します。>iB。
テキストのブロックをコピーしていて、ブロックのインデントを新しい場所に揃える必要がある場合は、の]p代わりにを使用してくださいp。これにより、貼り付けたブロックが周囲のテキストに揃えられます。
また、このshiftwidth
設定では、インデントするスペースの数を制御できます。
shiftwidth
それを変更する方法については、設定を参照してください。
この回答は、この質問の他の回答とコメントをまとめたものであり、VimのドキュメントとVim wikiに基づいて追加情報を追加しています。簡潔にするために、この回答ではViとVim固有のコマンドを区別していません。
以下のコマンドでは、「再インデント」は「インデント設定に従って行をインデントする」ことを意味します。shiftwidth
インデントを制御する主要な変数です。
一般的なコマンド
>> Indent line by shiftwidth spaces
<< De-indent line by shiftwidth spaces
5>> Indent 5 lines
5== Re-indent 5 lines
>% Increase indent of a braced or bracketed block (place cursor on brace first)
=% Reindent a braced or bracketed block (cursor on brace)
<% Decrease indent of a braced or bracketed block (cursor on brace)
]p Paste text, aligning indentation with surroundings
=i{ Re-indent the 'inner block', i.e. the contents of the block
=a{ Re-indent 'a block', i.e. block and containing braces
=2a{ Re-indent '2 blocks', i.e. this block and containing block
>i{ Increase inner block indent
<i{ Decrease inner block indent
あなたは置き換えることができ{
て}
か、B
例えば、=iB
有効なブロックのインデントコマンドです。見てみましょう「のインデントコード・ブロック」にこれらのコマンドを試してみるための良い例のために。
また、覚えておいてください
. Repeat last command
、インデントコマンドを簡単かつ便利に繰り返すことができます。
完全なファイルの再インデント
別の一般的な状況は、ソースファイル全体でインデントを修正する必要がある場合です。
gg=G Re-indent entire buffer
このアイデアを複数のファイルに拡張できます。
" Re-indent all your C source code:
:args *.c
:argdo normal gg=G
:wall
または複数のバッファ:
" Re-indent all open buffers:
:bufdo normal gg=G:wall
ビジュアルモード
Vjj> Visually mark and then indent three lines
挿入モード
これらのコマンドは現在の行に適用されます。
CTRL-t insert indent at start of line
CTRL-d remove indent at start of line
0 CTRL-d remove all indentation from line
exコマンド
これらは、カーソルを動かさずに特定の範囲の行をインデントする場合に便利です。
:< and :> Given a range, apply indentation e.g.
:4,8> indent lines 4 to 8, inclusive
マーカーを使用したインデント
ma Mark top of block to indent as marker 'a'
...カーソルを終了位置に移動します
>'a Indent from marker 'a' to current location
インデントを制御する変数
これらは.vimrcファイルで設定できます。
set expandtab "Use softtabstop spaces instead of tab characters for indentation
set shiftwidth=4 "Indent by 4 spaces when using >>, <<, == etc.
set softtabstop=4 "Indent by 4 spaces when pressing <TAB>
set autoindent "Keep indentation from previous line
set smartindent "Automatically inserts indentation in some cases
set cindent "Like smartindent, but stricter and more customisable
Vimには、ファイルタイプに基づいたインテリジェントなインデントがあります。これを.vimrcに追加してみてください:
if has ("autocmd")
" File type detection. Indent based on filetype. Recommended.
filetype plugin indent on
endif
参考文献
>}
ます。長い間ありがとう
Cインデントインデントにもこれを試してください。やる:help =
詳細については:
={
これにより、現在のコードブロックが自動的にインデントされます。
あるいは単に:
==
現在の行を自動インデントします。
より視覚的な人々のためのキープレス:
コマンドモードに入る:
Escape
インデントする領域の先頭に移動します。
hjkl↑↓←→
ブロックを開始します。
v
インデントする領域の最後まで移動します。
hjkl↑↓←→
(オプション)必要なインデントレベルの数を入力します
0..9
ブロックでインデントを実行します。
>
すべてのコマンドのマスターは
gg=G
これにより、ファイル全体がインデントされます。
以下は、VimまたはgVimで行をすばやくインデントするために使用されるシンプルでエレガントなコマンドの一部です。
現在の行をインデントするには
==
現在の行の下にあるすべての行をインデントするには
=G
n
現在の行の下の行をインデントするには
n==
たとえば、現在の行の下の4行をインデントするには
4==
コードのブロックをインデントするには、中かっこのいずれかに移動し、コマンドを使用します
=%
これらは、複数の行をインデントするための最も単純で強力なコマンドです。
vim
、ではありませんvi
。
vim
としてリンクされているを見ていませんvi
か?
すでに与えられ受け入れられている答えに加えて、マーカーを配置して、現在のカーソルからマーカーまですべてをインデントすることもできます。
したがって、ma
インデントされたブロックの最上部にしたい場所を入力し、必要なだけカーソルを下に移動してから入力します>'a
(「a
」は有効なマーカー名の代わりに使用できることに注意してください)。これは、5>>
またはより簡単な場合がありvjjj>
ます。
本文の先頭へ
ブロックを選択し>てインデントに使用すると、インデントは通常モードに戻ります。私の.vimrcファイルにこれがあります:
vnoremap < <gv
vnoremap > >gv
これにより、選択範囲を必要なだけインデントできます。
コードのインデントに2つのスペースを使用するとします。タイプ:
:set shiftwidth=2
次に:
あなたはアイデアを得ます。
(空の行はインデントされません。これはちょっといいと思います。)
ブロックをインデントするための(g)vimドキュメントで答えを見つけました:
:help visual-block
/indent
コマンドにカウントを指定する場合は、演算子文字を入力する直前に「v {move-around} 3>」(行の3インデントを右に移動)にします。
VimのUIの優れている点は、その一貫性です。編集コマンドは、コマンドとカーソル移動で構成されます。カーソルの動きは常に同じです:
'
。したがって、vimを使用するには、カーソルを移動する方法を学び、たとえば>インデント(および<「アウトデント」)。
したがって、あなたが画面の上部にカーソル位置から行を字下げするために>H、>Gファイルの一番下にインデントします。
と入力する代わりに>H、あなたが入力dHすると、同じ行のブロックを削除したりcH、置き換えたりします。
一部のカーソルの動きは、特定のコマンドに適しています。特に、この%コマンドはHTMLまたはXMLブロック全体をインデントするのに便利です。ファイルの構文が強調表示されている場合(:syn on
)、カーソルをタグのテキストに設定します(<div>の「i」など)。>%終了の</ div>タグまでインデントされます。
これがVimのしくみです。カーソルの動きとコマンドだけを覚え、それらをどのように組み合わせるかを覚えておく必要があります。この質問に対する私の答えは次のようになりますので、「あなたはインデントしたい行のブロックの一方の端に移動し、入力>コマンドやブロックのもう一方の端への移動を」場合インデントは、ラインをシフトすると解釈される=場合にはインデントきれいな印刷のように解釈されます。
norm i
コマンドを使用して、行の先頭に特定のテキストを挿入できます。2行目から10行目までの間に10個のスペースを挿入するには:
:2,10norm 10i
コマンドの最後にスペース文字が必要であることに注意してください。これが挿入したい文字になります。他のテキストで行をインデントすることもできます。たとえば、ファイル内のすべての行を5つのアンダースコア文字でインデントすることができます。
:%norm 5i_
またはもっともっと豪華なもの:
:%norm 2i[ ]
より実用的な例は、#文字でBash / Python / etcコードにコメントを付けることです。
:1,20norm i#
をインデントするxには、の代わりにを使用しますi。たとえば、すべての行から最初の5文字を削除するには:
:%norm 5x
これを使用してこれを行う簡単な方法 VISUAL MODE
使用は、コードブロックにコメントを付けるのと同じプロセス使用します。
これは、変更したくない場合に便利です。 shiftwidth
、set
ディレクティブディレクティブを使用 TABS、SPACES、またはその他の文字を操作するのに十分な柔軟性があります。
-- VISUAL MODE --
:
してプロンプトに切り替えます3つの先行スペースで置き換える:
:'<,'>s/^/ /g
または、先頭のタブに置き換える:
:'<,'>s/^/\t/g
簡単な説明:
'<,'>
-視覚的に選択された範囲内
s/^/ /g
-全範囲の各行の先頭に3つのスペースを挿入します
(または)
s/^/\t/g
- Tab
全範囲内のすべての行の先頭に挿入します
:help left
では、またはをex mode
使用して、指定した量の線を整列できます。具体的には、[範囲]内の行を左揃えにします。行のインデントを[indent](デフォルトは0)に設定します。:left
:le
:left
:%le3
or :%le 3
または:%left3
or :%left 3
は、3つのスペースを埋め込んでファイル全体を位置合わせします。
:5,7 le 3
5行目から7行目までを3つのスペースで埋めて位置合わせします。
:le
値:le 0
がない場合、または0のパディングで左揃えになります。
これはVimとgVimで動作します。
:'<,'>le4
からスペースを挿入しました。ありがとう!
私にとって、MacVim(ビジュアル)ソリューションは、マウスで選択して ">"を押しましたが、次の行を "〜/ .vimrc"に置いた後、タブではなくスペースが好きです。
set expandtab
set tabstop=2
set shiftwidth=2
また、コマンドライン(Terminal.app)からMacVimを呼び出すことができると便利です。そのため、次のヘルパーディレクトリ "〜/ bin"に "macvim"というスクリプトを配置しています。
#!/usr/bin/env bash
/usr/bin/open -a /Applications/MacPorts/MacVim.app $@
そしてもちろん "〜/ .bashrc":
export PATH=$PATH:$HOME/bin
MacPortsは "〜/ .profile"をいじるので、PATH環境変数はかなり長くなる可能性があります。
5==
現在のカーソル位置から5行インデントします。
したがって、前に任意の数値を入力できます==
。行数をインデントします。これはコマンドモードです。
gg=G
ファイル全体を上から下にインデントします。
コメントで使用する方法が見つからなかったので、共有します(Vimのみだと思います)。
これは、インデント/タブ設定を変更したくない場合vimrc
や、編集中に変更することを覚えておきたい場合に便利です。
インデントを解除するには、同じCtrl+ Vブロック選択を使用してスペースを選択し、で削除しDます。
このような簡単な答えを見つけるのがなぜ難しいのかわかりません...
私自身、これを知るために多くの苦労がありました。とても簡単です:
.vimrc
ホームディレクトリの下のファイルを編集します。この行を追加
set cindent
適切にインデントしたいファイル内。
通常/コマンドモードタイプ
10== (This will indent 10 lines from the current cursor location)
gg=G (Complete file will be properly indented)
:line_num_start,line_num_end>
例えば、
14,21> shifts line number 14 to 21 to one tab
タブを増やすには、「>」記号を増やします。
例えば、
14,21>>> for three tabs
:set number
(彼らはトグル行番号にオフデフォルト)、または置くset number
あなたのvimrcで。
オプション1:ビジュアルブロックモードで、viのコードブロックを3つのスペースにインデントします。
インデントするコードブロックを選択します。これをCtrl+V通常モードで使用し、下向き矢印を使用してテキストを選択します。選択した状態でEnterキー:
を押すと、選択したテキストのブロックにコマンドが与えられます。
コマンドラインに次のように表示されます。 :'<,'>
インデントを3つのスペースに設定するには、le 3
入力してEnter キーを押します。これが表示されます::'<,'>le 3
選択したテキストはすぐに3つのスペースにインデントされます。
オプション2:Visual Lineモードで、viのコードブロックを3つのスペースにインデントします。
通常モードになり、次のキーを押します。
Vjjjj:le 3
あなたがしたことの解釈:
V
テキストの選択を開始することを意味します。
jjjj
4行下矢印、4行を強調表示します。
:
強調表示されたテキストの指示を入力することをviに伝えます。
le 3
ハイライトされたテキストを3行インデントすることを意味します。
選択したコードはすぐに3つのスペースインデントに増加または減少します。
オプション3:インデントを増やすには、ビジュアルブロックモードと特別な挿入モードを使用します。
通常モードで次のキーを押します。
Ctrl+V
jjjj
(スペースバーを5回押します)
Esc Shift+i
ハイライトされたすべてのテキストは、さらに5つのスペースがインデントされます。
私はブロックモードのビジュアル選択を使用します:
I
(Shift+I)を挿入モードに入ります。これはユニタスカーではありません。できます:
c
には(の代わりに使用I
)。vim-prettier
デフォルトのインデントエンジンの代わりに使用する場合)に行く方法です。>
そうでない場合、を使用すると、Prettierによって行われたフォーマットが忠実に修正されます。
すべてのファイルを4字下げするには:
esc 4G=G
出典:https : //www.fir3net.com/UNIX/General/how-do-i-tab-multiple-lines-within-vi.html