260 likes | 503 Views
vi/Vim について ~ エディタ・ウォーズエピソード 1~. 北海道大学院理学院 博士 1 年 荻原弘尭. 目次. はじめに テキストエディタ vi Vim まとめ 付録 . はじめに - 注意書き -. Web で調べたり軽く本を読んだ程度の知識なので曖昧で適当な知識です 質問にはなるべく答えられるようにしますが答えられない場合もあります 拙い説明も多々あります. 今回の発表で誤った知識を持ったという場合や何か問題が起こった場合でも私は責任を持ちません . つまり何が言いたいかというと 詳しく知りたいなら ggrks.
E N D
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とは? - Visual editorが由来 • Virus が由来 • 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=%{(&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
まとめ • 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 file1file2 (あるいは vim –d file1file2) • 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