Vim活用術 初級編
水上 亘
いきなりですが問題です
挿入の問題
305 if params[:answered_date].present?
306 s = s.where('date(`anns`.`created_at`) = ?', params[:answered_date].to_date)
307 end
308
309 if params[:answered_at_present].present?
310 case params[:answered_at_present]
311 when '1', 1
312 s = s.where('`anns`.`id` IS NOT NULL')
313 when '0', 0
314 s = s.where('`anns`.`id` IS NULL')
315 end
316 end
以下にRubyのコードがある。
オレンジの枠で囲まれたコードをコメントアウトせよ。
答えの前に基礎を確認
Vimの基礎「4つのモード」
モード 説明
ノーマルモード
Vimを起動した際に最初に設定されるモード。
移動や、コピー・ペーストなどが出来る。
ほかのモードへの移行もこのモードから行う。
インサートモード
文字を入力するモード。
ノーマルモードから(“i“ or “I“ or “a“ or “A“)を押すと移行する。
ビジュアルモード
文字を選択するモード。
他のモードと組み合わせて選択した文字を加工する。
ノーマルモードから(“v“ or “V“)を押すと移行する。
コマンドラインモード
Exコマンド (“:”)、検索パターン (“/” と “?”)、フィルタコ マンド
(“!”) の入力に使われる。
※ Vim日本語ドキュメントより引用
挿入解答例
305 if params[:answered_date].present?
306 s = s.where('date(`anns`.`created_at`) = ?',
307 end
308
309 if params[:answered_at_present].present?
310 case params[:answered_at_present]
311 when '1', 1
312 s = s.where('`anns`.`id` IS NOT NULL')
313 when '0', 0
314 s = s.where('`anns`.`id` IS NULL')
315 end
316 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> # (各行がコメントアウト)
ビジュアルモード
インサートモード
操作が多すぎて面倒。。
操作が多すぎて面倒。。
それ、もっと簡単にでできるよ
挿入解答例(改)
305 if params[:answered_date].present?
306 s = s.where('date(`anns`.`created_at`) = ?',
307 end
308
309 if params[:answered_at_present].present?
310 case params[:answered_at_present]
311 when '1', 1
312 s = s.where('`anns`.`id` IS NOT NULL')
313 when '0', 0
314 s = s.where('`anns`.`id` IS NULL')
315 end
316 end
手
順
キーストローク バッファ
1 :309,316norm I# # (各行がry)
工夫することでもっと楽に!
またワンパンで終わっちまった…
もっと直感的にやりたい方向け
挿入解答例(改々)
305 if params[:answered_date].present?
306 s = s.where('date(`anns`.`created_at`) = ?',
307 end
308
309 if params[:answered_at_present].present?
310 case params[:answered_at_present]
311 when '1', 1
312 s = s.where('`anns`.`id` IS NOT NULL')
313 when '0', 0
314 s = s.where('`anns`.`id` IS NULL')
315 end
316 end
手
順
キーストローク バッファ
1 309行まで移動
2 V
3 316G or 7j or 矢印キー (各行選択)
4 <Ctrl-c> # (各ry)
vmap <C-c> <C-v>0I#<Esc>
.vimrcに下記のキーバインドを登録
他にも様々なことが可能
• 検索・置換はあたりまえ
「/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
プラグインを導入してもっと便利に
プラグイン名 説明
Shougo/neobundle.vim Vimプラグイン用のパッケージマネージャー。
Shougo/unite.vim
VimをIDE化するためのプラグイン。
ファイルの絞込機能など目的のファイルにアクセスすることが簡単になる。
scrooloose/syntastic
シンタックスチェックが可能となる。
rubyの場合、rubocopと組み合わせると規約チェックも可能。
Shougo/neocomplcache
コードの入力補完機能が使える。
rubyに使いたいなら下記も必要。
「Shougo/neocomplcache-rsense.vim」
thinca/vim-quickrun コードを実行して結果の確認が手軽に出来る。
※ プラグインの入れ過ぎに注意。Vimの利点である軽さを損なわない程度に!
書籍名 実践Vim
著者
Drew Neil (著)
, 新丈 径 (訳)
出版社 ASCII
価格 Kindle版が2,200円くらい
おすすめ書籍
おすすめサイト
• 僕がサクラエディタからVimに乗り換えるまで
- 初学の人はとても参考になると思います。
参考:http://blog.jnito.com/entry/20120101/1325420213
• vimgolf
- キーストローク数を競うスポーツ。玄人向け。
参考:http://www.vimgolf.com/
以上、お疲れ様でした

Vim活用術 初級編