基本的なこと
- vim で概要が見られる
- vimtutor で日本語チュートリアルが読める
- vi [ファイル名] で開始する
モードについて
vi 入ってすぐの何もしていない状態が「ノーマルモード」。
ここから下記のモードに入れる。抜けるときは ESC キーを押す。
| 項目 |
説明 |
| コマンドモード |
: で入る。各コマンドが打てる。 |
| 入力モード(insert) |
i で入る。文字の入力・編集ができる。 |
| ビジュアルモード(visual) |
v で入る。文字の選択などができる。 |
表示設定
| 項目 |
内容 |
| :set number/nonumber |
行番号を表示する/表示しない |
| :set ignorecase/noignorcase |
検索時に大文字小文字を区別しない/する |
| :syntax on/off |
コードの色分けをする/しない |
| :set tabstop=[n] |
タブ1個の幅を[n]文字分にする |
ファイル操作
| 項目 |
内容 |
| :w |
上書き保存 |
| :w [ファイル名] |
名前をつけて保存 |
| :q |
終了 |
| :q! |
変更点を無視して強制的に終了 |
| :e [ファイル名] |
他のファイルを開く |
タブ
| 項目 |
内容 |
| :tabnew |
新しいタブを開く(新規ドキュメント) |
| :tabe [ファイル名] |
指定したファイルを開く |
| gt |
タブ間を移動する |
| :tabclose |
タブを閉じる |
| vi -p [ファイル名] … |
複数ファイルを一気にタブで開く |
| :tabdo %s/鈴木/田中/g |
開いているタブにある全ての鈴木を田中にする |
分割ウィンドウ
| 項目 |
内容 |
| :sp |
上下に分割する(split) |
| :vs |
左右に分割する(vertical split) |
| control+w+w |
分割したウィンドウを移動する |
| :close |
分割したウィンドウを閉じる |
検索/置換
検索
基本的に完全一致のみマッチする。
| 項目 |
内容 |
| /[文字] |
直後に入力した文字列を検索する。更に「n」で下方向、「N」で上方向へ。 |
| * |
今カーソルのある単語を下方向に検索 |
| # |
今カーソルのある単語を上方向に検索 |
置換
コマンドモードで「s (substitute)」を使う。
例)「鈴木」を「田中」にしたいとき
| 項目 |
内容 |
| :s/鈴木/田中 |
今カーソルのある行の1番目の鈴木を田中にする |
| :s/鈴木/田中/g |
今カーソルのある行のすべての鈴木を田中にする |
| :%s/鈴木/田中/g |
編集中のファイル内にあるすべての鈴木を田中にする(gを忘れると同じ行に鈴木が2つある場合に1つ目しか置換されない) |
| :%s/鈴木/田中/gc |
置換する前に確認したいときは「c (confirm)」オプションをつける |
移動/選択
移動
| 項目 |
内容 |
| gg |
一番上に戻る |
| G |
一番下に戻る |
| control+f |
画面単位で進む |
| control+b |
画面単位で戻る |
| w |
単語単位で進む |
| b |
単語単位で戻る |
| ^ |
行頭に移動する(キャレット) |
| $ |
行末に移動する(ドルマーク) |
| f [文字] |
直後の[文字]に飛ぶ。更に : でその次の[文字]に飛ぶ |
| % |
プログラムの { の上で % を押すと、対応する } まで飛ぶ |
選択
| 項目 |
内容 |
| v |
文字単位で選択 |
| V |
行単位で選択 |
| gg→V→G |
全選択(先頭へ移動→行単位で選択→末尾へ移動) |
矩形選択
矩形選択した箇所を一気に編集したいときは
control+v(矩形選択) → I(入力モード) → [編集] → ESC
編集
直前の操作を○○する
| 項目 |
内容 |
| u |
取り消す(UNDO) |
| control+r |
やり直す(REDO) |
| . |
繰り返す(例:3dd→. 3行まとめて消去を繰り返す) |
カット・コピー・ペースト
削除したものはクリップボードに記憶される。
デフォルトのVimではクリップボードはOSと連携していないので別途対応が必要。
| 項目 |
内容 |
| x |
文字単位で削除 |
| dd |
行単位で削除 |
| [n]dd |
n行まとめて削除 |
| y |
選択範囲をコピー |
| yy |
行単位でコピー |
| [n]yy |
n行まとめてコピー |
| p |
カーソル位置の直後にペースト。コピーした内容が行単位なら直後の行にペースト。 |
特定範囲の選択&編集
下記から1つずつ選んで連続入力する。
- やること
c = change(削除して入力モードに入る)
d = delete(削除)
y = copy(コピー)
- 範囲指定
- 基準になるもの
例) [t]titleタグの [i]中身を [c]削除して入力モードに入る
<title>タイトル</title> の上で「cit」
↓
<title></title> ※入力モードになりカーソルはタグの中
例) [t]liタグの [a]すべてを [d]削除する
<li><a href="#top">トップ</a></li> の<a>~</a>の上で「dat」
↓
<li></li> ※ノーマルモードのまま
例) ["]"で括られた [i]中身を [y]コピーする
<a href="http://hoge.com">リンク</a> の上で「yi"」
↓
クリップボードに「http://hoge.com」が入る
その他メモ
| 項目 |
内容 |
| = |
インデントを揃える(HTMLファイルだと全選択実行は行頭揃えになるだけ) |
| [文字]→control+n |
ファイル中で使った関数名・変数名・タグ名etc…を補完する |