超入門 vi操作

viとはVisual Editorの略

Linux標準のテキストファイルを編集する「エディタ」です

この「エディタ」を使って各種ファイルを設定していきます

エディタには他にもEmacsなどがありますが
viはLinux(に限らずUNIX系OS)であれば必ず実装されていますので
これをまず使えるようにした方が良いでしょう

基本中の基本である「vi」

こいつを理解しておけば
もっと便利なエディタへ手を伸ばす時すぐに理解できるはずです

でも、基本を抑えとかないと
例えばviしか使えないサーバーだった場合、厳しいかもしれませんね

ここでは、viの使い方をマスターしていきましょう

viには
「コマンドモード」
「編集モード」
この2つの大きな概念があります

「コマンドモード」は検索や行削除、そしてコピー・ペースト、終了と言った操作を実行するモードです
「編集モード」はキーボードから文字を入力するモードです

viを起動すると「コマンドモード」になります
この状態では、まだ文字入力(編集)ができません

長い設定文の場合、移動コマンドで下方へ行ったり
その場所を探すのに検索をかけたりします。

このコマンドモードの状態で、設定を変更したいところまで行きます

カーソルの上下ボタン、
あるいはマウスのスクロールで移動します

検索する場合は初めに[:/] <検索したい文字> で[Enter]
検索中に[n]を押すと次を検索していきます

そして変えたい文字の所で
[i]キーを押します

すると編集モードに変わり文字入力が出来るようになります

文字入力が終わったら「コマンドモード」へ戻ります

戻るには[Esc]

これで「コマンドモード」に戻りました

変更したファイルを保存したい場合は
[:][w]

viを終了するには
[:][q]

保存して終了したい場合は
[:][w][q]

保存せず終了したい場合は
[:][q][!]

となります

まずはこれだけ憶えておくと
何とかなるでしょう

では、実例を追って
やってみましょう

viでファイルを作成、編集するには

# vi <ファイル名>

 

そのファイルがある場合、そのファイルを編集していきますが
ファイルが無い場合、viはそのファイルを作ってくれます

# vi test.txt

新ファイルとしてtext.txtを作りました
最初はコマンドモードなので文字を入力するのに
[i]を押して編集モードにしましょう

するとエディタに文字が入力できます

testとでも入力してみましょう

設定が終わり保存終了したいので
[Esc]キーで編集モード

そして保存終了である
[:][w][q]と入力

これで終わりです。

続きまして、もう少し憶えるともっと便利になるやり方です
気を付けて欲しいのは全て「コマンドモード」での話しです

では、もう一度viで開いてみましょう

# vi test.txt

さきほど入力した文字が確認できるかと思います

では、コマンドモードの状態で文字がある部分はカーソル移動できますので
動かしてみましょう

削除コマンド
1文字だけ削除したい場合
[x]を押すとその文字が削除されます
普通に[BackSpace]キーを押せば良いのですが
これは編集モードの時

コマンドモードでやって行くとその便利さを感じる所なんです

コマンドモードでの削除では
この他にも
行削除があります

カーソル上で[d][d]と押すと
その行を削除してくれます

また2行削除や20行削除と言う荒業もできます
2行削除は [2][d][d]

20行削除は[2][0][d][d]

今やった作業を戻したい場合
[u]を押します

押した分、キャッシュされてる部分まで戻ります

次にコピー

削除でやった要領と同じく
今度はカーソル上で[y][y]と押します

すると、その行をコピー(ヤンク)してくれます

コピーも行範囲が可能で
2行コピーしたければ[2][y][y]
20行コピーしたければ[2][0][y][y]

でその内容を貼り付けたいときは
[p] と押します

では、一旦ファイルを終了していただき
実際のファイルを見てみましょう

# vi /etc/resolv.conf

021
これはネットワーク設定の1つ、
DNSサーバーへの接続設定ファイルになります

このファイルを使って検索の練習をしてみましょう

最初はコマンドモードです
以下のように入力してください

:/nameserver

カーソルが検索文字に移動しているか
確認できますでしょうか

[n]を押すと先にある検索文字へ移動します

また、viにはオプションが用意されています
例えば
行番号をつけるオプション

コマンドモードの状態で

:set number

少しはみやすくなったでしょうか

検索、削除、コピー、ペースト
ここまで憶えればとりあえずviは使えるようになります

viにはまだまだ便利なコマンドやオプションがあるので
ある程度操作に慣れてきたら、少しずつ憶えていくと
もうvi以外は触りたくなくなるかもしれませんね

Linuxでは、こうした設定ファイルを直接CUIで編集します
その編集はviと言ったエディターで操作します

Linuxに触れていくと、こうした操作を重ねていくことになりますので
自然と憶えていくでしょう

viその他のコマンド、オプションを下記に記載しときますね
頑張って、viをマスターしてください

viにはより高機能になったvimがあります

使い方は基本的にviと同じで、より便利に使えるので
どちらかと言うとvimの方が一般的ですね

主なviコマンド

コマンド 概要
<挿入コマンド>
a カーソル後に挿入
i カーソル前に挿入
o 下に1行加える
<移動コマンド>
k 1行上へ移動
j 1行下へ移動
h 1文字左へ移動
l 1文字右へ移動
0 (ゼロ) 行先端へ移動
$ 行末へ移動
:10 10行目へ移動 :0なら開始行へ移動
G 最終行へ移動
<削除コマンド>
x カーソル文字を削除
dd カーソル行を削除 2ddで2行削除
<修正コマンド>
r文字 カーソル位置の文字を置き換える
u 直前コマンド取り消し(Undo)
yy 1行コピー 2yyで2行コピー
p yy(dd)した行を貼り付け
. (小数点) 直前入力を繰り返す
J 下の行を連結する
<ファイル操作と終了>
:w 現在の内容を上書き
:w file 現在の内容をファイル名fileとして書込み
:r file 現在の内容をfileに追加書込み
:wq 保存して終了
:q! 保存せず終了
:e! 編集内容を破棄して最初から

主なviのオプション

コマンドモードで :set オプション で実行

Type
T トグル :set オプションでオン :set no オプションでオフ
(例 :set number または :set nonumber
N 数値型  オプション = 数値 で指定
(例 :set width=4
S 文字列型 オプション = 文字列 で指定
(例 :set bg=dark

オプション 機能
autoindent 自動段付け
autowrite 自動でファイル保存
all 現在設定されているオプションを表示
background 背景色に応じた表示色設定 darkまたはlight
hlserch 検索結果の反転表示
ignorecase 検索時、大文字小文字の区別をしない
number 行番号表示
tabstop [TAB]キーで移動する大きさ(文字列 省略は8)
wrapscan 検索中、最後まで達した時、最初に戻って再検索