vi エディタの使い方メモ

スポンサーリンク
IT

Unix/Linux系で、テキストファイルの内容を編集する場合、やはりviがお手軽で使いやすいと思います。

と言っても、使った事が無い人がいわゆる一般的なテキストエディターでしょ?という感覚で触るとなにこれ?というレベルだと思います。

取っつきにくいですが、慣れてしまうとキーボードだけで操作できるviが便利なんです。

サーバールームでコンソールから直接サーバの設定ファイル編集する場合とかvi必須です。

一時期、ずっとUnixサーバのシェルスクリプトで開発するお仕事をしていた頃は、IDEって何?状態でviでゴリゴリ書いてましたので、その頃培ったviの使い方を忘れないうちにメモしておきます。

この辺の操作を覚えておけばある程度書けると思います。

スポンサーリンク

vi 操作メモ

viでファイルを開く

◆viを起動して、hoge.txtを開く
$ vi hoge.txt

◆viを起動して、hoge.txtを読み取り専用モードで開く
$ view hoge.txt

◆hoge1.txt, hoge2.txt の順番で開く
$ vi hoge1.txt hoge2.txt

viの主な操作方法

viの基本操作でよく使うコマンドを抜粋しました。緑の白抜き文字は、同じような動作をするWindowsのエディタでのショートカットキーです(参考で記載しているだけですので、もちろんvi上では使えません)。

テキスト入力モードへ切り替え

編集モードへの切り替えはカーソルの位置を起点として動作します。
編集モードから戻る場合は、ESCキーです。

  • i … カーソルの前にテキストを挿入
  • a … カーソルの後にテキストを挿入
  • I … 行の先頭にテキストを挿入
  • A … 行の末尾にテキストを挿入
  • o … カーソルの下に行を追加
  • O … カーソルの上に行を追加

テキスト編集

  • r … 1文字置き換え。次に入力した文字に置き換えて編集モード終了
  • R … 文字書き換え。次に入力した文字で連続置き換え
  • x … カーソル位置の文字を1文字削除 DEL
  • X … カーソル位置の1文字前を1文字削除 BS

行編集・行コピー

  • J … カーソルある行とその下の行を連結
  • yy … カーソルの行をコピー
  • dd … カーソルの行を削除
  • p … コピー/削除した行をカーソルの下に行を追加してペースト Ctrl+v
  • P … コピー/削除した行をカーソルの上に行を追加してペースト Ctrl+v

複数行のコピー&ペーストは、次のようにやります。

  1. コピーしたい先頭行にカーソルを合わせる
  2. mキー⇒aキーの順番に押す
  3. コピーしたい最終行までカーソルを移動する
  4. yキー⇒’キー⇒aの順番に押す
  5. ペーストしたい位置にカーソルを移動してpキーを押す

これで複数行のコピーができます。
解説すると、mキーで行をマークします。それからメモリaとしてコピーしたい複数行を決めて、yキーを指定した範囲内をメモリaにセットします。
最後にpキーでメモリaの内容を貼り付けます。

ちなみに、4のyをdに変えるとコピーではなく、切り取りになります。

この複数行操作ができるようになると、viでの編集がかなり楽になります。
横で見ている人も、知らない人だと、今何が起きた!?という感じになります。

テキスト削除・コピー・移動(コピペ)

  • x … カーソル位置の文字を1文字削除 DEL
  • X … カーソル位置の1文字前を1文字削除 BS
  • D … カーソルの位置から行末まで削除
  • p … 削除(x, X, dd, D)した文字列をカーソルの位置にペースト Ctrl+v
  • P … 削除(x, X, dd, D)した文字列をカーソルの位置の前にペースト Ctrl+v

やり直し

  • u … アンドゥ、直前の編集を取り消し Ctrl+z

変換

変換系は編集モードには入らず、現在のカーソルが当たっている文字に対して処理を行います。

  • ~ … 大文字小文字変換

検索

  • / … 続けて検索したい文字列を入力してEnter
  • n … 次に該当するもの(上から下へ)へジャンプ
  • N … 次に該当するもの(下から上)へジャンプ

検索にはもちろん正規表現が使えます。例えば数字だけ探すなら[0-9]。

置換

sedが使えます。

  • :s/hoge/piyo/ … カーソル行のhogeをpiyoに置換
  • :%s/hoge/piyo/ … 編集のファイル内のhogeをpiyoに置換(最初の一つだけ)
  • :%s/hoge/piyo/g … 最後にgをつけるとすべて置換
  • :%s/hoge/piyo/gc … 最後にgcをつけると一つ一つ確認しながら置換

通常、置換対象文字列と置換後の文字列を区切る文字は半角スラッシュ(/)ですが、置換したい文字列自体に半角スラッシュ(/)が含まれている場合は、他の区切り文字を使います。

例えば、2019/09/10を2019-09-10に置換したい場合は区切り文字を%にして次のようにやります。
:%s%/%-%g

カーソル移動

矢印キーでもカーソルを動かせますが、これを知っていると目的の場所に一気にカーソルを移動することができます。

  • :行番号 … コロンを入力してから行番号を入力してEnterキーを押すと、指定した行へジャンプ
  • G … 最終行へジャンプ
  • % … 対応するカッコへジャンプ

ファイル操作

  • :w … 編集中のファイルを保存
  • :wq … 編集中のファイルを保存してviを終了
  • :w! … 編集中のファイルを強制保存
  • :10w hoge.txt … 10行目をhoge.txtに保存
  • :10,20w hoge.txt … 10行目から20行目をhoge.txtに保存
  • :30,32w >> hoge.txt … 30行目から32行目を現在のhoge.txtに追記して保存
  • :q … viを終了
  • :q! … 編集中の内容を破棄してvi終了
  • :n … 次のファイルを編集(複数開いている場合)
  • :e! … 編集を最初からやり直す

コマンド実行

  • :sh … viで編集中のファイルはそのままで、シェルを起動
  • :! command … viで編集のファイルはそのままで、commandを起動(lsを起動する場合は、:! ls)
  • :r hoge.txt … カーソル位置にhoge.txtの内容を読み込む
  • :r ! command … カーソル位置にcommandの実行結果を書き込む

viエディタのオプション設定

  • :set ts=4 … タブ幅を半角スペース4文字分にセット
  • :set nu … 行番号を表示する
スポンサーリンク

サーバーの操作をよくする方

大抵のUnix/Linux環境にviは入っていますので、使い方を知っておかないと仕事にならないと思います。

やはり集中して学習するなら本が最も効率がよいと思いますので、紹介します。

ばったん
ばったん

ばったんのオススメ書籍紹介コーナー!

viとvimは似て非なるものです。viを拡張したものがvimです。最近のLinuxではvimが主流ですが、原始的なUnix環境ではviのところもありますので、

サーバーエンジニアは主にサーバー上でスクリプト書いたり、設定ファイルを変更したりすることが多いと思います。昔、私がサーバーエンジニアをちょっとやっていた頃によく使ったviの操作はこの記事にまとめましたが、もっと知りたい、という方はオライリー本をオススメします。なんでも深く掘り下げて書いてあります。

入門vi 第6版 | ラム, リンダ, ロビンス, アーノルド, Lamb, Linda, Robbins, Arnold, 俊博, 福崎 |本 | 通販 | Amazon
Amazonでラム, リンダ, ロビンス, アーノルド, Lamb, Linda, Robbins, Arnold, 俊博, 福崎の入門vi 第6版。アマゾンならポイント還元本が多数。ラム, リンダ, ロビンス, アーノルド, Lamb, Linda, Robbins, Arnold, 俊博, 福崎作品ほか、お急ぎ便対...

コメント

タイトルとURLをコピーしました