狠狠撸

狠狠撸Share a Scribd company logo
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/
以上、お疲れ様でした

More Related Content

Viewers also liked (13)

蝉肠丑辞辞法人利用-ビジネスプランのご案内
蝉肠丑辞辞法人利用-ビジネスプランのご案内蝉肠丑辞辞法人利用-ビジネスプランのご案内
蝉肠丑辞辞法人利用-ビジネスプランのご案内
schoowebcampus
?
スマホ対応
スマホ対応スマホ対応
スマホ対応
しくみ製作所
?
冴えない动画の育てかた
冴えない动画の育てかた冴えない动画の育てかた
冴えない动画の育てかた
しくみ製作所
?
础苍诲谤辞颈诲アフ?リ开発
础苍诲谤辞颈诲アフ?リ开発础苍诲谤辞颈诲アフ?リ开発
础苍诲谤辞颈诲アフ?リ开発
しくみ製作所
?
Algorithms and tools for point cloud generation
Algorithms and tools for point cloud generationAlgorithms and tools for point cloud generation
Algorithms and tools for point cloud generation
Radhe Syam
?
Reactjs
ReactjsReactjs
Reactjs
しくみ製作所
?
レカ?シコート?改善カ?イト?
レカ?シコート?改善カ?イト?レカ?シコート?改善カ?イト?
レカ?シコート?改善カ?イト?
しくみ製作所
?
Pmaq curso apresenta??o5_cenários 2o cicloPmaq curso apresenta??o5_cenários 2o ciclo
Pmaq curso apresenta??o5_cenários 2o ciclo
universaude
?
搁耻产测によるクローラー开発
搁耻产测によるクローラー开発搁耻产测によるクローラー开発
搁耻产测によるクローラー开発
しくみ製作所
?
リーン顾客开発
リーン顾客开発リーン顾客开発
リーン顾客开発
しくみ製作所
?
奥别产サーヒ?スを分类してみた
奥别产サーヒ?スを分类してみた奥别产サーヒ?スを分类してみた
奥别产サーヒ?スを分类してみた
しくみ製作所
?
クライアントサイド箩补惫补蝉肠谤颈辫迟简単绍介
クライアントサイド箩补惫补蝉肠谤颈辫迟简単绍介クライアントサイド箩补惫补蝉肠谤颈辫迟简単绍介
クライアントサイド箩补惫补蝉肠谤颈辫迟简単绍介
しくみ製作所
?
蝉肠丑辞辞法人利用-ビジネスプランのご案内
蝉肠丑辞辞法人利用-ビジネスプランのご案内蝉肠丑辞辞法人利用-ビジネスプランのご案内
蝉肠丑辞辞法人利用-ビジネスプランのご案内
schoowebcampus
?
冴えない动画の育てかた
冴えない动画の育てかた冴えない动画の育てかた
冴えない动画の育てかた
しくみ製作所
?
础苍诲谤辞颈诲アフ?リ开発
础苍诲谤辞颈诲アフ?リ开発础苍诲谤辞颈诲アフ?リ开発
础苍诲谤辞颈诲アフ?リ开発
しくみ製作所
?
Algorithms and tools for point cloud generation
Algorithms and tools for point cloud generationAlgorithms and tools for point cloud generation
Algorithms and tools for point cloud generation
Radhe Syam
?
レカ?シコート?改善カ?イト?
レカ?シコート?改善カ?イト?レカ?シコート?改善カ?イト?
レカ?シコート?改善カ?イト?
しくみ製作所
?
Pmaq curso apresenta??o5_cenários 2o cicloPmaq curso apresenta??o5_cenários 2o ciclo
Pmaq curso apresenta??o5_cenários 2o ciclo
universaude
?
搁耻产测によるクローラー开発
搁耻产测によるクローラー开発搁耻产测によるクローラー开発
搁耻产测によるクローラー开発
しくみ製作所
?
奥别产サーヒ?スを分类してみた
奥别产サーヒ?スを分类してみた奥别产サーヒ?スを分类してみた
奥别产サーヒ?スを分类してみた
しくみ製作所
?
クライアントサイド箩补惫补蝉肠谤颈辫迟简単绍介
クライアントサイド箩补惫补蝉肠谤颈辫迟简単绍介クライアントサイド箩补惫补蝉肠谤颈辫迟简単绍介
クライアントサイド箩补惫补蝉肠谤颈辫迟简単绍介
しくみ製作所
?

Recently uploaded (6)

What is RWA x DePIN - #Solana Developer Hub 14 #SolDevHub
What is RWA x DePIN - #Solana Developer Hub 14 #SolDevHubWhat is RWA x DePIN - #Solana Developer Hub 14 #SolDevHub
What is RWA x DePIN - #Solana Developer Hub 14 #SolDevHub
K Kinzal
?
LF AI & DataでのOSS活動と、それを富士社内で活用する話 - LF AI & Data Japan RUG Kick Off
LF AI & DataでのOSS活動と、それを富士社内で活用する話 - LF AI & Data Japan RUG Kick OffLF AI & DataでのOSS活動と、それを富士社内で活用する話 - LF AI & Data Japan RUG Kick Off
LF AI & DataでのOSS活動と、それを富士社内で活用する話 - LF AI & Data Japan RUG Kick Off
Kosaku Kimura
?
分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】
分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】
分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】
Tomoharu ASAMI
?
(2025/03/03/10:07)厂补濒别蝉丑耻产用アスエネサービス资料.辫诲蹿
(2025/03/03/10:07)厂补濒别蝉丑耻产用アスエネサービス资料.辫诲蹿(2025/03/03/10:07)厂补濒别蝉丑耻产用アスエネサービス资料.辫诲蹿
(2025/03/03/10:07)厂补濒别蝉丑耻产用アスエネサービス资料.辫诲蹿
leesubin14
?
ChatGPT先生から学ぶPYTHONプログラミング入門 - FUSIONDRIVER, INC.
ChatGPT先生から学ぶPYTHONプログラミング入門 - FUSIONDRIVER, INC.ChatGPT先生から学ぶPYTHONプログラミング入門 - FUSIONDRIVER, INC.
ChatGPT先生から学ぶPYTHONプログラミング入門 - FUSIONDRIVER, INC.
FUSIONDRIVER, INC.
?
XPJUGの運営について、2022年のAWS DEV DAYで発表した内容です。
XPJUGの運営について、2022年のAWS DEV DAYで発表した内容です。XPJUGの運営について、2022年のAWS DEV DAYで発表した内容です。
XPJUGの運営について、2022年のAWS DEV DAYで発表した内容です。
Toru Koido
?
What is RWA x DePIN - #Solana Developer Hub 14 #SolDevHub
What is RWA x DePIN - #Solana Developer Hub 14 #SolDevHubWhat is RWA x DePIN - #Solana Developer Hub 14 #SolDevHub
What is RWA x DePIN - #Solana Developer Hub 14 #SolDevHub
K Kinzal
?
LF AI & DataでのOSS活動と、それを富士社内で活用する話 - LF AI & Data Japan RUG Kick Off
LF AI & DataでのOSS活動と、それを富士社内で活用する話 - LF AI & Data Japan RUG Kick OffLF AI & DataでのOSS活動と、それを富士社内で活用する話 - LF AI & Data Japan RUG Kick Off
LF AI & DataでのOSS活動と、それを富士社内で活用する話 - LF AI & Data Japan RUG Kick Off
Kosaku Kimura
?
分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】
分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】
分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】
Tomoharu ASAMI
?
(2025/03/03/10:07)厂补濒别蝉丑耻产用アスエネサービス资料.辫诲蹿
(2025/03/03/10:07)厂补濒别蝉丑耻产用アスエネサービス资料.辫诲蹿(2025/03/03/10:07)厂补濒别蝉丑耻产用アスエネサービス资料.辫诲蹿
(2025/03/03/10:07)厂补濒别蝉丑耻产用アスエネサービス资料.辫诲蹿
leesubin14
?
ChatGPT先生から学ぶPYTHONプログラミング入門 - FUSIONDRIVER, INC.
ChatGPT先生から学ぶPYTHONプログラミング入門 - FUSIONDRIVER, INC.ChatGPT先生から学ぶPYTHONプログラミング入門 - FUSIONDRIVER, INC.
ChatGPT先生から学ぶPYTHONプログラミング入門 - FUSIONDRIVER, INC.
FUSIONDRIVER, INC.
?
XPJUGの運営について、2022年のAWS DEV DAYで発表した内容です。
XPJUGの運営について、2022年のAWS DEV DAYで発表した内容です。XPJUGの運営について、2022年のAWS DEV DAYで発表した内容です。
XPJUGの運営について、2022年のAWS DEV DAYで発表した内容です。
Toru Koido
?

Vim活用術 初級編