Transcript Document

Viva !! vi
北海道大学大学院 理学院宇宙理学専攻
宇宙惑星グループ 修士 1 年
近藤 奨
本日のお品がき
•
•
•
•
•
•
vi を語る前に・・・
vi とは?
コマンドモードと編集モード
vi の便利なコマンド
vi の環境設定
こんなこともできちゃうぜ vi
vi を語る前に・・・ クイズ!!
• 1998 年 (EPnetFaN 結成) から 2010 年1 月ま
でに EPnetFaN で語られた話題の数はいくつ
でしょう?? (inex はそれぞれ一回とカウント)
1. 約 300
2. 約 350
3. 約 400
http://www.ep.sci.hokudai.ac.jp/~epnetfan/
答え
3,約 400
続いて第二問
• 1998 年から 2010 年1 月までで 「エディタ」 の
お話をした回数は何回でしょう??
(inex はカウントしない)
1. 5 回
2. 10 回
3. 15 回
答え
1, 5 回
• 内訳
– TeX: 3 回
– Emacs : 2 回
– vi : 0 回
– nano : 0 回
EPnetFaN では余り
エディタ のお話は
されたことがない!
じゃあ
エディタの話を
しようではないか!!
editor 特集!!
vi, emacs, nano
を語ろうぜ!!
北大のエディタ事情(院生)
nano (1 人?)
vi(1 人)
•vi, nano 使いは
マイナーな存在 ・・・
(きっとこんな感じ・・・)
vi とは
• vi (Visual extended editor) : UNIX 系 OS の標準的
な editor
– UNIX 系 OS で vi が入っていないシステムはまずない
• ビル・ジョイという人が開発
• システムの負荷が小さく,軽快
• 操作が直観的ではない
– コマンドモードと挿入モード
– vi が敬遠される理由?
• vi のクローンで vim という
ものがある
http://ecx.images-amazon.com/images/I/51MOhNnmJLL.jpg
vim
• Vi IMprove の略称,vi のクローン
• vi というと vim を指すことが多い
– Dennou サーバから debian をインストールすると
vim が入る
• 基本的には vi と操作は同じ
– vi よりも高機能
– 設定により操作を直観的にできる
– 現在進行形で開発が行われている
http://iccf-holland.org/click5.html
Dennou サーバから debian をインス
トールした場合の vim
• ある程度 vi と互換性が保たれている状態
–
–
–
–
–
編集モードでカーソルキーが使えない
編集モードでバックスペースが使えない
挿入モードとコマンドモードの区別がつかない
一部のコマンドは画面に表示されない
などなど・・・
なかなか使いにくい!!
(それがいいという人もいるけど・・・)
すべて設定により修正できる!!
コマンドモードと挿入モード
• 作業目的に応じたモード
– 「コマンドモード」 : 文字の編集命令
– 「挿入モード」 : 文字の入力
– (コマンドモードをさらに「exモード 」と「コマンド
モード」と分ける場合も)
• vi を起動するとコマンドモードの状態で立ち
上がる
• コマンドモードと挿入モードの間を行き来しな
がらファイル操作をする
コマンドモードと挿入モード
コマンドモード (ex モード)
a, i, o
A, I, O
Esc キー
挿入モード
わかんなくなったら [Esc] キー
基本的なコマンド
コマンド
解説
: w (!)
ファイルの保存
! をつけると強制保存
: q (!)
終了
! をつけると強制終了
: w fileneme
別名で保存
[Esc]
コマンドモードへ移行
i, I, a, A, o, O
挿入モードに移動
x, dd
一文字, 一行削除
これさえ知っときゃ vi は何とかなる!!
便利なコマンド~その1
コマンド
解説
コマンド
解説
: n1,n2 co n3
n1 行から n2 行まで
を n3 行の下にコ
ピー
: set showmode
挿入モードの 表
示がされる
: n1,n2 m n3
n1 行から n2 行まで
を切り取り n3 行の下
に張る
: set autoindent
インデントを自動
で下げてくれる
: n1, n2 d
n1 行から n2 行まで
を削除
: set backup
バックアップの自
動生成
: shell
一時的に shell を立
ち上げる
:sp (vs)
ウィンドウを垂直
(水平) 方向に分
割
/文字列
文字列の検索
: set number
行番号の表示
便利なコマンド~その2
コマンド
解説
コマンド
解説
yy
カーソルのある行
の列をコピー
. (ピリオド)
1つ前の作業を繰り
返す
p ,P
カーソルのある行
の下(p) ,上(P) の
行に張り付け
num + . (ピリオド)
1つ前の作業を
num 回繰り返す
dd
カーソルのある行
を削除
dw
一単語削除
u
1つ前の編集を取
りけす(undo)
yw
一単語コピー
num + G
num の行にジャ
ンプ
ZZ
上書き保存して終
了
vi(vim) の環境設定
• 起動するたびに毎回 :set hogehoge として環
境設定するのはめんどい!!
• 自分のホームディレクトリ .exrc (.vimrc) という
ファイルを作れば vi の起動時に自動的にこ
のファイルが読み込まれる
.exrc, .vimrc を編集して自分なり
な環境をカスタマイズできる!!
.vimrc の例
コマンドを表示
実際に vi を
操作してみよう!!
こんなこともできちゃうぞ vi ~その1
• 過去に削除してしまった単語や行の
復元
– 単語や行単位で削除した場合,その内容は一時
的にレジスタに保存されている
– 過去 9 回までなら遡って復元可能!!
– [“[num] p(P)] でカーソル位置の後ろ(前)に復元
される
– [:reg] で保存されている内容を確認できる
– [“1pu.u.u. --- ] とする過去に遡って削除した内容
を次々に表示してくれる
こんなこともできちゃうぞ vi ~その2
• よく使う単語や行(複数でもOK)はレジス
タに保存して簡単に張り付けることがで
きる
– “[a-z][num]yy(or)dd あるいは “[a-z] y(or)d [num]e と入力
• [a-z] : バッファの名前,a から z まで指定可能
• [num]: 複数指定したいときはここに書く
• y はバッファにコピー,d は切り取ってコピー
– [“a5yy] とするとカーソル位置から 5 行分を a というバッ
ファにコピー
– “[a-z] p (or) P でカーソル位置の後ろ(前)に張り付け
– [:reg] で保存した内容を確認できる
こんなこともできちゃうぞ vi ~その3
• 単語やフレーズの省略形を定義できる
–
–
–
–
(例1) :ab ep EPnetFaN
(例2) :ab cps Center for Planetary Science
挿入モードで省略形を打てば勝手に変換される
.exrc, .vimrc にも書くことができる
• ユーザー独自のコマンドを定義できる
– (例) 単語の順番を入れ替えるコマンドを定義する
• :map q dwelp (dw :単語の削除,e : 右隣の単語の末尾に移動,
l : 右に1つ移動,p : カーソルの後ろに張り付け)
– コマンドモードで使われない文字で定義する必要がある
– .exrc, .vimrc にも書くことができる
実際にやってみよう!!
まとめ
• 直観的でない分,慣れるまでが大変だが使え
れば非常に便利
• vi (vim)は軽いエディタであるにもかかわらず
高機能!!
• コマンドの定義など高度な操作も可能
• 慣れるとすごいよ!!
VIVA !! vi !!
参考文献
• Linda Lamb 著 福崎俊博 訳,vi 入門 ,アス
キー出版局
• 情報実験第4回資料,
http://www.ep.sci.hokudai.ac.jp/~inex/y2009/0508/jitsugi/m
enu.html
• Vim の使い方
http://www15.ocn.ne.jp/~tusr/vim/vim_text2.html
• Vi を使い倒そう
http://www.linux.or.jp/JF/JFdocs/vi-user-usage.html