vim・viを使ってとりあえず文章を編集する方法

vim使ったことがないけど使う必要があったのでメモ。
 
vimを使ったことがないがターミナルは使えるという人が、利便性・効率性を無視してとにかくテキストファイルを編集することを目的に書いています。
`vimtutor ja`と趣旨は近いです。
少しでもvimの操作に慣れている方はこの記事を見る必要はありません。
 
vimを基準に書かれていますが、以下に書いてある全ての操作がviでも使えます。


最初に知っておくべきこと

  • 動作のわからないキー入力をするとたいてい悲惨なことになるので、してはいけない。
    • 特にバックスペースキーはうっかり押して混乱する危険が高い。
  • 状態が混沌としてvimを強制終了させたくなったら、エスケープキー連打した後に「:q!」と入力し、エンターキー押せば大体終了してくれる。
 
起動
  • 起動時に編集するテキストファイル名を指定する。`vim some_text.txt`のような感じで。

モードについて

  • vimには複数のモードがある。
  • モードが違うとキー操作もがらりと変わるので、今どのモードなのかを常に意識しないといけない。
  • テキスト編集に最低限必要なのは「コマンドモード」と「挿入モード」の2つ。
    • 注:コマンドモードを「ノーマルモード」や「編集モード」、挿入モードを「入力モード」や「編集モード」と呼ぶこともある。
  • vim起動直後はコマンドモードになっている。
  • コマンドモードのときにiキーを押すと、挿入モードに移る。
  • 挿入モードのときにエスケープキーを押すと、コマンドモードに移る。
    • 文字以外のキー(例えばカーソルキー)を入力したときもコマンドモードに移動することがあるので注意。
    • どんなモードのときでもエスケープキーを押するとコマンドモードに移れるので、路頭に迷ったらエスケープキーを押そう。
  • モードごとでできること・できないことは次の通り。
    モード名 コマンドモード 挿入モード
    このモードにするためのキー エスケープキー iキー
    できること カーソルの移動(h, j, k, lキー)
    文字の削除(xキー)
    元に戻す(uキー)
    vimの終了(「:q」コマンド)
    その他色んなコマンド
    文字の入力。
    キーボードの文字を大体普通に打つことができる。
    shiftキー押せば通常通り大文字になる。
    日本語はcygwin bash上ではMSのIMEが使えてるけど、その他環境は知らない。
    できないこと 文字の入力
    範囲選択
    文字入力と、カーソル移動以外全部
     (vimなら、.vimrcをいじくれば文字の削除はできるようになる)

コマンドについて

  • コマンドモードでは、コマンドが使える。
    • 以下の説明は全てコマンドモードで行っていることが前提。
  • カーソルを移動するには、h, j ,k, lキーを押す。
    • カーソルキーも多くの場合使えるが、viでは使えないこともある。
    • カーソルの動き方は以下の表の位置のようになる。
        j(↑)  
      h(←)   l(→)
        k(↓)  
  • 文字を削除するには、x, X, dd, Jコマンドを押す。
    • xキーを押すと、カーソルの右側の1文字を消す。改行を削除しないことを除いて、windowsのメモ帳でデリートキーを押したときと同じ効果。
    • Xキー(shift+x)を押すと、カーソルの左側の1文字を消す。改行を削除しないことを除いて、windowsでバックスペースキーを押したのと同じ効果。
    • 「dd」と押すと、カーソルを含む行全体を削除(切り取り)。
    • Jキー(shift+j)を押すと、カーソルを行の末尾に移動しつつ、行末の改行を削除する。
  • vimを終了するには、コマンドモードで「:q」と押す。このときファイルが更新されていて、かつ保存されていないと、失敗する。
    • ファイルを保存せずに終了…「:q!」
    • ファイルを上書き保存して終了…「:wq」
    • ファイルを上書き保存…「:w」

他のコマンド

  • 「dd」コマンドで、一行切り取り。
  • pキーで、貼り付け。
  • あとは「vim コマンド 一覧」とかでぐぐってください・・・・