基本的なこと
- 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…を補完する |