概要
vimはエディターの一つです。
ターミナルでvim
と入力すると、Vimが起動します。。
起動の初期状態はノーマルモードである。ノーマルモードでi
を入力すると入力モードに切り替わる。esc
キーを押すことでノーマルモードに戻ることができる。Vimを終了するには:
を押してコマンドラインモードに切り替えてからq
を押してエンター。これで終了できる。
変更点を無視して終了したい場合は:q!
と入力する。!
をつけると変更を無視して終了できます。
Vimを使用してファイルを書き換えて保存する場合、:
の後にwq
と押すことで保存して終了することができる。
なお、:w
だと保存されてVimは終了しない。
ファイル名を変えて上書き保存したいときは:w
の後に、変更したいファイル名を続ければ変更かつ保存できます。
v
を押すとヴィジュアルモードを起動することができる。選択しながら目視できる。
今いるファイルから別のファイルに移動したいときは:e
の後にファイル名を続ければ移動できる。
移動系のコマンド
ノーマルモードで、gg
と入力すると一番先頭に移動する。逆に1番下に移動したいときはG
と入力することですぐに移動できる。
画面単位で移動したい際はcontrol + f
で1画面上に移動できます。逆に、1画面したに移動したいときは、control + b
で移動することができます。
単語単位で移動したい際は、w
で単語単位で進み、逆にb
で単語単位で戻ることができる。
行単位の移動^
を入力すると行頭に移動できます。逆に$
を入力すると行末に移動することができます。
ユニーク移動f
+移動したい箇所の文字
を入力すると移動できます。
例えば、fr
と入力すると行ないの次にあるr
に飛びます。r
が複数あって次のr
に行きたい場合は;
を入力すると次のr
に移動できます。続けて;
を入力すると更に次のr
に移動できます。
{}移動{
で%
を入力すると対応する}
に移動できます。もう一回入力すればまた戻れます。()
でも同様です。
ビジュアルモード
v
文字単位の選択shift + v
= V
行単位の選択control + v
矩形選択gg
で先頭に戻ってshift + v
で行単位の選択に切り替えG
で全選択になります。
カット
ノーマルモードでx
一文字カットdd
で行単位でカット、複数行カットしたい場合は、カットしたい行数 + dd
でカットできます。例えば、3行まとめてカットしたい場合は3dd
のなります。
カットしたいものを貼り付けるにはp
と入力すれば貼り付けることができます。直前にカットしたものが貼り付けられます。
カットではなくコピーしたい場合はyy
と入力することでコピーできます。行ごとのコピーになります。複数行コピーしたい場合は、カット同様に行数を指定します。例えば、5行まとめてコピーしたい場合5yy
となります。
検索
ノーマルモードで/
を入力した後に、検索したい単語を入力してエンターを押すと、その単語の位置に移動してくれます。
検索した単語が複数マッチする場合があります。下にあるマッチした単語に移動する際は、n
で移動できます。逆に、上に移動したい場合はN
で移動できます。
カーソルがある位置の単語を検索
*
今カーソルがある位置から上の完全にマッチしている単語に移動してくれます。#
今カーソルがある位置から下の完全にマッチしている単語に移動してくれます。
置換
今カーソルがある行内の文字を置換したい場合の方法です。:
でコマンドモードに切り替えます。s
で置換を表明します。substituteの略です。その後に続けて/
と行内にある置換したい単語や文字を入力します。またその後に続けて/
と変更後の文字や単語を入力します。
この場合だと一番最初にマッチした文字しか置換されません。行内にあるマッチした1番目以降の文字もまとめて置換したい場合は後に続けて/
とg
を入力します。
ex)
:s/e/E 行内のeに最初にマッチした物をEに置換します。
:s/e/E/g 行内にあるeを全てEに置換します。
ファイル全体を置換したい場合は:
の後、s
の前に%
を入力します。この%
がファイル全体を意味します。
ex):%s/e/E/g ファイル全体にあるe全てををEに置換します。
ファイル全体で、複数マッチした際に、これは置き換えたい。これは置き換えたくない場合があったとします。
その場合は、g
に続けてc
を入力します。
ex):%s/e/E/gc
replace with E (y/n/a/q/l/^E/^Y)?
上記のようにターミナルに表示されて、マッチした文字にカーソルがあたります。その際に選択肢を入力します。すると選択に合わせて処理がされて次にマッチした文字にカーソルが移動します。選択肢ですが、置き換える場合はy置き換えない場合はnなど様々な選択ができます。
操作の取り消し
u
はundoの略で、入力すると元に戻ります。間違えた時に使えます。更に間違えてu
を押してしまったけれど、u
を押す前の処理後の状態にしたい場合は、control + r
で状態を変えられます。
ウィンドウの分割
複数のファイルを同時に表示した場合に使えます。
:sp
画面を上下に分割したい時に入力します。control + w
+ w
画面間を移動する時に入力します。:vs
画面を左右に分割したい時に入力します。close
画面を終了したい時に使います。
タブ
:tabnew
新しいタブを開くことができます。:tabe
+ ファイル名
予め開くファイルがわかっている場合は、:tabe
の後にファイル名を続けることでファイルを指定して新たなタブを開くことができます。
ノーマルモードでgt
でタブ間の移動ができます。:tabclose
該当のタブを終了できます。vim -p ファイル名 ファイル名
vim起動前に複数のファイルをタブで起動したい時に-p
をつけて開きたいファイルを指定するとvimの起動が複数のタブでされます。
:tabdo
全てのタブで置換したい時に入力します。
ex):tabdo %s/e/E/g
全てのタブに対して置換が行われます。
直前の操作を繰り返す
.
をノーマルモードで押すことで、直前の操作を繰り返すことができます。
ex)2dd
と入力して2行削除した後に、.
を入力すると再び2行削除することができます。
インデント
インデントを揃える際に使います。=
を入力することでインデントを揃えることができます。gg
+shift + v
+G
で全選択してから=
を入力すると全体のインデントを揃えることができます。
補完機能
あの関数名や、あの変数名をまた使いたい時に、使います。
頭文字や2文字目まで暗いを入力して、control + n
を入力すると前に使った単語が表示されて選択できるようになります。一つしか該当しない場合は選択画面は表示されずに自動で補完されます。
長い関数名や変数名を再び入力するときに便利です。
矩形選択
control + v
で矩形選択して、shift + i
=I
を入力すると。複数行に跨って文字を入力することができます。esc
二回入力で選択肢した箇所に全て反映されます。
まとめて入力したりまとめて削除したりする時に便利です。
テキストオブジェクト
cit
タグの中身を消して入力モードに入るという意味。cat
タグの中身も含めて全体を消して入力モードに入るという意味。c
change delete && insertd
削除
i
a
中身が全体かどうかi
は中身inner a
は全体all
t
"
)
]
カーソルがある行にある物を指定します。それらに対して処理ができます。
便利な設定
:set number
行数を表示してくれます。:set nonumber
行数を非表示にしてくれます。:syntax on
色分けをしてくれます。:syntax off
色分けを非表示にしてくれます。:set tabstop=数字
タブの文字数を指定できます。:set ignorecase
大文字と小文字を区別しないようにできます。検索では通常小文字しか引っかかりませんが。これを使うことで大文字にもマッチするようになります。:set noignorecase
で区別するようになります。検索では小文字しか引っ掛からなくなります。