読者です 読者をやめる 読者になる 読者になる

とりあえずこれくらい使えればいいと思う vi 入門

システムを構築することを生業とする会社の新入社員研修では、プログラム書いてみようとか、シェルを書いてみようといった講義、実習が行なわれているわけです。

ところが様子を見ていると、viの使い方になれていない様子。 聞けば学生時代にEmacsは使っていたものの、viには触れていない人がかなりいるようでした。 であれば、サーバ上の設定ファイルやシェルをメンテするなら、これくらい使えれば苦労しないんじゃないかな…というラインを示すのも一興かと思い、本記事をおこす次第です。

なお、弊ブログではEmacs関連の記事がいくつかありますことからわかるように、自宅で文章を書くときには、Emacs使っています。この記事もEmacsで書いています。 そんな私がviをこれくらい使えれば、サーバ維持管理の仕事では大丈夫かなと思っているレベルです。 ※ Emacsにもvi-modeが存在しますが…

vi ファイル名 でファイルを開くところから始めましょう。 vi を実行しても vim だったりする場合もありますが、とりあえず細かいことは気にしない。

困ったときには

いろいろな操作を覚える前に、困ったときの対処法を覚えましょう。 自転車でも、ローラースケートでも止まり方から覚えるようなものです。

Esc連打からの展開が基本

コマンドモード、コマンドラインモード、編集モード…とか言われますが、最初は理解するのは困難だと思います。 (いまだに自分がどのモードにいるのか確信を持てません) 「やばい…なんだか変になっちゃった…」という具合に困ったら、とにかくEscキーを連打しましょう。

Escキーを連打したあと「u」を入力すれば、編集を元に戻せます。(Undo) Escキーを連打したあと「:q!」を入力すれば、元ファイルに編集を加えることなくviを終了することができます。

Escキーを連打すれば、おそらく「コマンドモード」にいるだろうという安心感があります。 一種のホームポジションですね。

文字を入力する

入力開始

Escキーを連打したあと「i」「a」を入力すれば、文字の入力開始です。(編集モード) キーボードで入力したとおりに、文字が入力されるはずです。

誤入力した!

あわてずさわがず、Esc連打です。 間違えて入力した箇所にカーソルを合わせましょう。 このカーソル移動がなにも見ずにできるようになれば、最初の壁は突破できたものと思います。

  • h:左
  • j:下
  • k:上
  • l:右
  • 0(ゼロ):行頭
  • $:行末

狙った場所にカーソルを置いて「x」を入力すると削除されます。 一文字だけ修正したいときには「r (修正後の文字)」と入力するとよいでしょう。

探して修正する

実際にファイルをメンテナンスする場面においては、

  • 特定の文字列を探して修正
  • 特定の行まで移動して修正

という場合が多いと思います。 エラーメッセージから特定の行に誤りがあるか、そのメッセージをてがかりに修正箇所のあたりをつける…といった場面が多い気がするので。

Escキーを連打したあと「/検索したい文字列[Enter]」と入力すると、下方向で検索して、ヒットすればそこまでカーソルが移動します。 Escキーを連打したあと「(行数)G」で狙った行へカーソルが移動します。たとえば「15G」で15行目に移動です。

保存する

編集が終わったら、保存をしましょう。 Esc連打のあと「:w」と入力して保存です。 終了もしたいなら「:wq」でどうぞ。「ZZ」派の方もいらっしゃるようです。

操作を忘れたときに備えて

vi-vim-cheat-sheet

チートシート(カンニングペーパー)を、ノートなりデスクなりに用意しておきましょう。

こんな操作があるんだと学習することもできます。

コマンドリファレンス本もあります。

vi/Vim コマンドポケットリファレンス

vi/Vim コマンドポケットリファレンス

もっと使いこみたいなら

このような本で学習してみるのはどうでしょうか。

入門vi 第6版

入門vi 第6版

  • 作者: リンダラム,アーノルドロビンス,Linda Lamb,Arnold Robbins,福崎俊博
  • 出版社/メーカー: オライリー・ジャパン
  • 発売日: 2002/05
  • メディア: 単行本
  • 購入: 14人 クリック: 193回
  • この商品を含むブログ (75件) を見る

とことん自分用の環境としてつきつめていきたいのであれば、vimの設定ファイルである「.vimrc」について調べてみるとよいと思います。


Windowsにvimでも入れてみるかな…