vim活用術 初級編
Post on 08-Jan-2017
294 views
TRANSCRIPT
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 のコードがある。オレンジの枠で囲まれたコードをコメントアウトせよ。
答えの前に基礎を確認
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 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> # (各行がコメントアウト)
ビジュアルモード
インサートモード
操作が多すぎて面倒。。
操作が多すぎて面倒。。
それ、もっと簡単にでできるよ
挿入解答例(改)
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 )
工夫することでもっと楽に!
またワンパンで終わっちまった…
もっと直感的にやりたい方向け
挿入解答例(改々)
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 に下記のキーバインドを登録
他にも様々なことが可能
• 検索・置換はあたりまえ
「 /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.vimVim を 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/
以上、お疲れ様でした