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