フォルダ間の移動を高速に「どこでもどあゔぃむー」

※音量をあげ、再生ボタンを押しましたら、さーご一緒に

こんなこといいな できたらいいな
あんなゆめ こんなゆめ いっぱい あるけど
みんなみんなみんな かなえてくれる
ふしぎなプラグインで かなえてくれる
ふぉるだかんのいどうを こうそくに
「ハイ!コントロールピーヴィムー」
アン アン アンッ とってもだいすき ヴィム エーディーター

この記事はVim Advent Calendar 2012 43日目の記事になります。
前回の記事は@takochuuさんのtagbar + ctagsでウキウキ新生活!という記事でした。オシャンティ!

経緯のお話し

rails.vimcake.vimのようにプロジェクトの各フォルダ間移動を、独自MVCで作られたプロジェクトにても… :Rmodel、:Rcontrollerと各フォルダへ高速に移動できるプラグインが欲しいので作ろう..と意気込んでいたのですが、年始にごにょごにゅしているうちにctrlp.vim拡張機能を使って近しいことができることを発見したので、そのトピックを2つほど紹介してみたいと思います。

「どこでもどあー ゔぃむー」のctrlp拡張プラグインを入れる

※尚、ctrlp.vimはgithubからcloneして最新版を入れて上げてください

プラグインというより、コマンドをただただ提供しているだけのプラグインです。
名前は「どこでもドア」にインスパイアされて命名してみました。

ctrlp-dokodemo-doa.vim

ctrlpのソースを呼んでたところ、ctrlp#initの第2引数にパスを渡してあげると、そこからファイル検索ができるよう仕組みが分かったので、プラグイン?とは言い難いのですがちょこっと実装して拡張してみました。

インストール方法は、上記URLのpluginフォルダにあるctrlp-dokodemo-doa.vimを ctrlp.vim/plugin/のポケットにいれてあげて、vimrcに下記設定を書いてあげれば、いつでもドラえもんがポケットから取り出してくれます。

let g:ctrlp_dokodemo_doa_settings = {
\  'YourProject' : {
\    'app_path' : '/path/to/your_project/',
\    'available' : 1,
\    'role_paths' : {
\      'controller' : 'app/controllers/',
\      'model' : 'app/models/',
\      'view' : 'app/views/'
\    }
\  },
\  'YourProject2' : {
\    'app_path' : '/path/to/your_project2/',
\    'available' : 0,                                                                                                                                     
\    'role_paths' : {
\      'controller' : 'app/controllers/',
\      'model' : 'app/models/',
\      'view' : 'app/views/'
\    }
\  },
\}

ctrlp_dokodemo_doa_settingsの第1階層がプロジェクトのキーとなっており、そのキーとその配下のrole_pathsのキーがそのままコマンドとして適用されます。
※キーの設定はユーザーコマンドの命名規則(半角英数)に従って名前付けをしてあげてください。

上記vimrcの設定ですと

:CtrlPDDYourProjectcontroller
:CtrlPDDYourProjectmodel
:CtrlPDDYourProjectview

の3つのコマンドが適用されます。尚、CtrlPDDはプレフィックスとなっています。

上記適用されたコマンドを入力し、目的の場所にてctlpのウィンドウが開きましたら、後は<c-h>、<c-v>、<c-t>とお好みの開き方でファイルを開いてあげたり、そのディレクトリ配下にてファイルを作成 or フォルダを作成したい場合は、ファイル名 or 作成したいフォルダ(フォルダを含む場合はhoge/hoge.rb)を入力して<c-y>で作成してくれます。ここはctrlp.vimの標準機能ですね、詳しくはドラエモンにhelpを参照してください。また上記設定のように、複数プロジェクトを抱えている..あ..設定をしますと、沢山のコマンドが羅列されて選択が大変でしたので、availableの有効設定値を設けてコマンドの非表示設定をできるようにしました。

複数人でこういうプロジェクトの開発をしていると、変なところにプログラムがおかてしまったり… とドキュメント関連とか整備されていればあれなのですが、ドキュメントなんて見ないことがほとんどですので、コマンド入力からフォルダ移動を強制するという意味で有効ではないかと思ったりしました。

名前についてはみんな大好きなドラえもんの道具を命名することで、Vimに取っ付きにくかった人も、名前から興味ができて一歩を踏み出すきっかけが 「できたらいいなー あんなゆめ こんなゆめ.. 」..失礼、よかったら是非使ってみてください。

:CtrlPBookmarkDirAddコマンドを使おう

ctrlp標準の拡張として提供されている機能です。

:CtrlPBookmarkDirAdd
:CtrlPBookmarkDir

各ディレクトリパスをブックマーク登録することができて、登録されたブックマークからファイル検索できるような仕組みが提供されております(この機能を使えば全てよかったんじゃ..)

最後に

ctrlpは先日上がったエントリのように、拡張機能を簡単に作れる仕組みがあるので 今度はもう少し突っ込んだプラグインを作ろうと思います。まだctrlp自体使っていない方がいましたら、ライフチェンジングなプラグインなので是非使うことをお勧めしますです。使い方はmattnさんの記事が非常に参考になると思います。 

明日は@yomi322さんです!

そんじゃーね!!!!!

action_not_foundというをgemを作ってみました

routesに定義されているけど、コントローラーにアクション定義されていないものをrakeタスクにて確認するrails用のgem

rake action_not_found

を実行すると

examples GET  /examples(.:format) examples#index
         POST /examples(.:format) examples#create #=> not found action
   tests GET  /tests(.:format)    tests#index #=> not found controller file
    root      /                   examples#index

4 routes, 1 not found actions, 1 not controller files

こんな感じで出力されます。

次のバージョンにて定義されていないアクションのroutes修正案を出力できたらいいなと

https://github.com/honbin/action_not_found

正規表現でやるのよくない気がしてきたし・・・テスト・・)

# -*- coding: utf-8 -*- コピペ面倒くさい..

ということで、Vimの:autocmdの機能使って、rb拡張子でファイルを新規作成した場合に

「# -*- coding: utf-8 -*-」がファイルに自動挿入されるように作業を省略した話

(vimテクニックバイブル P45に書いてあります)

スケルトンファイル作成(任意の場所)

$ mkdir ~/.vim/templates
$ vi ~/.vim/templates/skeleton.rb  

~/.vim/templates/skeleton.rb

# -*- coding: utf-8 -*-     

~/.vimrc

augroup templateload
  autocmd!
  autocmd BufNewFile *.rb 0r ~/.vim/templates/skeleton.rb
augroup END

うぃいー

第10回『PHPで何か作ろうかい(会)』 レポート

今年も残すところ後2週間!みなさん風邪など引いていませんか??
今日は先日開催したPHP勉強会のレポートをつらつらと・・書いてまいります。
 
今回はプログラマーの方からWEBディレクターをしている方
趣味でプログラムを書いている方や学生でプログラミングを勉強している方
かたかたと、計12名の方に参加頂きました!!
今回は最年少となる17歳の高専生が参加・・これからが本当に楽しみであります。

 

f:id:hondabin:20121217115956j:plain

 

(今回もこんなに沢山の差し入れを頂きました..いつもすいません..m( _ _)m )
 

 今回の参加者のテーマは・・

  • html5の勉強 @kongqiue
  • cakePHPECサイト作成 @fumiyasac
  • ライブ・クラブブスケジュール情報サイト作成 @biftech
  • パーフェクトPHPの書籍を参考に、自作フレームワークの作成 @ryo utsunomiya
  • PHP+flash+mysql を使った、ゲーム作成 @day_of_the_vampires
  • 日めくりカレンダーbot作成 @oh-sky
  • fluentdの勉強 @ゴルフなう
  • PHPmysqlを使ったサンプル作成 @しるこ
  • git勉強 @sasato 
  • wordpressを使って既存サイトのテンプレート化 @yakimanjusuki
  • 求人サイト作成 @imady
  • 学生向け、宿題を教えある画像共有サイト作成 @ishitah

 

個人で作りたい・作っているサービスの開発を進めたり、新技術の勉強を行う人

そして、基礎技術の勉強を行う方と、テーマはいつもながらバラバラでしてたが

この会を通じて進めることができたり、分からないことが解決できたならうれしく思っています。
 
最近では、参加者同士で意見交換したり、わからないことを聞き合ったりと
参加者同士でのコミュニケーションが生まれ、あーーー、この会続けてよかったなぁって思う限りです。
 
来年は1月末に第11回を開催する予定ですが、来年は集まって頂けた方が
いつでも質問できる場をWEB上にて提供する所存です。
 
これからまた一段と寒くなっていきますが、風邪には十分気をつけて
また来年元気な姿で会えることを楽しみにしております!!
 
あ、サービスをリリースした際には是非@honbin宛に教えてくださいねー!
そして、しるこくん20歳の誕生日おめでとうっす!!

今年最後の勉強会

12月8日(土)に実施する勉強会で今年、計11回の勉強会を開催しました。

 

いつも参加して頂ける方や、開催を後押ししてくれる社長と

沢山の力添えがあって続ける事が出来たのかなと思っています。

 

勉強会の参加者になんでこの勉強会をやっているの?とよく質問を頂きますが

 

  • 作りたいと思ったものを始めるきっかけ作り
  • 作りたいものを作り続ける
  • 困った事を気軽に聞ける

 

そんな場を提供したいなと昔から思っていて、この会を通じて行っているという感じです。

(そういった場がなく、悩んでいる方を講師時代にみてきていることもあり)

 

あとは、プログラミングを書く機会が減ってきている自分への危機感から

書き続ける場として自分のためにやっている、というのも1つの理由です

 

来年も今年同様にこういったリアルな場を提供し続けるとともに

いつでも質問できる場をWEBか何かでも提供したいなと思います。

 

  • 作っている物があるんだけど、行き詰まっている
  • 作りたい物があるんだけど、何から始めればいいか分からない
  • 作っている物があるんだけど、なかなか進まない

 

な方がいましたら、是非お気軽にご参加ください。

いつでも@honbin待っています!

 

第10回『PHPで何か作ろうかい(会)』

 

P.S. 温泉合宿ですが、都合がつかず、今年できなくてすいません・・