スポンサーリンク
おすすめ記事

【最強のエディタ】Vimまとめ

Vimってなれると使いやすいってきくけど、実際どうなの?? 慣れるまでってそんなに難しいの??
Vimの使いかたや特徴をわかりやすく解説するよ

vimの特徴

VimはViを拡張したものになります。

とにかく軽くて速い

基本的にキーボードだけで操作が可能

インサートモードなど色々なモードがある

モード切り替え

モードの切り替えを覚えないとVimは全く役に立たないよ!。これはマスト!!
モードはノーマルモードか基本となり、他の各モードにはノーマルモードから移行するよ。今どのモードにいるかわからなくなった場合は、ESCキーを押すとノーマルモードに戻れます。Vimには6つの基本的なモードとそれから派生した5つの派生モードがあるよ!!

だけど、実際に使われるモードは4つのモードだよ!!

簡単にモードの説明をするよ

・ノーマルモード(軸となるモード)
カーソルの移動や、行のヤンク(コピー)、ペースト、削除などができる

・インサートモード
文字列を書き込こんだり削除したりできる

・ビジュアルモード
領域選択ができる

・コマンド(ライン)モード
ファイルの保存等のコマンドや置き換え、検索をする事ができる

ヤンク = コピー と考えてOK!

モードの遍移 モードを変更するためのキー
ノーマル → インサート(入力) i
ノーマル → コマンドライン
ノーマル → ビジュアル v
全てのモード → ノーマル ESC または Ctrl-[

Vimは複数のモードを持ち、これらを切り替えることで全ての編集機能を扱えるようになっている。以後はノーマルモードを基本として紹介します。ちなみに「C-a」で「Ctrl+a」みたいな感じです。これは、技術書などの表記もこのようになっているので、覚えておくとよい。

ノーマルモード

このモードは、様々なモードの起点となるモードで,カーソルの移動やテキストの削除・コピー・ペーストなどの簡単な指示ができる。

移動(カーソル、ファイルなど)

h, j, k, l 左, 下, 上, 右
gj, gk 下, 上に1行移動. (エディタで表示されている行上で移動, つまり, エディタの横幅の制約によって行が折り返されている場合でも, 移動可能)
w 1単語分進む
W 1単語分進む(記号では区切られないので, 次のスペースや, 改行文字まで飛ぶ)
b 1単語分戻る
B 1単語分戻る(記号では区切られないので, 前のスペースや, 改行文字まで飛ぶ)
f[文字] 次の[文字]まで飛ぶ
F[文字] 前の[文字]まで飛ぶ
t[文字] 次の[文字]の手前まで飛ぶ
T[文字] 前の[文字]の次まで飛ぶ
; f, F, t, Tで検索した文字を同方向に繰り返し検索する
, f, F, t, Tで検索した文字を逆方向に繰り返し検索する
g; 直前に変更した位置にカーソルを移動(繰り返し入力することで, 変更リストを遡る)
g, g#を使用して遡った変更リストを逆順に進め, カーソルを移動する.
gg ファイルの先頭に移動
G ファイルの最後に移動
[数値]gg, [数値]G, :[数値] [数値]行に移動
H, M, L 画面に表示されている行について, 最初の行(H), 真ん中の行(M), 最後の行(L)に移動
0 行の先頭に移動(行の最初の空白でない文字へ)
^ 行のテキスト部分の先頭に移動
$ 行の最後に移動
% 対応する括弧に移動
( 文単位での移動. 前の文の先頭に移動
) 文単位での移動. 後ろの文の先頭に移動
{ 段落単位での移動. 前の段落の先頭に移動
} 段落単位での移動. 後ろの段落の先頭に移動
Ctrl-u 半画面分戻る
Ctrl-d 半画面分進む
Ctrl-b 1画面分戻る
Ctrl-f 1画面分進む
Ctrl-o ジャンプリストを遡ってカーソルを移動する(検索や行数指定移動などがジャンプリストに保存されている)
Ctrl-i ジャンプリストを進めてカーソルを移動する(検索や行数指定移動などがジャンプリストに保存されている)

削除

x カーソル上の文字を消す
s カーソル上の文字を消して, インサートモードに入る
dd カーソルがある行を消す
dw カーソル位置から1単語分削除する
diw カーソル位置にある単語を1つ削除する
dt( カーソル位置から, 次に最初に出現する(までを削除する
cc カーソルがある行を消して, インサートモードに入る
cw カーソル位置から1単語分削除して, インサートモードに入る
ciw カーソル位置にある単語を1つ削除して, インサートモードに入る
ct( カーソル位置から, 次に最初に出現する(までを削除して, インサートモードに入る
D カーソル位置から行末まで削除
C カーソル位置から行末まで削除して, インサートモードに入る

 

コピー、ペースト

yy カーソルがある行をコピー
y ビジュアルモードで選択されている部分をコピー
p カーソル行の下の行にペースト
P カーソル行の上の行にペースト
Ctrl-r 0(ゼロ)(インサートモード中に) レジスタ0に保存されている文字列を貼り付ける. 通常, yを使用してコピーした文字列は, レジスタ0に保存される.

 

検索

/ 続けて文字を打ち, Enterで文字列を確定し, 後方検索をかける
? 続けて文字を打ち, Enterで文字列を確定し, 前方検索をかける
* カーソル下の単語を, 後方検索する
# カーソル下の単語を, 前方検索する
g* カーソル下の単語を含む文字列を, 後方検索する
g# カーソル下の単語を含む文字列を, 前方検索する
n 上記で検索した次の単語に移る
N 上記で検索した前の単語に移る

 

保存、終了

ZZ 保存して終了
ZQ 保存せずに終了

 

Undo, Redo, 繰り返し

u Undo
Ctrl-r Redo
. 直前の操作の繰り返し

 

インデント

= カーソルがある行をインデント. ビジュアルモードで範囲を選択していれば, その範囲をインデント
>> インデントを追加
<< インデントを削除

 

置換

r[文字] カーソル上の文字を[文字]に置換

 

ウィンドウ操作

Ctrl-w s ウィンドウを横に分割する
Ctrl-w v ウィンドウを縦に分割する
Ctrl-w o カーソルのあるウィンドウ以外閉じる
Ctrl-w w 次のウィンドウに移動
Ctrl-w p 前のウィンドウに移動
Ctrl-w h, j, k, l 左, 下, 上, 右のウィンドウに移動する
Ctrl-w H, J, K, L カーソルがあるウィンドウを左, 下, 上, 右方向に移動する

 

タブ

gt 次のタブに移動する. gtの直前に数字をつけると, 数字番目のタブに移動する
gT 一つ前のタブに移動する

 

インクリメント 、ディクリメント

Ctrl-a カーソル行上で, カーソル以降の最初に出現した数字をインクリメント
Ctrl-x カーソル行上で, カーソル以降の最初に出現した数字をデクリメント

 

インサート(挿入)モード

このモードは、実際にテキストに文字を書きこむモードです。一文字ずつ消すことならできる。

文字挿入・削除

C-h 一文字削除
C-w 一単語削除
C-u カーソルより前を全て削除
C-y カーソルの一段上の文字をそのまま挿入

 

ペースト

ペーストする時は、ノーマルモードに戻ってからペーストすることが一般的である。実は、ヤンクしたデータがレジスタに入っているために、その内容をインサートモードでもペーストすることができる。

C-r C-r でレジスタ名が入力でき、選択したレジスタをペーストする

 

インデント調整

C-t shift width分インデントする
C-d shift width分インデントを削除する

 

補完

C-x + C-n 単語補完(現在開いているファイルにある単語一覧から選べる)
C-x + C-o オムニ補完
C-x + C-f ファイル補完

オムニ補完:文脈を解析して行う補完

 

コマンドラインモード

ファイルを開いたり、検索・置換などの様々な指示ができます。

編集、保存、終了

:e [file] fileを開く
:e. エクスプローラーを開く
:w 保存
:q 終了
:q! 保存せず終了

 

置換

:%s/before/after/g ファイル上の全ての”before”を”after”に置換
:s/before/after/g カーソルの行の全ての”before”を”after”に置換
:10,20s/before/after/g 10~20行目の全ての”before”を”after”に置換
:'<,’>s/before/after/g ビジュアルモードで選択中の範囲の全ての”before”を”after”に置換. ” ‘<,’> “の部分は, 範囲を選択中に”:”を押すと自動的に出ます.

 

ウィンドウ操作

:sp [file] ウィンドウを横に分割し, fileを開く(file名はなくても良い)
:vs [file] ウィンドウを縦に分割し, fileを開く(file名はなくても良い)
:only カーソルのあるウィンドウ以外閉じる

 

タブ

:tabnew [file] 新しいタブを開く. ファイル名を入力した場合は, そのファイルを開く
:tabclose タブを閉じる(:qなどでも閉じられます)
:tabnext 次のタブに移動する
:tabprevious 前のタブに移動する
:tabfirst 1番目のタブに移動する
:tablast 最後のタブに移動する
:tabonly 現在のタブ以外全てのタブを閉じる

 

ビジュアルモード

このモードは、入力された文字列を選択するモードです。

 

矩形選択モード

I(大文字のi) インサートモードに入る. ノーマルモードに戻るときに, 選択領域の直前部分に文字が挿入される
A インサートモードに入る. ノーマルモードに戻るときに, 選択領域の末尾に文字が挿入される
r 選択領域を入力した1文字で置き換える
d 選択領域を削除する
c 選択領域を削除し, インサートモードに入る. ノーマルモードに戻るときに, 選択していた領域の部分に入力した文字が挿入される
y 選択領域をヤンクする

 

 

スポンサーリンク