Edited at

覚えておきたい Vim コマンド 備忘録

More than 5 years have passed since last update.

よく忘れるvimのコマンドをまとめました。

私向けの備忘録となってます。

間違いやあらも多いのでお気をつけ下さい。


基本

コマンド
説明

x
1文字削除

dd(連打)
1行切り取り

dd(x行目で1回目のdを押し、y行目で2回目のdを押す)
x行目〜y行目までを切り取り

5dd (xdd)
5(x)行削除

yy(x行目で1回目のを押し、y行目で2回目のyを押す)
x行目からy行目までをコピー

p
貼り付け

u
undo

CTRL + r
redo

.
直前のコマンドを実行

CTRL+n
補完

CTRL+p
前候補を検索

CTRL+n
次候補を検索


カーソルの移動

コマンド
説明

h,j,k,l
←,↓,↑,→

w
1単語分前へ移動

b
1単語分後ろへ移動

gg
ファイル先頭に戻る

Shift + g
ファイル末尾に進む

0
行頭へ

$
行末へ

^
行の最初の空白でない文字へ

5l
5文字分右へ

CTRL+f
ページアップ

CTRL+b
ページダウン

Shift+m
カーソルを画面の中心へ

f
fを押して文字を打ち込むと、カーソル行にあるその文字のところに進む。文字入力後、; を押すと戻る

%
(, ), {, }, [, ] カッコ移動などの対応する場所へ移動

mk
現在のカーソル位置をマーク

'k
マークした位置へ

d'k
現在位置からマークまでを削除


見た目


インデント

コマンド
説明

=
選択行のインデント修正

gg, shift+v, shift+g, =
ファイル全体のインデント修正

ctrl-t, ctrl-d
挿入モードでインデントを追加/削除

>>
インデント

<<
インデントを削除

:set shiftwidth=4
インデント幅をスペース4つ分にする

:set autoindent
オートインデントをON

:set smartindent
スマートなオートインデントをON


フォーマット

コマンド
説明

:%!fmt
すべての行をフォーマット

!}fmt
現在位置にあるすべての行をフォーマット

5!!fmt
次の5行をフォーマット


その他設定、Syntax highlightingなど

コマンド
説明

:syntax on
色付けする

:syntax off
色付け止める

:set syntax=ruby (rubyの部分は言語名)
指定した言語のモードで色付け

:set number
行番号の表示

:set nonumber
行番号の非表示

:set syntax={}に関してはコチラ


検索・置換・正規表現


検索

コマンド
説明

/lover
文字列hogeを検索(上から下へ)

?lover
文字列hogeを検索(下から上へ)

検索候補表示中に n
カーソルより下側にある検索候補に移動

検索候補表示中に shift+n
カーソルより上側にある検索候補に移動

*
今単語がある位置の単語を検索(カーソルより下側)

#
今単語がある位置の単語を検索(カーソルより上側)

/lo[vb]er
文字列の"lover"か"lober"を検索する

/<love
文字列"love"から始まる単語を検索

/love>
文字列"love"で終わる単語を検索

/<love>
文字列"love"を検索

/^love
文字列"love"から始まる行を検索

/love$
文字列"love"で終わる行を検索

/^love$
文字列"love"だけの行を検索

/<….>
4文字の単語を検索

/love\
kill

/<\d\d\d\d>
4桁の数字を検索

/^n{3}
空の3行を検索

:bufdo /love/
現在開いているファイル全部の中から文字列"love"を検索

vimでの正規表現に関してはコチラ


置換

コマンド
説明

:s/before/after
カーソルのある行にある最初の文字列"before"を"after"に置換(1つずつ)

:s/before/after/g
カーソルのある行にある文字列"before"をすべて"after"に一括置換

:s/before/after/gc
カーソルのある行にある文字列"before"をすべて"after"に置換。確認を表示させる

:%s/before/after/g
現在使っているファイルにある文字列"before"を"after"に一括置換

:%s/before/after/g
現在使っているファイルにある文字列"before"を"after"に置換。確認を表示させる

:%s;/var/home;/usr/home;gc
パス名などを置換するときは、"/"でなく、";"を区切り文字に使用

:63,79s /lover/killer/g
特定範囲のみ置換: 63〜79行目までの範囲にある"lover"を"killer"に一括置換

:%s/^/Goodbye/g
ファイル全体のすべての行の先頭に"Goodbye"を追加

:%s/$/./g
ファイル全体のすべての行の末尾に"."を追加

:3,$s/lover/killer/g
特定範囲のみ置換: 3行目から最終行の範囲にある"lover"を"killer"に一括置換

:%s/ /^M/g;
ファイル全体の中からスペース(空文字)を改行(CR)に置換(改行は CTRL+vを押した後にEnterを押すと入力される)

:%s/GoodByeMyLove/ILoveYou/gi
ファイル全体の中から"GoodByeMyLove"を"ILoveYou"に置換する。"GoodByeMyLove"は大文字小文字関係なく検索する

:%s/ *$/g
ファイル全体の行末の空文字(空白、スペース)を削除

:%s#<[^>]+>##g
タグに囲まれたテキストは残しつつ、HTMLタグを全て削除

:g/love/d
"love"を含んでる行を削除

:v/goodbye
"goodbye"を含んでいない行だけを削除

:%s/^(.*)n1$/1/
同じ行が2回続いたら片方削除

CTRL+a
カーソル上の数字をインクリメント

CTRL+x
カーソル上の数字をデクリメント

argadd */.c
カレントディレクトリ以下にある.cファイルを選択

:argdo %s/lover/friend/gc \
update

:tabdo %s/lover/friend/g
すべてのタブに対して、"lover"を"friend"に置換


ファイル操作

コマンド
説明

:e filename
filenameを現在のウィンドウで開く

:split filename
filenameを横分割したウィンドウで開く

:vsplit filename
filenameを縦分割して開く

:sview filename
filenameを横分割で読み取り専用で開く

画面分割については下に。


画面


画面分割

コマンド
説明

:sp
上下分割

:vs
左右分割

CTRL+w CTRL+w(CTRL+wを2回押す)
次の画面へ

CTRL+w ↑(矢印)
カーソルを上のウィンドウへ

CTRL+w _
選択中のウィンドウを最大化

CTRL+w =
分割したすべてのウィンドウを同じ大きさに

10 CTRL+w +
選択中のウィンドウを10行大きくする

:close
画面を閉じる

:hide
現在のウィンドウを閉じる

:only
現在のウィンドウ以外を閉じる

:b 2
バッファの2番目を開く


タブ

コマンド
説明

:tabnew
新しいタブ作成

:tabe filename
filenameをタブで開く

:tabclose
タブを閉じる

gt
次のタブへ

g shift+t
前のタブへ

{i}gt
i番目のタブへ

:tabdo %s/before/after/g
すべてのタブに対して、一括置換

:tabs
開いているタブをリスト表示

:tabo
今使っているタブ以外を閉じる

:tabfirst
最初のタブを表示

:tablast
最後のタブを表示

:tabm n
現在のタブをn番目へ

:tab ball
バッファをすべてタブで開く

vim -p file1 file2

open files as tabs

file1 file2をタブで開く


ヴィジュアルモード

コマンド
説明

v
ヴィジュアルモードに入って一文字選択

shift+v
ヴィジュアルモードに入って一行選択

CTRL+v
矩形(くけい)選択 (複数行選択)

v, gg, shift+g
全選択

CTRL + v, I(shift + i), input words or delete, esc
矩形選択後、選択範囲の編集


その他便利なコマンド


UNIXとのインタラクション

コマンド
説明

:!pwd
pwd” を実行し、Vimに戻る

!!pwd
“pwd” を実行し、実行結果をファイルに挿入

:sh, CTRL + z
一時的にUnixへ戻る

$ exit, fg
Vimに戻る


設定

コマンド
説明

:set tabstop=x
タブの設定

:set ignorecase
大文字小文字の区別をなくす

:set noignorecase
大文字小文字を区別する

:ab hoge abcdefghijklmn
abcdefghijklmnのショートカットにhgoe定義

Ctrl+n Ctrl+p(挿入モードで)
単語を補完

Ctrl+x Ctrl+l(挿入モードで)
行を補完

:set dictionary=hoge
“hoge” を “dictionary” に定義


cit

コマンド
説明

c or d or i
変更 or 削除 or 挿入

i or a
中身 or 全体

t or " or ) or ]
binding character(<>. (), tag, [])

cit
タグの中身を削除して入力モードに入る

ca"
""を含んだ全体を削除して入力モードに入る


OSによっては、~/.vimrc ファイルに:filetype indent on

という記述がないと、インデントがきかない場合があるらしい。

.vimrc ファイルがない場合は、ホームディレクトリ以下に .vimrc というファイルを作成して、編集してみるのもよいかと。


【参考】

http://loumo.jp/wp/archive/20080701175525/

http://archiva.jp/web/tool/vim_regexps.html