Linuxコマンドを勉強~viエディタ~

viエディタ

viエディタはUNIXのテキストエディタです。
Linuxではviエディタを拡張したvimというテキストエディタの最小構成パッケージ、あるいはvimのaliasとして提供されています。

とコマンドだけで実行すると、新規ファイルのエディタとしてviエディタが開きます。編集したあとでファイル名を付けて保存します。

とすると、そのファイルを開きます。

viエディタのモード

viエディタは3つのモードを切り替えて利用します。
viコマンド実行直後はコマンドモードになってます。
 1.コマンドモード ・・・ viコマンドを実行します。カーソルの移動、文字や行の削除、コピー貼り付けなどを行えます。
 2.入力モード ・・・ ファイルに文字の入力が行えます。
 3.ラストラインモード ・・・ ファイルの保存、文字列検索や置換、viエディタを終了するなどできます。

この3つのモードは、次のように切り替わります。

 コマンドモード
   ↓ i,a,oなどの特定のコマンドを入力すると入力モードに移行する。
 入力モード
   ↓ ESCキーを押すとコマンドモードに戻る。
 コマンドモード
   ↓ :や/、?などの特定のコマンドを入力するとラストラインモードに移行する。
 ラストラインモード
   ↓ ESCキーを押すとコマンドモードに戻る。
 コマンドモード

コマンドモード → 入力モード

入力モードに移行するには、コマンドモードでi,a,o,I,A,Oなどのいずれかのコマンドを入力します。
それぞれ、異なる動きをしながらモード移行します。

i カーソルの直前から入力可能になる
a カーソルの直後から入力可能になる
o カーソルのある行の下に新しい行を作り、その下行の先頭から入力可能になる
I カーソルのある行の先頭から入力可能になる
A カーソルのある行の末尾から入力可能になる
O カーソルのある行の上に新しい行を作り、その上行の先頭から入力可能になる

この辺はvi使ってる内に自然と使い分けるようになってました。
・・・と調子に乗ってたのですが、私はコマンドモードでのカーソル移動を矢印キー以外でどうやるのか度忘れして困ったわけです。

コマンドモードでのカーソル移動

カーソル移動のviコマンドは結構あります。

hまたは← 左に移動
jまたは↓ 下に移動
kまたは↑ 上に移動
lまたは→ 右に移動
^ 行の先頭に移動
$ 行の末尾に移動
G 最終行に移動
1G 先頭行に移動
nG n行目に移動
Ctrl+b 前方に1画面スクロール
Ctrl+f 後方に1画面スクロール

・・・ということでした。

コマンドモードでのファイル編集

コマンドモードでは削除やコピー、貼り付けもできます。

x カーソルの1文字を削除
dw カーソルから次の単語まで削除
dd カーソルの行を1行削除
nx カーソルから右にn文字削除
D カーソルからその行の末尾まで削除
ndd カーソルの行からn行削除
dG カーソルの行から最終行まで削除
dH 1行目からカーソルの行まで削除
yy 1行コピー
yw カーソルから次の単語までをコピー
P カーソルの行の上の行(ywコピーの場合はカーソルの前)に挿入貼り付け
p カーソルの行の下の行(ywコピーの場合はカーソルの後)に挿入貼り付け

また、次のようなこともコマンドモードでできます。

u 最後の編集の取り消し
.(ドット) 最後の編集の繰り返し
ラストラインモード

ラストラインモードは、viエディタ(ターミナル画面)の一番下の行にコマンドラインが表示され、コマンドが入力できるようになるモードです。

編集したファイルを保存・終了するときは、ラストラインモードに移行します。

:w 上書き保存
:w! 強制的に上書き保存
:w ファイル名 ファイル名を指定して保存(あるいは新規保存)
:q 保存せず終了。ただし、内容に変更があると終了できません
:q! 保存せず強制終了。変更を無視します
ZZ 保存して終了
:wq 保存して終了。ZZと同じです
:wq! 保存して強制終了
:wq ファイル名 ファイル名を指定して保存(あるいは新規保存)、終了
:! コマンド viエディタを終了することなく、コマンドを実行できる
:e! 変更を破棄してファイルを再読み込み

ファイル内の文字列検索も、ラストラインモードで行えます。便利です。

/文字列 カーソルの下へ検索
?文字列 カーソルの上へ検索
n 次を検索
N 前を検索

オプション機能

最後に、viエディタにはオプション機能があります。
オプションの設定、解除はラストラインモードで行います。

:set オプション名 オプションの設定
:set no オプション名 オプションの解除

オプションには、次があります。

number 行番号を表示
list タブや改行などの見えない文字も表示
all すべてのオプションを表示

viエディタについてはだいたいこのぐらいでしょうか。

広告
  • LINEで送る