SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxShota Shinogi
 
スクラムはもうだめぽよ!新しい開発手法『パワープレイ』をお姉さんが教えてあげちゃう!
スクラムはもうだめぽよ!新しい開発手法『パワープレイ』をお姉さんが教えてあげちゃう!スクラムはもうだめぽよ!新しい開発手法『パワープレイ』をお姉さんが教えてあげちゃう!
スクラムはもうだめぽよ!新しい開発手法『パワープレイ』をお姉さんが教えてあげちゃう!Moto Arima
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門demuyan
 
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門Masahito Zembutsu
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回Yoshiki Hayama
 
ペアプログラミング ホントのところ
ペアプログラミング ホントのところペアプログラミング ホントのところ
ペアプログラミング ホントのところTakuto Wada
 
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Tsutomu Yano
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかYuki Miyatake
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングKohsuke Yuasa
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編infinite_loop
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてalwei
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャtorisoup
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込むYoshiki Hayama
 
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンスLivesense Inc.
 

Was ist angesagt? (20)

組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
スクラムはもうだめぽよ!新しい開発手法『パワープレイ』をお姉さんが教えてあげちゃう!
スクラムはもうだめぽよ!新しい開発手法『パワープレイ』をお姉さんが教えてあげちゃう!スクラムはもうだめぽよ!新しい開発手法『パワープレイ』をお姉さんが教えてあげちゃう!
スクラムはもうだめぽよ!新しい開発手法『パワープレイ』をお姉さんが教えてあげちゃう!
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
 
ペアプログラミング ホントのところ
ペアプログラミング ホントのところペアプログラミング ホントのところ
ペアプログラミング ホントのところ
 
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
目grepのはなし
目grepのはなし目grepのはなし
目grepのはなし
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
 
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
 

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