Hatena::ブログ(Diary)

hi3103のメモ帳

2017-02-06

Vimについて

基本的なこと

  • 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矩形単位で選択

矩形選択した箇所を一気に編集したいときは

control+v(矩形選択) → I(入力モード) → [編集] → ESC

編集

直前の操作を○○する
u取り消す(UNDO
control+rやり直す(REDO
.繰り返す(例:3dd→. 3行まとめて消去を繰り返す)
カット・コピー・ペースト

削除したものはクリップボードに記憶される。

デフォルトVimではクリップボードOSと連携していないので別途対応が必要。

x文字単位で削除
dd行単位で削除
[n]ddn行まとめて削除
y選択範囲をコピー
yy行単位でコピー
[n]yyn行まとめてコピー
pカーソル位置の直後にペースト。コピーした内容が行単位なら直後の行にペースト。
特定範囲の選択&編集

下記から1つずつ選んで連続入力する。

  1. やること
    • c = change(削除して入力モードに入る)
    • d = delete(削除)
    • y = copy(コピー)
  2. 範囲指定
    • i = in(中身)
    • a = all(すべて)
  3. 基準になるもの
    • t = tag(タグ)
    • )
    • ]

例) [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…を補完する