vi

機能

スクリーンエディター

起動方法

    vi [option] files...

機能

画面(ターミナル)内にテキストを表示して編集するエディターである。
もともとはexというラインエディターを、スクリーンエディターに拡張する形で 作られているので、exのコマンドも使用できる。(exモード)

このviの特徴としてモードという概念がある。 実行したい命令の種類によって、そのためのモードに入らなくてはならない。
モードの種類は以下の3種類になる。

コマンドモード
テキスト上でコマンドを実行できる状態
テキストモード、exモードを終了するとこのモードになる。
テキスト入力モード
文字をテキスト内に入力できる状態
a,i,cなどで入って、ESCキーで終了
exモード
ラインエディタexのコマンドを入力できる状態
:で入って、リターンキーで終了

コマンドモードで使用できるコマンドは一般に次の形をしている。

          (バッファ)(数)(コマンド)(範囲)

(バッファ)、(数)、(範囲) は省略できる。

(バッファ)
viには名前なしバッファと名前付バッファがある。
名前なしバッファには、バッファの指定をしないで、削除やコピーをした時のテキストが入る。
(バッファにテキストを入れることをヤンクするという)
名前付バッファには、英字(a,b,c...zおよび$,#などの特殊記号)バッファと、数字(1,...9)バッファがある。
英字バッファはテキストのコピーや移動の時などに使用する。
数字バッファは削除されたテキストが順番にはいっている。
それぞれ
"(バッファ名)
という形で使用する。
(数)
コマンドを何回繰り返して実行するかを指定する。
例えば2ddとすると、ddコマンドを2回繰り返して実行することになる。(結果的には2行分のデータが削除される)
(コマンド)
テキスト上で使用できるコマンドを指定する。
(範囲)
コマンドが実行される範囲を指定する。
そのためにはカーソル移動コマンドを使用する。(現在のカーソル位置から移動コマンドで移動するところまでが範囲となる)

vi の種類

vim
最も多機能な vi。現在では良く使われている。
gvim
vim の GUI 版。
jvim
日本語のインライン変換が可能で vim の ver.3.0 と互換。
nvi
日本語の通る vi 互換のエディタ。

オプション

-r
viを使用中にシステムが落ちた場合、システムが立ち上がった後で、このオプションを使用すると 編集中のテキストが元に戻る(かもしれない。)

コマンドリファレンス

カーソル移動コマンド

h, j, k, l
カーソルを左、下、上、右に1文字または一行分移動
0
行頭へ移動
$
行末へ移動
^
行頭の空白(スペース、タブ)以外の文字へ移動
w
一単語分右へ移動
b
一単語分左へ移動
e
単語の最後の文字へ移動
H
画面の左上へ移動
M
画面の中央へ移動
L
画面の左下へ移動
ctrl+f
次の画面を表示
ctrl+b
前の画面を表示
nG
n行目へ移動
mc
cのマークをつける
'c
cのマークがついている行の先頭へ移動
/(文字列)/(Enter)
(文字列)をカーソルの下方向に検索する(正規表現が使用できる)
?(文字列)?(Enter)
(文字列)をカーソルの方向に検索する(正規表現が使用できる)
n
(文字列)をもう一度繰り返し検索する
N
(文字列)をもう一度逆方向に繰り返し検索する
fc
cの文字をその行の右に向かって検索
Fc
cの文字をその行の左に向かって検索
;
cの文字をもう一度検索
%
対応する括弧まで移動
括弧とは ( ) { } [ ] の三種類である。

編集コマンド

テキストを挿入したり書き換えたりするためのコマンド。 ESCで終了。

a
カーソルの右側にテキストを挿入
i
カーソルの左側にテキストを挿入
o
カーソルの下の行にテキストを挿入
O
カーソルの上の行にテキストを挿入
x
カーソル上の一文字を削除
dd
カーソル上の一行を削除
d
カーソルから指定された所までを削除
D
カーソルから行末までを削除
r
カーソル上の一文字を変更
cw
カーソル上の一単語を変更
cc
カーソル上の一行を変更
u
直前の編集コマンドの取消
yw
カーソル上の一単語分をヤンク
yy
カーソル上の一行分をヤンク
p
ヤンクされたテキストをカーソルの右または下の行に挿入する
P
ヤンクされたテキストをカーソルの左または上の行に挿入する
J
カーソル上の行と次の行を一行につなげる
~
カーソル上の文字の大文字・小文字変換

exコマンド

exコマンドは全て:を打ち込んだ後に使用できる。
コマンドの終りにはEnterを打ち込む。

set nu
行数を行の先頭に表示する
set nonu
行数の表示をやめる
q
現在のテキストを書き込まないでviを終了する
編集された部分があるとこれでは終了できない
q!
現在のテキストを書き込まないで強制的にviを終了する
w file
fileに現在のテキストを書き込む
wq
現在のテキストを書き込んでviを終了する
n
次のテキストを編集する
e file
fileという名前のテキストを編集する
e#
一つ前のテキストを編集する
rew
複数のテキストを編集していた場合に、最初のテキストに戻って編集する
(範囲)s/(文字列1)/(文字列2)/[g]
文字列の変換
(範囲)
変換する範囲の指定
(文字列1)
変換前の文字列
(文字列2)
変換後の文字列
g
行中の全ての(文字列1)を(文字列2)に変換する。
g が指定されていないと行中の最初の(文字列1)だけしか変換しない。
なお、(文字列1)、(文字列2)には正規表現を使うことができる。

マルチウインドウ

Ctrl-ws
新しいウインドウを作る。
Ctrl-wj
下のウインドウにカーソルを移動。
Ctrl-wk
上のウインドウにカーソルを移動。
Ctrl-w+
ウインドウを1行分拡張する。
Ctrl-w-
ウインドウを1行分縮小する。
Ctrl-w=
各ウインドウの行数をそろえる。

フォールディング

フォールドは多重化できる。
また、フォールドはウインドウごとに固有である。

zf
フォールドを作る。
zo
フォールドを開く。
zc
フォールドを閉じる。
zr
すべてのフォールドを開く。
zm
すべてのフォールドを閉じる。
zR
多重化したすべてのフォールドを開く。
zM
多重化したすべてのフォールドを閉じる。
zn
フォールドの禁止。
zN
フォールドの禁止を解除。
zi
フォールドの禁止をon/off。
zO
カーソル位置にある多重化したものも含めて全フォールドを開く。
zC
カーソル位置にある多重化したものも含めて全フォールドを閉じる。
zd
カーソル位置にあるフォールドを削除。
zD
カーソル位置にある多重化したものも含めて全フォールドを削除。

タグジャンプ

タグファイルを作成するには、ctags コマンドを使用する。
タグ名は Tab で補完が可能。

Ctrl-]
カーソル下の単語をタグとしてジャンプする。
Ctrl-w]
新しいウインドウを開いて、カーソル下の単語をタグとしてジャンプする。
Ctrl-t
ひとつ前のタグに戻る。
:tags
タグの一覧を表示。
:set tags=タグファイル,...
タグファイルを追加
:set tags=dir/**/tags
ディレクトリ dir 以下のすべてのタグファイルを追加
:tnext
複数定義されているタグの次の定義へジャンプ。
:tselect tagname
複数定義されているタグ tagname の一覧を表示。
:tag /string
Tab で文字列 string が含まれているタグを補完。

設定ファイル

~/.exrc
このファイルがホームディレクトリにあると、viを実行する前にファイルの内容をexのコマンドとして実行する。
~/.vimrc
vim 用の設定ファイル。
vim は ~/.vimrc が無ければ ~/.exrc を読み込む。

参考


Home | Contents
Mail