MacVim

Vimについてドットインストール様にて勉強しましたので、自分用にまとめをば。

http://dotinstall.com/

自分はVimというよりもMacVimを使わせてもらっています。
カラースキームやら透明度を変更してこんな感じで使っています。後ろが透けて見えているのがわかります。自分はこれが好きです。

とは言っても、あまり使う事はなくCotEditorを使っていたのですが、最近検索やらなんやらでもう少し色々できたらいいなと思ったので、Vimを勉強してみようと思った次第です。

モード

Vimにはいくつかモードがあります。

基本的にノーマルモードから各モードへ移動する、というような感じらしいです。
挿入モードへは i を、コマンドモードへは : を、ビジュアルモードへは v で移動できます。
各モードからノーマルモードへは esc で移動する事ができます。

ファイル処理

ノーマルモードからコマンドモードへ移動し、各操作を行います。

  • :w 上書き保存
  • :w filename filenameで新しく保存
  • :e filename filenameのファイルを新しく読み込む
  • :q Vimの終了
  • :q! 保存せずにVimの終了
  • :wq 保存してVimの終了

慣れている人には当たり前なのでしょうが、filenameは相対パスで記述します。

移動

ノーマルモードで以下のようなコマンドで様々な移動を行う事ができます。

  • gg ファイルの先頭に戻る
  • G ファイルの最後に進む
  • w 次の単語に進む(wordのw?)
  • b 前の単語に戻る(backのb?)
  • ctrl + f 次のページに進む
  • ctrl + b 前のページに進む
  • ^ 行頭に戻る
  • $ 行末に進む
  • f + 文字 次の文字まで進む
    • ;を使うとさらに次の文字に進む
  • % 括弧等の対応する場所へ進む、戻る

ビジュアルモード

ビジュアルモードでは選択を行います。

  • v 文字単位でのビジュアルモード
  • V 行単位でのビジュアルモード
  • ctrl + V 矩形選択ビジュアルモード
    • 四角く選択する事ができます。並んでいる同じ単語を一気に処理するのに便利!

移動コマンドと組み合わせる事もできます。
例えば、ノーマルモードにて
gg(ファイルの最初に戻る) + V(行選択ビジュアルモード) + G(ファイルの最後に進む)
で、ファイルを全選択。

編集

ノーマルモードにて以下のコマンドを実行

  • x 一文字単位でカット
  • dd 行単位でカット
    • 数字dd 数字行分カット
  • p ペースト
    • 一文字をコピーしている場合はカーソルの次にペースト
    • 行でコピーしている場合はカーソルの次の行にペースト
  • yy 行単位でコピー
    • 数字yy 数字行分コピー
  • u 操作の取り消し
  • ctrl + r 操作のやり直し

検索

  • /文字 文字を検索する
    • n 検索した単語でさらに次の単語を検索
    • N 検索した単語でさらに前の単語を検索
  • * カーソルがのっている単語を下方向で検索
  • # カーソルがのっている単語を上方向で検索

MacVimで検索した単語がハイライトされるので、これをはずには

  • nohl ハイライトをはずす

です。

置換

コマンドモードにて操作

  • :s/文字列A/文字列B 文字列Aを文字列Bに
    • ただし、一行の一箇所のみ
  • :s/文字列A/文字列B/g 文字列Aを文字列Bに
    • 一行の全ての箇所
  • :%s/文字列A/文字列B 文字列Aを文字列Bに
    • ファイル内の全ても文字列に適応

%は全てのという意味らしく、最後にcをつけると本当に処理するか聞いてもらえる

画面の操作

コマンドモードにて操作

  • :sp 画面の縦分割
  • :vs 画面の横分割
  • :close 画面分割の終了
  • :tabnew 新しいタブを作成
  • :tab filename filenameのファイルを新しいタブで開く
  • :tabclose タブの終了
  • :tabdo 全てのタブで処理(置き換え等に使う)

それぞれの移動は次のように行う。
ノーマルモード

  • ctrl + w + w 画面の移動
  • gt タブの移動

その他

  • . 直前のコマンドをもう一度
  • = インデントを揃える
  • ctrl + n 補完機能

矩形選択モード → I → 編集
で、まとめて編集できます。
ノーマルモードで cit でタグの中身だけ削除して編集モードに入る事ができる。
citはそれぞれ

c/d/y change/delete/insert
i/a inner/all
t/"/.. tag/" "内/等

に変更できる。



調べてみたら色々コマンドがあって便利そうなので、自分なりに使っていってみてよく使うコマンド等はまたまとめてみたいと思います。
個人的にはインデントを揃えるコマンドが感動しました。
Macにしたばかりは慣れていなかった command + space で入力を切り替えるのを今では文字を一通り打ったら癖で英字入力に戻しているように、これも慣れて一通り打ち終わったら esc でノーマルモードに戻るようにできたらいいなと。

EclipseにもVimコマンドが使えるようなプラグインをいれているので使っていきたいです。

〜追記(9/9)〜

複数行の削除、コピー、置き換え

全ての処理に共通しているのは

    • 処理を施したい範囲の最初の行で「ms」と入力
    • 処理を施したい範囲の最後の行で「me」と入力

その後、
削除したい場合:「:'s,'ed」
コピーしたい場合:「:'s,'ey」
置き換えたい場合:「:'s,'es/置き換えたい単語/置き換える単語/g」
と入力。

〜追記(9/26)〜

改行コードの変更

    • :set ff=dos・・・windows用の改行コードに変更
    • :set ff=mac・・・mac用の改行コードに変更