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