vi/Vim について

Download Report

Transcript vi/Vim について

vi/Vim について
~エディタ・ウォーズエピソード1~
北海道大学院理学院 博士 1 年
荻原弘尭
目次
•
•
•
•
•
•
はじめに
テキストエディタ
vi
Vim
まとめ
付録
はじめに - 注意書き • Web で調べたり軽く本を読んだ程度の知識なの
で曖昧で適当な知識です
• 質問にはなるべく答えられるようにしますが答え
られない場合もあります
• 拙い説明も多々あります
今回の発表で誤った知識を持ったという場合や何
か問題が起こった場合でも私は責任を持ちません.
つまり何が言いたいかというと
詳しく知りたいなら ggrks
はじめに
- なぜ今回 vi/Vim を説明するか –
• エディタ戦争
– プログラミングを行う人々の中でどのテキストエディタが一番良いか
というテーマの論争
– 大きく分けて vi 派(vimmer), Emacs 派(Emacists), nano派(どういうか
わかりません)がある
• vi/Vim は嫌われ者
– (初めてやる人にとって)わかりにくい
– あの人の画面黒いね
• なぜ私が vim を使っているか
– 情報実験 INEX で使用するように言われたから
– 操作が単純で打ちやすい
– less や lv などのよく使う別のツールにも同じコマンド操作ができるか
ら
• エディタは自分が使いやすいものを好き勝手に使っていい.
しかし, 自分が使いやすいエディタを選択するときにとっつきにく
いからと言ってvim を選択肢から除外することはしないでほしい
テキストエディタ
• コンピュータでテキストファイルの作成・編集・保
存するソフトウェア
• 様々なテキストエディタ
– メモ帳
– 秀丸
– nano
– emacs
– vi/Vim
– etc
vi - viとは? • Virus が由来Visual editorが由来
• UNIX 系 OS で良く用いられている画期的なテキス
トエディタ
• Bill Joy によって開発された
• ラインエディタ ex をベースとしたスクリーンエディ
タ
• 現在では純な vi はほぼ使われていない
– Vim や nvi 等互換エディタが使われている
vi - vi の特徴• モードを持つ
– Beep repeatedly
• ビービー鳴らす
– Break everything:
Normal
ファイル操作やカーソル操作をする基本のモード
Insert
• 何もかも台無しにする テキストの編集をするモード
• 動作が軽い
• 環境に依存しない
– 大体のディストリビューションに互換のものが存在する
• 単純なキー入力で操作できる
– 修飾キーを使わなくても大体の操作はできる
vi - vi の利点 • 操作を覚えるまでが大変だが覚えたらとても編集
が楽になる
– 慣れた vi 愛好家はどんなものにも vi の操作を求める
• less や lv 等で同じ操作ができる
• UNIX 系なら大体入っている
• 動作が軽い
vi - vi の歴史 • UNIX 誕生した頃(1970年頃)はプリンタとタイプラ
イタ端末でエディットしていた
– ラインエディタを用いていた.
• ラインエディタ
– テキストエディタの一つ
– 編集は行単位
– 編集時には編集行のみ表示されて, テキスト全体は見ることができ
ない(編集と表示でモードが分かれている)
• ディスプレイなども普及し, 表示速度などが増加
– Bill Joy が ラインエディタ ex を基にスクリーンエディタ
vi を作成
– vi の特徴はほぼ ラインエディタを基にして作ったため
vi - vi 互換エディタ • 現在 vi はほぼ使われていない
– vi 互換エディタが使われている
– vi のライセンスなどの問題で BSD や SunOS のみしか
使えなかった
• vi 互換エディタ
– 基本的な操作は vi と同じエディタ
– 独自の拡張性を持つ
• elvis
• nvi
• Vim
Vim - Vim とは • vi をベースとした高い拡張性を持つ vi 互換エディ
タ
• 1980 年頃に Bram Moolenaar によって Amiga 向
けに開発された
• 当初は Vi IMitation 由来であり, 1992年頃からは
Vi IMproved 由来
– 読み方は ヴィムあるいは ヴィアイエム
• 現在では多くの Unix 系 OS で採用されている標
準エディタ
• 現在のバージョンは 7.4
– http://www.vim.org/
Vim - Vim の特徴 • 基本操作はほぼ vi と同じで vi と高い互換性を持つ
• 大きく分けて3つのモードが存在する
– nomarl : 基本のファイル操作やカーソル操作を行う
– Insert : テキストの編集を行う
– Visual : テキストの選択を行う
• 高い拡張性を持つ
– どこでも同じ Vim とは限らない
• vi の軽快さはあまりない
• GUI 操作もできる
– gvim あるいは vim -g
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 モード時のこと
Vim - Vimの使い方超基礎編 2• カーソル移動(Normal モード, Visual モード)
– h : 左に移動 (覚え方: Hidari)
– j : 下に移動 ( 覚え方: キーボードを見たら日本語で「ま」なので「真
下」)
– k : 上に移動( 覚え方: Kita)
– L : 右に移動( 覚え方: left じゃない方)
– 覚え方はアンサイクロペディアの vi の項を引用
– アルファベットに意味はなくホームポジションで押しやすいようになっ
ている
• アンドゥ(やり直し)
–u
• リドゥ(やり直しのやり直し)
– ctr + r
Vim - Vimの使い方超基礎編 2• ヤンク(コピー)
– y
• ペースト(貼り付け)
– p
• 文字削除
– x
• 削除(切り取り)
– d
• ヤンクや削除の範囲選択はカーソルの移動コマンドや回数(何文字か)
などと組み合わせて選択できる
• マニュアルを見る
– :help [] ([]はコマンド)
とりあえず vimtutor をやってみよう
更にわからないことはマニュアルを読もう
Vim - 僕の考えた最強の Vim • Vim は拡張性を持つ
– 独自のスクリプト言語を持つ
– 自分でよく使う設定を初期設定にできる
• (ただし推奨されないが元々の vi でもできた)
– 他の人が作った vim スクリプトなどのプラグインをイン
ストールできる
• 自分でよく使う設定を初期設定にする
– $HOME/.vimrc という設定ファイルに書き込む
– 書き方は基本的には vim のコマンドと同じ
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
Vim - 僕の考えた最強の Vim ~私のおすすめ設定 便利編~
• バックスペースキーで削除できるものを指定
– set backspace=indent,eol,start
• カーソルを行頭, 行末で止まらないようにする
– set whichwrap=b,s,h,l,<,>,[,]
• 入力中のコマンドを表示
– set showcmd
• ウィンドウの幅より長い行は折り返して表示
– set wrap
Vim - 僕の考えた最強の Vim ~私のおすすめ設定 更に便利編~
• 常にステータスラインを表示
– set laststatus=2
• ステータスラインに設定をいろいろ表示
– set
statusline=%t%=\[TYPE=%Y]\[FORMAT=%{&ff}]\[ENC=%{(&fe
nc!=''?&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
まとめ
• vi はラインエディタベースのスクリーンエディタ
– 操作を覚えるまでは大変だが覚えると病みつき
• Vim は vi の上位互換エディタ
– vi のいいところはなくなった気がするがかなり便利
なったエディタ
付録(便利な使い方)1
• カーソル移動
– gg
• 一番最初の行に行く
–G
• 一番最後の行に行く
– numgg
• 任意の行(numは任意の行番号)に行く
–w
• 単語単位で前方向に移動する
–b
• 単語単位で後ろ方向に移動する
–0
• 行の最初へ移動
–$
• 行の最後へ移動
付録(便利な使い方)2
• 現在のカーソルがある行を調べる
– ctr + g
• 削除
– dw
• カーソルがある単語を削除
• dnumw (あるいはnumdw)で num 個の単語を削除できる
– dd
• 一行削除
• numdd でnum 行削除できる
–D
• カーソルがある文字以降の一行を削除
付録(便利な使い方)3
• 検索
– /string
• string は検索する単語
– #
• カーソル位置の単語の検索
– n
• 前方向に検索された候補を変える
– N
• 後ろの方向に検索された候補を変える
• 置換
– r
• 一文字置換
– R
• 文字の置き換えモードが始まる
– C
• カーソルがある文字以降を切り取り Insert モードに移行する
– :s/string1/string2
• カーソルがある行の最初のstring1 を string2 に置換する
– :%s/string1/string2/gc
• テキスト全体の string1 を string2 に置換する
付録(便利な使い方)4
• バッファ(ウィンドウのこと)を開く
– :new file
• 上方向の新たなバッファに file を開く
• file を指定しないと無名の仮ファイルを展開する
– :split file
• 上方向の新たなバッファに file を開く
• file を指定しないと今開いている file を展開する
– :vsplit file
• 左方向の新たなバッファに file を開く
• file を指定しないと今開いている file を展開する
付録(便利な使い方)5
• 選択した行の初めに同じ文字を入れる
– ctr + v → 入れたい行を選択→I(大文字アイ)→好きな言葉→ESC
– 行選択で $ を押して I を A にすると選択した行の最後に同じ文字を
入れられる
• ファイルの差分をマージする
– vimdiff file1 file2 (あるいは vim –d file1 file2)
• file1 と file2 で違う箇所を強調して表示する
• [c
– 違いがある場所に前方向に移動する
• ]c
– 違いがある場所に後ろ方向に移動する
• dp
– 現在カーソルがあるバッファから差分をコピー
• do
– 現在のカーソルがあるバッファへ差分をコピー
• ファイルエクスプローダーを使う
– :Se
参考文献
• 北浦訓行, 小島範幸, 大木敦雄, 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