Vimでアプリケーション開発をするときに、プロジェクト毎にお決まりの設定をしたい場合がありますよね。例えばrubyプロジェクトの場合はタブ幅2だけど、Javaの場合は4にしたいだとか。railsプロジェクトの場合は、schema.rbを最初に開いておきたいとか。そういった固有の自動処理をvim起動時に読み込むプラグインを作成しました。
↑この画像の例では、とあるディレクトリでvimを起動すると、自動的にウインドウサイズを最大化し、必要なファイルを開き、NERDTreeを実行するようになっています。
どんなプラグイン?
- vimを起動した際のディレクトリに
.bon-voyage.vim
というファイルがあれば、それをsource
コマンドで読み込みます - なければ
$HOME
ディレクトリ内の同名ファイルを探しに行きます - vimが引数付きで起動された場合は何も行いません
source
で読み込む読み込む内容を”cargo”という複数ファイルに分割しておけます
例えば
railsアプリのディレクトリに.bon-voyage.vim
というファイルを作成します。中身は次のような感じ。
📄the_rails_root/.bon-voyage.vim
" the_rails_root/.bon-voyage.vim if has('gui_running') set columns=190 lines=70 endif edit spec/factories.rb vsplit db/schema.rb let NERDTreeIgnore = ['tmp[[dir]]', 'bundle[[dir]]'] NERDTree wincmd = Rcd
そしてそのディレクトリでvimを引数無しで起動します。
📄$HOME/.bon-voyage/cargos/rails.vim
$ cd the_rails_root $ gvim
すると、ウインドウが最大化され、factories.rb/schema.rbを左右に開き、VimmerおなじみのNERDTreeをいい感じで開いた上で、rials.vimプラグインの設定をします。
cargo(カーゴ)
読み込みたい内容をcargoというファイルに記載して、必要に応じLoadすることができます。$HOME/.bon-voyage/cargos
ディレクトリを作成し、そのディレクトリ内にrails.vim
というファイルを作成します。内容はさっきと同じでいいです。
" $HOME/.bon-voyage/cargos/rails.vim if has('gui_running') set columns=190 lines=70 endif edit spec/factories.rb vsplit db/schema.rb let NERDTreeIgnore = ['tmp[[dir]]', 'bundle[[dir]]'] NERDTree wincmd = Rcd
railsルートには次のような.bon-voyage.vim
を用意します。
📄the_rails_root/.bon-voyage.vim
BonVoyageLoad 'rails'
BonVoyageLoadコマンドは、cargoディレクトリ内の中から引数のファイルを探し(拡張子.vimは無くていい)sourceコマンドを実行します。
なおcargoファイルを複数Loadできますし、
📄a_jsproject_direcotry/.bon-voyage.vim
" a_jsproject_direcotry/.bon-voyage.vim BonVoyageLoad 'javascript' BonVoyageLoad 'maximize_window' BonVoyageLoad 'nerdtree'
cargoファイルの中から別のcargoファイルをLoadすることも可能です。
📄$HOME/.bon-voyage/cargos/rails.vim
" $HOME/.bon-voyage/cargos/rails.vim BonVoyageLoad 'maximize_window' edit spec/factories.rb vsplit db/schema.rb BonVoyageLoad 'nerdtree_rails' Rcd
とまあこんな感じです。
その他設定等はgithubを確認してください。
関連する記事
- 【Rails】リロード時に特定の処理を実行する
- 自分はこんな感じでRailsアプリを作っております
- 久しぶりにRailsで開発して感じたこと
- 【Rails 5】ヘルパーを使用しているactive_decoratorをrspecでテストする
- ActiveRecord依存のModuleをrspecでテストする