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

覚えておきたい 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

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
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