vim活用術 初級編

16
Vim 活活活 活活活 水水

Post on 08-Jan-2017

294 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Vim活用術 初級編

Vim 活用術 初級編

水上 亘

Page 2: Vim活用術 初級編

いきなりですが問題です

Page 3: Vim活用術 初級編

 挿入の問題

305 if params[:answered_date].present?306 s = s.where('date(`anns`.`created_at`) = ?', params[:answered_date].to_date)307 end308309 if params[:answered_at_present].present?310 case params[:answered_at_present]311 when '1', 1312 s = s.where('`anns`.`id` IS NOT NULL')313 when '0', 0314 s = s.where('`anns`.`id` IS NULL')315 end316 end

以下に Ruby のコードがある。オレンジの枠で囲まれたコードをコメントアウトせよ。

Page 4: Vim活用術 初級編

 答えの前に基礎を確認

Vim の基礎「 4 つのモード」モード 説明

ノーマルモード

Vim を起動した際に最初に設定されるモード。

移動や、コピー・ペーストなどが出来る。

ほかのモードへの移行もこのモードから行う。

インサートモード文字を入力するモード。

ノーマルモードから (“i“ or “I“ or “a“ or “A“) を押すと移行する。

ビジュアルモード文字を選択するモード。他のモードと組み合わせて選択した文字を加工する。

ノーマルモードから (“v“ or “V“) を押すと移行する。

コマンドラインモードEx コマンド (“:”) 、検索パターン (“/” と “ ?”) 、フィルタコ マン

ド (“!”) の入力に使われる。※ Vim 日本語ドキュメントより引用

Page 5: Vim活用術 初級編

 挿入解答例

305 if params[:answered_date].present?306 s = s.where('date(`anns`.`created_at`) = ?',307 end308309 if params[:answered_at_present].present?310 case params[:answered_at_present]311 when '1', 1312 s = s.where('`anns`.`id` IS NOT NULL')313 when '0', 0314 s = s.where('`anns`.`id` IS NULL')315 end316 end

手順

キーストローク バッファ

1 309G if params[:answered_at

2 <Ctrl–v> if params[:answered_at

3 316G end

4 I if params[:answered_at

5 # #if params[:answered_

6 <Esc> # (各行がコメントアウト)

ビジュアルモード

インサートモード

Page 6: Vim活用術 初級編

操作が多すぎて面倒。。

Page 7: Vim活用術 初級編

操作が多すぎて面倒。。

それ、もっと簡単にでできるよ

Page 8: Vim活用術 初級編

 挿入解答例(改)

305 if params[:answered_date].present?306 s = s.where('date(`anns`.`created_at`) = ?',307 end308309 if params[:answered_at_present].present?310 case params[:answered_at_present]311 when '1', 1312 s = s.where('`anns`.`id` IS NOT NULL')313 when '0', 0314 s = s.where('`anns`.`id` IS NULL')315 end316 end

手順 キーストローク バッファ

1 :309,316norm I# # (各行がry )

工夫することでもっと楽に!

Page 9: Vim活用術 初級編

またワンパンで終わっちまった…

Page 10: Vim活用術 初級編

もっと直感的にやりたい方向け

Page 11: Vim活用術 初級編

 挿入解答例(改々)

305 if params[:answered_date].present?306 s = s.where('date(`anns`.`created_at`) = ?',307 end308309 if params[:answered_at_present].present?310 case params[:answered_at_present]311 when '1', 1312 s = s.where('`anns`.`id` IS NOT NULL')313 when '0', 0314 s = s.where('`anns`.`id` IS NULL')315 end316 end

手順 キーストローク バッファ

1 309 行まで移動

2 V

3 316G or 7j or 矢印キー

(各行選択)

4 <Ctrl-c> # (各 ry )

vmap <C-c> <C-v>0I#<Esc>

.vimrc に下記のキーバインドを登録

Page 12: Vim活用術 初級編

 他にも様々なことが可能

• 検索・置換はあたりまえ

「 /aaa 」、「 :%s/aaa/bbb/g 」、「 f 」(行検索)などもある

• 計算ができる!フォーマット変換も出来る!

インプットモード中に「 <Ctrl-r>=printf('%05d', (5*4)%3)<CR> 」

• Vim にはレジスタがある

使いまわしたい文字列をコピーして、いつでも文字列をペーストできる。

(例 レジスタ a にコピー「“ ayy 」、ペースト「” ap 」など)

参考: http://qiita.com/0829/items/0b3f63798b6910623efc

• マクロを使って複雑な処理ができる

vim のマクロ機能を使って CSV を数秒で HTML にする

参考: http://blog.uu59.org/2011-12-18-vim-macro.html

Page 13: Vim活用術 初級編

 プラグインを導入してもっと便利に

プラグイン名 説明

Shougo/neobundle.vim Vim プラグイン用のパッケージマネージャー。

Shougo/unite.vimVim を IDE 化するためのプラグイン。

ファイルの絞込機能など目的のファイルにアクセスすることが簡単にな

る。

scrooloose/syntastic シンタックスチェックが可能となる。

ruby の場合、 rubocop と組み合わせると規約チェックも可能。

Shougo/neocomplcacheコードの入力補完機能が使える。

ruby に使いたいなら下記も必要。

「 Shougo/neocomplcache-rsense.vim 」

thinca/vim-quickrun コードを実行して結果の確認が手軽に出来る。※ プラグインの入れ過ぎに注意。 Vim の利点である軽さを損なわない程度に!

Page 14: Vim活用術 初級編

書籍名 実践 Vim

著者Drew Neil ( 著 )

, 新丈 径 ( 訳 )

出版社 ASCII

価格 Kindle 版が 2,200 円くらい

おすすめ書籍

Page 15: Vim活用術 初級編

 おすすめサイト

• 僕がサクラエディタから Vim に乗り換えるまで  - 初学の人はとても参考になると思います。 参考: http://blog.jnito.com/entry/20120101/1325420213

• vimgolf  - キーストローク数を競うスポーツ。玄人向け。 参考: http://www.vimgolf.com/

Page 16: Vim活用術 初級編

以上、お疲れ様でした