vi/vim について ~ エディタ・ウォーズエピソード 1~
DESCRIPTION
vi/Vim について ~ エディタ・ウォーズエピソード 1~. 北海道大学院理学院 博士 1 年 荻原弘尭. 目次. はじめに テキストエディタ vi Vim まとめ 付録 . はじめに - 注意書き -. Web で調べたり軽く本を読んだ程度の知識なので曖昧で適当な知識です 質問にはなるべく答えられるようにしますが答えられない場合もあります 拙い説明も多々あります. 今回の発表で誤った知識を持ったという場合や何か問題が起こった場合でも私は責任を持ちません . つまり何が言いたいかというと 詳しく知りたいなら ggrks. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/1.jpg)
vi/Vim について
~ エディタ・ウォーズエピソード 1~北海道大学院理学院 博士 1 年荻原弘尭
![Page 2: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/2.jpg)
目次
• はじめに• テキストエディタ• vi • Vim• まとめ• 付録
![Page 3: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/3.jpg)
はじめに - 注意書き -
• Web で調べたり軽く本を読んだ程度の知識なので曖昧で適当な知識です
• 質問にはなるべく答えられるようにしますが答えられない場合もあります
• 拙い説明も多々あります今回の発表で誤った知識を持ったという場合や何か問題が起こった場合でも私は責任を持ちま
せん .つまり何が言いたいかというと
詳しく知りたいなら ggrks
![Page 4: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/4.jpg)
はじめに - なぜ今回 vi/Vim を説明する
か –• エディタ戦争– プログラミングを行う人々の中でどのテキストエディタが一番良
いかというテーマの論争– 大きく分けて vi 派 (vimmer), Emacs 派 (Emacists), nano 派 ( どういう
かわかりません ) がある• vi/Vim は嫌われ者
– ( 初めてやる人にとって ) わかりにくい– あの人の画面黒いね
• なぜ私が vim を使っているか– 情報実験 INEX で使用するように言われたから– 操作が単純で打ちやすい– less や lv などのよく使う別のツールにも同じコマンド操作ができ
るから• エディタは自分が使いやすいものを好き勝手に使っていい .
しかし , 自分が使いやすいエディタを選択するときにとっつきにくいからと言って vim を選択肢から除外することはしないでほしい
![Page 5: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/5.jpg)
テキストエディタ
• コンピュータでテキストファイルの作成・編集・保存するソフトウェア
• 様々なテキストエディタ–メモ帳–秀丸– nano– emacs– vi/Vim– etc
![Page 6: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/6.jpg)
vi - vi とは ? -
• Virus が由来 • UNIX 系 OS で良く用いられている画期的な
テキストエディタ• Bill Joy によって開発された• ラインエディタ ex をベースとしたスクリー
ンエディタ• 現在では純な vi はほぼ使われていない– Vim や nvi 等互換エディタが使われている
Visual editor が由来
![Page 7: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/7.jpg)
vi - vi の特徴 -
• モードを持つ– Beep repeatedly
• ビービー鳴らす– Break everything:
• 何もかも台無しにする
• 動作が軽い• 環境に依存しない– 大体のディストリビューションに互換のものが存在
する• 単純なキー入力で操作できる– 修飾キーを使わなくても大体の操作はできる
Normal
Insertファイル操作やカーソル操作をする基本のモード
テキストの編集をするモード
![Page 8: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/8.jpg)
vi - vi の利点 -
• 操作を覚えるまでが大変だが覚えたらとても編集が楽になる–慣れた vi 愛好家はどんなものにも vi の操作を
求める• less や lv 等で同じ操作ができる• UNIX 系なら大体入っている• 動作が軽い
![Page 9: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/9.jpg)
vi - vi の歴史 -
• UNIX 誕生した頃 (1970 年頃 ) はプリンタとタイプライタ端末でエディットしていた– ラインエディタを用いていた .
• ラインエディタ– テキストエディタの一つ– 編集は行単位– 編集時には編集行のみ表示されて , テキスト全体は見ることができな
い ( 編集と表示でモードが分かれている )
• ディスプレイなども普及し , 表示速度などが増加– Bill Joy が ラインエディタ ex を基にスクリーンエディ
タ vi を作成– vi の特徴はほぼ ラインエディタを基にして作ったため
![Page 10: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/10.jpg)
vi - vi 互換エディタ -
• 現在 vi はほぼ使われていない– vi 互換エディタが使われている– vi のライセンスなどの問題で BSD や SunOS の
みしか使えなかった• vi 互換エディタ–基本的な操作は vi と同じエディタ–独自の拡張性を持つ• elvis• nvi• Vim
![Page 11: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/11.jpg)
Vim - Vim とは -
• vi をベースとした高い拡張性を持つ vi 互換エディタ
• 1980 年頃に Bram Moolenaar によって Amiga 向けに開発された
• 当初は Vi IMitation 由来であり , 1992 年頃からは Vi IMproved 由来–読み方は ヴィムあるいは ヴィアイエム
• 現在では多くの Unix 系 OS で採用されている標準エディタ
• 現在のバージョンは 7.4– http://www.vim.org/
![Page 12: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/12.jpg)
Vim - Vim の特徴 -• 基本操作はほぼ vi と同じで vi と高い互換性を
持つ• 大きく分けて 3 つのモードが存在する– nomarl : 基本のファイル操作やカーソル操作を行う– Insert : テキストの編集を行う– Visual : テキストの選択を行う
• 高い拡張性を持つ– どこでも同じ Vim とは限らない
• vi の軽快さはあまりない• GUI 操作もできる– gvim あるいは vim -g
![Page 13: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/13.jpg)
Vim - Vim の使い方超基礎編 1-
• Normal モードへの移動– ESC( どのモードでも可 ), ctrl+c(Normal モード以外 )
• Insert モードへの移動– a, A, i, I, o, O
• Visual モードへの移動– v, V, ctr+v (それぞれ文字選択 , 行選択 , 矩形選択 )
• ファイルの書き込み方– :w (write の略 )
• ファイルの閉じ方– :q (quite の略 )
※但し書きがなければすべて Normal モード時のこと
![Page 14: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/14.jpg)
Vim - Vim の使い方超基礎編 2-
• カーソル移動 (Normal モード , Visual モード )– h : 左に移動 ( 覚え方 : Hidari)– j : 下に移動 ( 覚え方 : キーボードを見たら日本語で「ま」な
ので「真下」 )– k : 上に移動 ( 覚え方 : Kita)– L : 右に移動 ( 覚え方 : left じゃない方 )– 覚え方はアンサイクロペディアの vi の項を引用– アルファベットに意味はなくホームポジションで押しやすい
ようになっている
• アンドゥ ( やり直し )– u
• リドゥ ( やり直しのやり直し )– ctr + r
![Page 15: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/15.jpg)
Vim - Vim の使い方超基礎編 2-• ヤンク(コピー )
– y• ペースト (貼り付け )
– p• 文字削除
– x• 削除 (切り取り )
– d• ヤンクや削除の範囲選択はカーソルの移動コマンドや回数 ( 何文字か ) などと組み合わせて選択できる
• マニュアルを見る– :help [] ([] はコマンド )
とりあえず vimtutor をやってみよう更にわからないことはマニュアルを読
もう
![Page 16: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/16.jpg)
Vim - 僕の考えた最強の Vim -
• Vim は拡張性を持つ–独自のスクリプト言語を持つ–自分でよく使う設定を初期設定にできる• ( ただし推奨されないが元々の vi でもできた )
–他の人が作った vim スクリプトなどのプラグインをインストールできる
• 自分でよく使う設定を初期設定にする– $HOME/.vimrc という設定ファイルに書き込む–書き方は基本的には vim のコマンドと同じ
![Page 17: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/17.jpg)
Vim - 僕の考えた最強の Vim -~ 私のおすすめ設定 最低限編
~• 構文強調– syntax enable
• コマンドライン補完をする– set wildmenu– set wildchar=<tab>
• 改行コードの自動認識– set fileformats=unix, dos,mac
• ビープ音を鳴らさない– set vb t_vb=
• 文字コードの設定 ( デフォルトを utf-8 にする )– set encoding=utf-8– set fileencoding=utf-8– set fileencodings=ucs-bom,iso-2022-jp,sjis,cp932,euc-jp– set fileencodings+=,ucs-21e,ucs-2,utf-8
![Page 18: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/18.jpg)
Vim - 僕の考えた最強の Vim -~ 私のおすすめ設定 便利編 ~
• バックスペースキーで削除できるものを指定– set backspace=indent,eol,start
• カーソルを行頭 , 行末で止まらないようにする– set whichwrap=b,s,h,l,<,>,[,]
• 入力中のコマンドを表示– set showcmd
• ウィンドウの幅より長い行は折り返して表示– set wrap
![Page 19: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/19.jpg)
Vim - 僕の考えた最強の Vim -~ 私のおすすめ設定 更に便利編
~• 常にステータスラインを表示– set laststatus=2
• ステータスラインに設定をいろいろ表示– set statusline=%t%=\[TYPE=%Y]\[FORMAT=%{&ff}]\[ENC=%
{(&fenc!=''?&fenc:&enc)}]\ \ %l/%L,%v\ \ %p%%• 全角スペースを表示– augroup highlightZenkakuSpace– autocmd!– autocmd VimEnter,ColorScheme * highlight ZenkakuSpace
term=underline ctermbg=white guibg=white– autocmd VimEnter,WinEnter * match ZenkakuSpace /
/augroup END
![Page 20: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/20.jpg)
まとめ
• vi はラインエディタベースのスクリーンエディタ–操作を覚えるまでは大変だが覚えると病みつき
• Vim は vi の上位互換エディタ– vi のいいところはなくなった気がするがかなり便利なったエディタ
![Page 21: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/21.jpg)
付録 (便利な使い方 )1• カーソル移動– gg
• 一番最初の行に行く– G
• 一番最後の行に行く– numgg
• 任意の行 (num は任意の行番号 ) に行く– w
• 単語単位で前方向に移動する– b
• 単語単位で後ろ方向に移動する– 0
• 行の最初へ移動– $
• 行の最後へ移動
![Page 22: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/22.jpg)
付録 (便利な使い方 )2
• 現在のカーソルがある行を調べる– ctr + g
• 削除– dw
• カーソルがある単語を削除• dnumw ( あるいは numdw) で num 個の単語を削除できる
– dd• 一行削除• numdd で num 行削除できる
– D• カーソルがある文字以降の一行を削除
![Page 23: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/23.jpg)
付録 (便利な使い方 )3• 検索
– /string • string は検索する単語
– # • カーソル位置の単語の検索
– n• 前方向に検索された候補を変える
– N• 後ろの方向に検索された候補を変える
• 置換– r
• 一文字置換– R
• 文字の置き換えモードが始まる– C
• カーソルがある文字以降を切り取り Insert モードに移行する– :s/string1/string2
• カーソルがある行の最初の string1 を string2 に置換する– :%s/string1/string2/gc
• テキスト全体の string1 を string2 に置換する
![Page 24: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/24.jpg)
付録 (便利な使い方 )4
• バッファ ( ウィンドウのこと ) を開く– :new file • 上方向の新たなバッファに file を開く• file を指定しないと無名の仮ファイルを展開する
– :split file• 上方向の新たなバッファに file を開く• file を指定しないと今開いている file を展開する
– :vsplit file• 左方向の新たなバッファに file を開く• file を指定しないと今開いている file を展開する
![Page 25: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/25.jpg)
付録 (便利な使い方 )5• 選択した行の初めに同じ文字を入れる
– ctr + v → 入れたい行を選択→ I( 大文字アイ )→ 好きな言葉→ ESC– 行選択で $ を押して I を A にすると選択した行の最後に同じ文字を入れられる
• ファイルの差分をマージする– vimdiff file1 file2 ( あるいは vim –d file1 file2)
• file1 と file2 で違う箇所を強調して表示する• [c
– 違いがある場所に前方向に移動する• ]c
– 違いがある場所に後ろ方向に移動する• dp
– 現在カーソルがあるバッファから差分をコピー• do
– 現在のカーソルがあるバッファへ差分をコピー
• ファイルエクスプローダーを使う– :Se
![Page 26: vi/Vim について ~ エディタ・ウォーズエピソード 1~](https://reader036.vdocuments.net/reader036/viewer/2022081512/56813b67550346895da469f8/html5/thumbnails/26.jpg)
参考文献• 北浦訓行 , 小島範幸 , 大木敦雄 , 2009,「はじめての vi & Vim」 , 技術評
論社• welcom home :vim
– http://www.vim.org/• vi – ウィキペディア
– http://ja.wikipedia.org/wiki/Vi• vi – アンサイクロペディア
– http://ansaikuropedia.org/wiki/Vi• Vim – ウィキペディア
– http://ja.wikipedia.org/wiki/Vim• Emacs – アンサイクロペディア
– http://ansaikuropedia.org/wiki/Emacs• エディタ戦争 – ウィキペディア
– http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E6%88%A6%E4%BA%89
• Vim Replacement Icon– http://wolfrosch.com/text/2012/04/25