Help us understand the problem. What is going on with this article?

vim 簡単ガイド

More than 1 year has passed since last update.

忘備録として vim の簡単ガイドをまとめました。

ETC

操作 意味
コマンドラインにペースト :を押してコマンドラインに入った状態でCtrl-Rを押してから"を押すとコマンドラインにペースト
エンコーディング エンコードを指定して開き直す
:e ++enc=encoding
(encoding: euc-jp, shift_jis, utf-8, etc)
vimのエンコーディング確認 :set enc?
ファイルのエンコーディング確認 :set fenc?
ファイルのエンコーディング変更 :set fenc=encoding
(encoding: euc-jp, shift_jis, utf-8, etc)
検索、ジャンプ
(quickfix リスト)
:vimgrep, :grep など 実行後
:copen

キーボードマクロ

操作 意味
q[key] [key]で記録開始
q 記録中に押すことで記録終了
@[key] 記録したマクロを実行
(ex)
qa -> 操作 -> q -> @a
qc -> 操作 -> q -> @C

マーク

操作 意味
:marks mark一覧を表示する
m[a-zA-Z] カーソル位置をmarkする
`` 直前のマークへ移動
C-o 古いマークへ移動
C-i 新しいマークへ移動
`[a-zA-Z] 指定のマークに移動
'[a-zA-Z] 指定のマークの行頭に移動
:delmarks [a-zA-Z] マークの削除
:delmarks! マークの一括削除

検索

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

UNDO / REDO

操作 意味
u undo(アンドゥ)一動作分、前の状態に戻す。
Ctrl + r redo(リドゥ)。アンドゥで戻した操作を、元に戻す。

バッファ操作

操作 意味
:ls, :buffers, :files 開いているバッファ一覧(バッファリスト)を表示する
:bfirst, :bf 先頭のバッファに移動する
:blast, :bl 最後のバッファに移動する
:bnext, :bn 次のバッファに移動する
:bprev, :bp 前のバッファに移動する
:b NUM NUM番目のバッファに移動する
:badd バッファにファイルをロードする (badd filename)
(別ファイルを新バッファに読み込み)
:bun[load] バッファメモリ開放 (バッファリストには残る)
:bd[elete] バッファをアンロードする
(現在のバッファを削除) :ls! では表示される
:bw[ipeout] バッファを完全に削除 :ls! でも表示されない
:enew :new :vnew 新規バッファを開く
:new filename 新規バッファでファイルを開く

モード移行

操作 意味
ESC コマンドモードへ移行
i カーソルの左隣へ挿入
a カーソルの右隣へ挿入
I カーソル行の先頭に挿入
A カーソル行の末尾に挿入
O カーソル行の上に1行空けて挿入
o カーソル行の下に1行空けて挿入

カーソル操作

操作 意味
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 ジャンプリストを進めてカーソルを移動する
(検索や行数指定移動などがジャンプリストに保存されている)
- 1行上の左端へ
RETURN 1行下の左端へ
e 単語の末尾へ
(カーソル位置が単語の途中の場合はその単語の末尾)
(カーソルが単語末尾なら次の単語の末尾)
(カーソルが行末なら次行先頭の単語の末尾)
nG ファイルの先頭からn行目の左端へ

削除, コピー

操作 意味
x カーソル上の文字を消す
X カーソル左一文字削除
s カーソル上の文字を消して, インサートモードに入る
dd カーソルがある行を消す
dw カーソル位置から1単語分削除する
diw カーソル位置にある単語を1つ削除する
dt( カーソル位置から, 次に最初に出現する(までを削除する
df<文字> カーソル位置から<文字>の位置まで削除
d^ カーソル位置から左削除
d$ カーソル位置から右削除
cc カーソルがある行を消して, インサートモードに入る
cw カーソル位置から1単語分削除して, インサートモードに入る
ciw カーソル位置にある単語を1つ削除して, インサートモードに入る
ct( カーソル位置から, 次に最初に出現する(までを削除して, インサートモードに入る
D カーソル位置から行末まで削除
C カーソル位置から行末まで削除して, インサートモードに入る
yy カーソルがある行をコピー ([Y]と同じ)
y ビジュアルモードで選択されている部分をコピー (ビジュアルモード中)
yw カーソル位置の単語をコピー
y<移動コマンド> 現在位置から移動先までをコピー (y`<マークキャラ> など)
P カーソル行の上の行にペースト
(xやddで削除したものもペーストできる)
p カーソル行の下の行にペースト
(xやddで削除したものもペーストできる)
Ctrl-r 0(ゼロ)(インサートモード中に)
レジスタ0に保存されている文字列を貼り付ける
通常, yを使用してコピーした文字列は, レジスタ0に保存される

置換

操作 意味
r[文字] カーソル上の文字を[文字]に置換
R カーソル位置から複数文字置換
s カーソル上一文字を複数文字に置換
r カーソル行全体を置換
cc カーソル行全体を置換
cw カーソル位置から現単語置換
cf<文字> カーソル位置から<文字>の位置まで置換
:%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"に置換
" '<,'> "の部分は, 範囲を選択中に":"を押すと自動的に出ます

編集, 保存, 終了

操作 意味
:e <ファイル名> <ファイル名>を読込む
:r <ファイル名> カーソル行の下に<ファイル名>の内容を挿入
:w 上書保存
:w <ファイル名> 編集中のデータを<ファイル名>のファイルに保存
:q 終了
:wq 保存して終了
:q! 保存せず終了
ZZ 保存して終了
ZQ 保存せずに終了

ウィンドウ操作

操作 意味
:sp [file] ウィンドウを横に分割し, fileを開く(file名はなくても良い)
:vs [file] ウィンドウを縦に分割し, fileを開く(file名はなくても良い)
Ctrl-w s ウィンドウを横に分割する
Ctrl-w v ウィンドウを縦に分割する
:only カーソルのあるウィンドウ以外閉じる
Ctrl-w o カーソルのあるウィンドウ以外閉じる
Ctrl-w w 次のウィンドウに移動
Ctrl-w p 前のウィンドウに移動
Ctrl-w h, j, k, l 左, 下, 上, 右のウィンドウに移動する
Ctrl-w H, J, K, L カーソルがあるウィンドウを左, 下, 上, 右方向に移動する
Ctrl-w _ 縦に最大化
Ctrl-w
Ctrl-w = 大きさを揃える
Ctrl-w > 幅を増やす
Ctrl-w < 幅を減らす
Ctrl-w + 高さを増やす
Ctrl-w - 高さを減らす

画面操作

操作 意味
Ctrl-f 1ページ分下に画面を移動
Ctrl-b 1ページ分上に画面を移動
Ctrl-d 半ページ分下に画面を移動
Ctrl-u 半ページ分上に画面を移動
Ctrl-l 画面を再描画
Ctrl-g 行番号を表示

モード変更

操作 意味
ESC ノーマルモードに戻る
Ctrl-[ ノーマルモードに戻る
i カーソル位置からインサートモードに入る
a カーソルの直後からインサートモードに入る
I 行頭からインサートモードに入る
A 行末からインサートモードに入る
Ctrl-o(インサートモード中に) インサートノーマルモードに入る
(インサートモード中に1コマンドのみノーマルモードのコマンドを使用できる)
v ビジュアルモードに入る
V 行単位の選択をするビジュアルモードに入る
Ctrl-v 矩形選択をするビジュアルモードに入る
gv 前回選択した範囲が再選択された状態でビジュアルモードに入る
: コマンドラインモードに入る(続けてコマンドを打ち, Enterで実行)

起動

操作 意味
% vi フォアグラウンド起動
% vi <ファイル名> <ファイル名>のファイルを読み込んで起動

その他

操作 意味
Ctrl-a カーソル行上で, カーソル以降の最初に出現した数字をインクリメント
Ctrl-x カーソル行上で, カーソル以降の最初に出現した数字をデクリメント
= カーソルがある行をインデント. ビジュアルモードで範囲を選択していれば, その範囲をインデント
>> インデントを追加
<< インデントを削除
. 直前のコマンド繰返し
u 直前に実行したコマンドの取り消し
U カーソル行に対して行った変更を全部取消す
:!cmd シェルコマンドの実行
:r!cmd コマンドを実行し,その結果を挿入
:shell シェルを呼び出す。exitなどでシェルを抜ければviに戻る
:set number 行番号を表示 (set nu)
:set nonumber 行番号表示を止める (set nonu)
:h ヘルプ表示
:viusage [<コマンド>] viコマンドモードのコマンド一覧表示。
<コマンド>を付加するとそのコマンドの説明を表示。
:exusage [<コマンド>] exコマンドモードのコマンド一覧表示。
<コマンド>を付加するとそのコマンドの説明を表示。
:set readonly リードオンリーモードにする (set ro)
:set noreadonly リードオンリーモードを解除する (set noro)

TIPS

多くのコマンドは, 直前に数字などを組み合わせて使うことができます
例えば, 3ddとすれば3行削除できます. 10iでインサートモードに入って,
文字を入力した後にノーマルモードにもどれは, 入力した文字が10個分入力されます

<コマンドラインにペースト>
:を押してコマンドラインに入った状態でCtrl-Rを押してから"を押すと
コマンドラインにペースト

FBH9999
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした