Help us understand the problem. What is going on with this article?

本当の本当に最低限のvimの使い方

More than 1 year has passed since last update.

viの印象

viと聞くと、どんなイメージでしょうか?
使いやすい!最高!とか、いやEmacsの方が、、という方は対象にしておりませんのでより詳しいページをごらんください。

どちらかというと、何をしているのかわからない。できれば触りたくないという印象をお持ちの方向けです。
そうした方の場合、まずviを使う場面は、あるファイルをちょっとだけ編集したいというときではないでしょうか。たった1文字、1行書き加えたい。だけどviはよくわからない。そんな時に思いだしていただきたいことを最小限で書いてみます。

viでファイルを開く

コマンドライン上で

vi ファイル名

とすることでviがファイルを開いた状態で起動します。指定したファイルがなければ新規のファイルとなります。たまに何かの設定ファイルを開いたつもりなのにまっさらな画面が表示され、保存しても設定が変わらないときがあります。それはファイル名かディレクトリ名を間違えている可能性が高いです。

ディレクトリ名もファイル名も何文字か入力しTABを押すと補完してくれます。補完されなかった場合は入力した文字で始まるファイルなどが複数あるということです。その状態でTABをもう一度押すと該当する一覧が表示されます。

こうしてviを起動します。

viのモード

ここがややこしいところですが、viはコマンドモードと挿入モードがあります。
起動時はコマンドモードになっています。ここでキーボードから色々なコマンドを入力することができますが、最低限覚えておけば良いのは iwqESCの4つだけです。
モードの切り替えに使うのは
i はコマンドモードから挿入モードへ
ESCはコマンドモードへ映ります。
今、自分がどちらのモードなのかわからない場合はとりあえずESCを連打しましょう。何回押してもコマンドモードになってくれます。

カーソルの移動

viのカーソル移動方法について調べていくとたくさんのコマンドが出てきます。検索や行へジャンプなどありますが、それはまたで大丈夫です。今のviはカーソルが使えます!キーボードの上下左右カーソルでスクロールしながら変更したい箇所をさがしましょう。

編集

変更したい箇所が見つかったら、iを押します。画面下部に

-- INSERT --

や挿入など表示されます。そうするともうなんでもできます。さらにカーソル移動するなり、BACKSPACEで1文字削除、RETURNで改行の挿入なりなんでもできます。必要な箇所を編集しましょう。

保存して終了

作業が完了したら保存して終了です。これを行うときには一旦コマンドモードに入ります。
ESCを押して:wq
と入力します。最初のESCを押した時点で画面下部の -- INSERT --は消え、

:wq

と入力したものがそのまま表示されます。そこでENTERを押します。そうするとうまくいけばもとのシェルの画面にもどります。

保存できない場合

開いているファイルに書き込み権限がなく保存できない場合があります。一旦終了しましょう。1文字も書き換えていなければ終了はコマンドモードで:qを押してENTERすると終了します。しかしどこかを編集していると変更しているのに保存せずに終了するのかと怒られます。
そんな時は:q!と入力しENTERします。そうすると保存せずに終了しシェルに戻れます。
その後書き込み権限を付加するなり

sudo vi ファイル名

と実行し管理者権限で実行するなりしてください。

まとめ

これでひとまず
1. viでファイルを開く

vi ファイル名

2. カーソル移動する
キーボードのカーソル使う 

3. 編集する
i
4. 保存して終了
ESC:wqENTER
まで完了するはずです。

おまけ

しかしやはり、カーソル移動について次のコマンドぐらい覚えておくと便利だと思います。
コマンドモードで
:数字ENTER 指定した数字の行にジャンプ
:文字ENTER 指定した文字の検索
n 次の検索

これができると、テキストなどを見ていてこの設定を書き換えというとき、すぐ該当箇所を編集できます。

viはとても高機能なエディタでこれ以外にもたくさんのコマンドがあります。カーソルで移動などというとviを使いこなしておられる方からは怒られそうです。しかし、「viをマスターしたい」のではなく、今「このファイルを編集したい」という方の参考になれたらと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away