Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Vim活用術 初級編

1,218 views

Published on

Vim活用術 初級編

Published in: Software
  • Login to see the comments

Vim活用術 初級編

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

×