next up previous contents
Next: 3 GNU Emacs を使おう Up: UNIX 基礎演習 B 組 Previous: 1 エディタってなーに

Subsections


2 vi を体験しよう

vi は UNIX に標準的に備わっている代表的なテキストエディタです。 この演習で vi の雰囲気を体験しておきましょう。 最初は使いにくいと感じるかもしれませんが,慣れるときっと幸せになれます。

2.1 vi の起動法

vi を起動するには,コマンド行で

vi file
を実行します。file には,新規に作成するファイルの名前や,編集した い既存のファイル名を書きます3

2.2 vi の編集モード

vi はモードという概念を持つエディタです。現在どのモードにいるかによって, 可能な操作が異なります。

  i, a, o, O, cw, cc ...  
  $\longrightarrow{}$  
\fbox{コマンド入力モード}   \fbox{文字入力モード}
  $\longleftarrow{}$  
  <ESC>  
コマンド入力モード
vi 起動直後には,このモードにいます。カーソル 移動や,文字の消去,ファイルへの保存等の操作は,このモードに おいて,vi のコマンドを入力することにより行います。 vi のコマンドの一部を表 1 に挙げておきましたので, 参考にしてください。

コマンド入力モードでは文字の入力はできません。 ia 等の vi のコマンドを入力し,次に紹介 する文字入力モードに移行してから,文字入力をします。

文字入力モード
このモードは文字を入力するためのモードであり,基 本的にそれ以外の操作はできません。 カーソル移動等のためには,<ESC> を押して, コマンド入力モードに戻る必要があります4

ただし,<ENTER><ESC> を押す前であれば,入力したばかりの 文字は <BS> (バックスペースキー) または CTRL-h で削除でき ます5<BS> を続けて押すと,さらにその前に入力した文字を 削除できます。なお,<BS> を押しても,カーソルが左に動くだけ で元の文字は表示されたままになっているかもしれませんが,これ らは無視してください。<ESC> を押せばちゃんと消えます。

vi では,これらのモードを行ったり来たりしながら,文書を編集します 6。現在,どちらのモードにいるのか分からなくなっ たら,<ESC> を 1 回または 2 回押して,コマンド入力モードに移行してくだ さい。


表 1: vi の主要コマンド
機能 コマンド コメント
テキストを入力する i text <ESC> カーソルの位置にtextを挿入する (insert)
  a text <ESC> カーソルの右にtextを追加する (append)
  o text <ESC> 今いる(カーソルがある)行の下にtextを入れる
  O text <ESC> 今いる行の上にtextを入れる
ファイルを保存する :w <ENTER> 編集中のファイルを元の名前のまま保存する
  :w file <ENTER> 編集中のファイルを file として保存する
vi を出る ZZ (:x <ENTER>) ファイルを保存し vi を出る
  :q! <ENTER> ファイルを保存せず vi を出る
カーソルを動かす h ($\leftarrow$) 左隣に移動する
  l エル (<SPACE> または $\rightarrow$) 右隣に移動する
  k ($\uparrow$) 上に移動する
  j (<ENTER> または $\downarrow$) 下に移動する
  0 ゼロ 行頭に移動する
  $ 行末に移動する
  G 最後の行に移動する
  n G n行に移動する
テキストを削除する x 今いる文字(カーソルが乗っている文字)を削除する
  X カーソルの左隣の文字を削除する
  dw 今いる単語を削除する
  dd 今いる行を削除する
テキストを検索する / string <ENTER>  stringが最初に現れる位置にカーソルを移動する
  n 一番最近行った検索を繰り返す
テキストを置換する r character 今いる文字をcharacterで置換する
  cw text <ESC> 今いる単語を text で置換する
  cc text <ESC> 今いる行を text で置換する
変更を繰り返す . 直前のコマンドによる変更を繰り返す
変更を取り消す u 直前のコマンドによる変更を取り消す(undo)
テキストをコピーする yy 今いる行を名前なしバッファにコピー(ヤンク)する
  p 名前なしバッファ中のテキストを挿入(プット)する

括弧 () は当該操作を他のコマンドで行えることを表します。 そのコマンドを括弧内に併記しています。

斜体字 (italic) の箇所は具体的なものに置き換えて記述します。 例えば,text には入力テキストを,file にはファイル名を書 きます。


2.3 例題 1 --ファイルの新規作成

vi を使ってファイルの中身が

cal
date
who
である commands という名前のファイルを作成してみます。 次のとおりに操作してください。 基本的に指示されているキー以外は押さないでください。
  1. vi の起動法に従って,コマンド行に vi commands と 入力して,vi を起動してください。

  2. i を押してください。

    この操作によって コマンド入力モードから文字入力モードに移行しました。 これ以降,カーソル位置に文字を入力できます。

  3. ファイルに書き込む内容 (cal<ENTER>date<ENTER>who) を入力してくださ い。<ENTER> (エンターキー) は改行するためのキーです。 タイプミスをしてしまっても,ここでは修正しないでおきましょう。

  4. <ESC> (エスケープキー) を押してください。

    この操作によって,文字入力モードからコマンド入力モードに移行しま した。

  5. ZZ (大文字の Z を2回) を押してください。この vi のコマンド によって,3. で入力した内容が ファイル commands に保存され,vi が終了してプロンプトが現れます。 うまくいかない場合,再度 4. と 5. を行ってください。
以上を終えたら,ls コマンドを使ってファイル commands が作成されたことを 確認してください。また,cat コマンドを使ってファイルの中身を確認してください。

2.4 例題 2 --既存ファイルの編集

ファイル commands の内容を
cal    displays a calender
date   set date and time
に変更します。
  1. vi の起動法に従って,コマンド行に vi commands と入力し て vi を起動してください。既存のファイル commands の内容が表示さ れます。

    もし,画面に commands の内容が表示されなければ,ZZ を押して一旦 vi を終了し,ファイル名を確認してから,再度 vi を起動してください。

  2. 文字を追加すべき位置(cal の l の位置)までカーソルを移動します。カー ソル移動の方法は,表 1を参照してください。l (エル) の利用がお勧めです7

  3. カーソルの右側に文字を追加するために,a を打ちます。

    これにより,文字入力モードに移行しました。 コマンド i と a の違いを表 1 で確認してください。

  4. 追加すべき文字 ( displays a calender)をタイプします。 入力ミスは <BS> で修正できます。

  5. <ESC> を押してコマンド入力モードに戻り,date の行の行末までカーソ ルを移動します。

  6. a を押して文字入力モードに入り,追加すべき文字を入力します。 入力を終えたら <ESC> でコマンド入力モードに戻ります。

  7. カーソルを who の行の行頭まで移動させてください。

    これから who を削除しますが,<BS> では文字入力モードで打ち込んだばかり の文字しか消せませんので,ここでは文字削除のコマンドを使います。 まず x を押してカーソルの乗っている一文字 (w) を消してみましょう。

    一行すべてを削除するコマンドもあります。 dd と打って,カーソルの乗っている 3 行目を消してください。

  8. 編集を終えたら ZZ を押します。変更した内容が元のファイルに 保存され,vi が終了します。

2.5 練習

  1. ファイル commands の内容を
    cal    displays a calender
    date   display or set date and time
    
    に変更してください。

    この問題では,ファイルの内容をきれいに整えましょう。コマンド説明 の出だしが揃っていなければ,揃えてください。 不要な空白行があれば,行削除の vi コマンドで削除してください。

    注意: vi は行単位でテキストを編集するエディタなので, 改行文字を消すことで 複数の行を一行にまとめたりはできません。

  2. vi におけるカーソル移動 (jk など) やテキスト検索 ( /n など) の操作は,man や jman でマニュアルを閲覧していると きのページ操作と共通です。特に検索の方法は知っておくと便利です。

    さて,vi のコマンド J は何をするためのコマンドでしょう? vi のオンラインマニュアルを表示して,J と記されている箇所を検索して 調べてみましょう。一回の検索で目的の記述が現れなければ,再度,同 じ検索をしてみてください。J の用途がわかったら,vi commands で vi を起動し,試してみましょう。変更をファイルに保存せずにvi を 終了する方法は,表 1 に載っています。

vi の学習はこの辺で終りにします。時間に余裕のある人は,表 1 に挙げた他のコマンドも試してみてください。さらに興味があれば,マニュアル や書籍等でもっと詳しい操作法を調べましょう。


next up previous contents
Next: 3 GNU Emacs を使おう Up: UNIX 基礎演習 B 組 Previous: 1 エディタってなーに

平成17年12月7日