SlideShare una empresa de Scribd logo
1 de 49
2013/06/10
 Lv.1:マジでこれだけ知っときゃなんとかなる
◦ モードについて
◦ 基本操作
 Lv.2 :これ知ってるともうちょっとマシになる
◦ 置換
◦ Vimgrep
◦ 矩形選択
◦ インデント
 Lv.3 :余裕あったら覚えたらええんちゃうかな
 Vimには4つのモードがある
◦ Normalモード
 基本になるモード。すべてはここから始まる。
◦ Insertモード(挿入モード)
 文字を入力する
◦ Visualモード(選択モード)
 文字を選択する
◦ Commandモード
 便利なコマンドを使ってごにょごにょする
これらを切り替える方法をまず覚える
 挿入モード
1. ノーマルモードから「i」で挿入モードへ
2. 「hogehoge」と入力する
3. 「Esc」でノーマルモードに戻る
 ビジュアルモード
1. ノーマルモードから「v」でビジュアルモードへ
2. 矢印キーで行ったり来たりする
3. 「Esc」でノーマルモードに戻る
 コマンドモード
1. ノーマルモードから「:」でコマンドモードへ
2. 「set」とか打つとちょっと楽しい
3. 「Enter」を押して小窓を閉じる
4. 「Esc」でノーマルモードに戻る
 Undo, Redo
 コピー&ペースト
 検索
 ファイルを保存する
 ファイルを閉じる
 ファイルを開く
 Undo, Redo
◦ Undo ノーマルモードで「u」
◦ Redo ノーマルモードで「Ctrl+r」
 Undo, Redo
1. ノーマルモードから「i」で挿入モードへ移る
2. 「hogehoge」と入力する
3. 「Esc」でノーマルモードに戻る
4. 「u」と打つ
5. → 「hogehoge」が無かったことに!
6. 「Ctrl+r」と打つ
7. →「hogehoge」が復活!
8. ノーマルモードから「i」で挿入モードへ移る
9. 「hogehoge」と入力してBackSpaceでもどって「hogefuga」に
する
10. 「u」と打つ
11.→「hogefuga」が「hogehoge」になるんじゃなくて、行自体
無くなる!
 コピー&ペースト
◦ コピー 範囲選択して「y」
◦ ペースト ノーマルモードで「p」
 コピー&ペースト
1. ノーマルモードから「i」で挿入モードへ移る
2. 「hogehoge」と入力する
3. 「Esc」でノーマルモードに戻る
4. 「v」でビジュアルモードへ移る
5. 矢印キーを使って「geho」を範囲選択
6. 「y」を打つ
7. (→ 「geho」がコピーされる)
8. 矢印キーで適当な場所に移動する
9. 「p」を打つ
10.→ 「geho」がペーストされる
 検索
◦ 後方検索 ノーマルモードで「/<検索文字列>」
 次の結果へ「n」
 前の結果へ「N」
 検索
1. ノーマルモードから「i」で挿入モードへ移る
2. 「hogehoge」と入力する
3. 「Esc」でノーマルモードに戻る
4. 「/geho」と打つ
5. →検索できる
 ファイルを保存
◦ 名前を付けて保存 コマンドモードで「w <ファイル名>」
◦ 上書き保存 (ファイルを開いた状態で)コマンドモードで
「w」
◦ 強制保存 「w」の横に「!」を付ける
 「w! <ファイル名>」
 「w!」
 ファイルを保存
1. ノーマルモードから「i」で挿入モードへ移る
2. 「hogehoge」と入力する
3. 「Esc」でノーマルモードに戻る
4. 「:」でコマンドモードへ移る
5. 「w hoge.txt」と打ってEnter
6. → (カレントディレクトリに)hoge.txtが保存される
 カレントディレクトリは「cd」で確認
 ファイルを閉じる
◦ 閉じる コマンドモードで「q」
◦ 強制で閉じる コマンドモードで「q!」
 ファイルを閉じる
1. (hoge.txtを開いているものとする)
2. ノーマルモードから「:」でコマンドモードへ移る
3. 「q」と打ってEnter
4. → ファイルが閉じられる
 ファイルを開く
◦ コマンドモードで「e <ファイル名>」
 ファイルを開く
1. (カレントディレクトリにhoge.txtがあるものとする)
2. ノーマルモードから「:」でコマンドモードへ移る
3. 「e hoge.txt」と打ってEnter
4. → ファイルが開かれる
i 挿入モードへ
v 選択モードへ
: コマンドモードへ
/
後方検索
(「n」「N」で結果を行き来)
<Esc> ノーマルモードに戻る
u アンドゥ
Ctrl+r リドゥ
y コピー
p ペースト
:w ファイルを保存
:q ファイルを閉じる
:e ファイルを開く
 矩形選択
 インデント
 置換
 Vimgrep
 「Ctrl+V」で矩形選択モードになる。
◦ 選択モードの亜種。
 よくやる操作
◦ 引用ブロックをつける
1. 先頭行を矩形選択
2. 「I」で挿入モードに入るので「>」を入力
3. 「Esc」でノーマルモードに戻る
4. → 選択していた場所すべてに入力文字が挿入される
 ほかにも興味あれば→
◦ http://nanasi.jp/articles/howto/editing/blockwise-
operation.html
 カレント行をインデントする「>>」
 カレント行のインデントを外す「<<」
 選択行をインデントする「V」「>」
 選択行のインデントを外す「 V 」「<」
 まずはこれを覚える
◦ 「:%s/hoge/huga/gc」
◦ 意味:
 今開いているファイル内の(%)、
 hogeを、
 hugaに、
 行内でマッチする限り繰り返し(g)、
 一つ一つ確認しながら(c)、
 置換する
 応用
◦ 確認を挟まずに置換
 「c」を外す
◦ 区間を指定して置換
 8行目から13行目で置換 「:8,13s/hoge/huga/gc」
◦ 選択範囲内で置換
1. 任意の箇所を選択する
2. 「:」を打つ(→「:’<,’>」と表示される)
3. 続けて、「s/hoge/huga/gc」
◦ 区切り文字は、つり合いがとれていれば、 「/」じゃなくてもいい。
 「%s+hoge+huga+gc」
 「%s.hoge.huga.gc」
 まずはこれを覚える
◦ 「:vimgrep /hoge/j *.html |cw」
◦ 意味:
 hogeを含むかどうか、
 検索直後に結果にジャンプせず(j)、
 カレントディレクトリのhtmlファイルすべてを対象に、
 調べる
 結果を小窓で表示する(cw)
 Vimgrepを実行すると、検索結果が小窓で開かれる。
◦ 行き来するには「Ctrl+w Ctrl+w」(Ctrl押しっぱなしでw)
◦ 小窓を閉じるには「:cclose」
◦ 小窓を開くには「:copen」
 応用
◦ 短縮形「:vim」「:vimg」
◦ 検索結果の一番目をすぐ開きたい
 「j」を外す
◦ カレントディレクトリ以下を再帰的にgrep
 対象ファイルのところを「**/*.html」みたいな感じに
 →「j」
 ↑「k」
 ←「h」
 →「l」
 行の先頭「0」
 行の最初の文字「^」
 行の最後「$」
 行選択「 V 」
 行削除「dd」
 行ヤンク「yy」
 行結合「J」「gJ」
 指定文字列が含まない行を削除「:v/hoge/d」
 指定文字列が含まれる行を削除「:g/hoge/d」
 前方検索「?」
◦ 上方向の検索結果へ「n」
◦ 下方向の検索結果へ「N」
 語句検索
◦ 前方「#」
◦ 後方「*」
 前回の検索を繰り返す「//」
 タブ作成 「:tabnew」
 次のタブ 「:tabn」
 前のタブ 「:tabp」
 バッファ一覧を開く 「:buffers」
 次のバッファ 「:bn」
 前のバッファ 「:bp」
 指定したバッファを開く 「:buffer <number>」
 指定したバッファを閉じる 「:bd <number>」
 現在のバッファを閉じる 「:bd」
 すべて挿入モードで使用
◦ キーワード補完 「Ctrl+p」もしくは「Ctrl+n」
◦ 局所キーワード補完 「Ctrl+x Ctrl+p」
◦ オムニ補完 「Ctrl+x Ctrl+o」
◦ 辞書補完 「Ctrl+x Ctrl+k」
◦ パスパターン補完 「Ctrl+x Ctrl+i」
◦ ファイル名補完 「Ctrl+x Ctrl+f」
 水平分割 「:sp」
 垂直分割 「:vs」
 行き来「Ctrl+w Ctrl+w」(Ctrl押しっぱなしでw)
 分割した画面の横幅を増やす 「Ctrl+w >」
 分割した画面の横幅を減らす 「Ctrl+w <」
 分割した画面の縦幅を増やす 「Ctrl+w +」
 分割した画面の縦幅を減らす 「Ctrl+w -」
 カレント行をセンターにスイッチ 「zz」
 カレント行をスクリーン上部にする 「z<Enter>」
 カレント行をスクリーン下部にする 「zb」
 ファイルの先頭 「gg」
 ファイルの末尾 「G」
 スクリーンの最上部 「H」
 スクリーンの最下部 「L」
 カーソル位置の左「i」
 カーソル位置の右「a」
 カレント行の先頭「gI」
 カレント行の最初の文字の左「I」
 カレント行の末尾「A」
 カレント行の下方向に改行して移行「o」
 カレント行の上方向に改行して移行「O」
 カーソル位置の右以降を消して移行「C」
 カレント行を消して移行「Vc」
 カーソル位置の単語をコマンドラインに挿入 「Ctrl+r
Ctrl+w」 (Ctrl押しっぱなしでr,w)
 コピーしたデータをコマンドラインに挿入
「Shift+Insert」
 直前まで開いていたバッファ「#」
◦ (:e # とかって使う)
 検索文字を挿入する 「Ctrl+r /」
◦ 挿入モード、コマンドモードで使える
 カウントアップ「Ctrl+a」
 カウントダウン「Ctrl+x」
◦ 10進数でカウントアップ/ダウンするように設定する「:set
nrformats=」
連番の文字列作るときに便利
 いま開いているファイルがあるフォルダに移動する
「:cd %:h」
◦ 「:e」でパス指定しながらファイルを開くと、カレントディレクトリは
移動しないので、これを使って移動すると便利
◦ Kaoriya Vimには拡張機能が搭載されており、コマンドライン
で「Ctrl+x」すると、パスを挿入してくれる。
 半角英字を大文字⇔小文字切り替えする
◦ 選択行の半角英字を大文字にする「VU」
◦ 選択行の半角英字を小文字にする「Vu」
◦ 大文字小文字をトグる「~」
 前回の検索文字を使って置換「:%s//huga/gc」
 ファイル内の文字を数える「:%s/./&/g」
◦ (改行を除き、全角半角ともに1字としてカウント)
 シェルの実行結果を挿入する「:r! <command>」
◦ 私がよくやるのは「:r! cat matchedfiles.txt | sort |
uniq」です。
 検索にマッチしたファイルのリストを保存しておいてユニークかけ
て影響範囲を絞る、みたいな。
 Vimgrepした結果を編集して使う
1. Vimgrepの結果を別タブにコピペする
2. 要らん行消したりなどする
3. ファイルに保存
4. 「:set errorformat=%f|%l col %c|%m」
5. 「:cg <結果を編集して保存したファイル>」
6. 「:cope」
7. →編集した検索結果が使用できる
 半角英字を13文字先の文字に変換する(Rot13)
◦ 「g?」
◦ ファイル全体に変換をかける「ggVGg?」
 「gg」でファイルの先頭へ移動
 「V」で行選択モードに移行
 「G」でファイルの末尾へ移動
 「g?」で変換実行
 set nu
 set backspace=2
 set wrapscan
 set hlsearch ⇔ set nohlsearch
◦ 検索時はhlsearch, 用が済んだらnohlsearchというふうに使
うと便利
 set ignorecase
 set clipboard+=unnamed
 Vim エディタ・スターターマニュアル
◦ http://nanasi.jp/howto/user-manual.html
 Vim テクニックバイブル
◦ http://gihyo.jp/book/2011/978-4-7741-4795-6
 Vi IMproved
◦ http://gihyo.jp/book/2004/4-7741-2018-9

Más contenido relacionado

La actualidad más candente

世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMPYusuke Kagata
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラーCloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラーnota-ja
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来についてshinjiigarashi
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方Masahiro Hidaka
 
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜Teppei Sato
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計Tadayoshi Sato
 
今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門Masashi Umezawa
 
マスターデータの キャッシュシステムの改善の話
マスターデータの キャッシュシステムの改善の話マスターデータの キャッシュシステムの改善の話
マスターデータの キャッシュシステムの改善の話natsumi_ishizaka
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメYoji Kanno
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう増田 亨
 
社内のマニュアルをSphinxで作ってみた
社内のマニュアルをSphinxで作ってみた社内のマニュアルをSphinxで作ってみた
社内のマニュアルをSphinxで作ってみたIosif Takakura
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?Takuya Ueda
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについてkumake
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 

La actualidad más candente (20)

世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
いつやるの?Git入門
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラーCloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
 
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
 
今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門
 
マスターデータの キャッシュシステムの改善の話
マスターデータの キャッシュシステムの改善の話マスターデータの キャッシュシステムの改善の話
マスターデータの キャッシュシステムの改善の話
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
社内のマニュアルをSphinxで作ってみた
社内のマニュアルをSphinxで作ってみた社内のマニュアルをSphinxで作ってみた
社内のマニュアルをSphinxで作ってみた
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 

これだけ知っときゃなんとかなるVim