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
これはネットワーク設定の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 | 検索中、最後まで達した時、最初に戻って再検索 |