Skip to content
A vim plugin for brunch projects
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

A vim plugin for brunch (with Backbone)

Inspired by vim-rails this plugin makes navigating through your brunch projects a lot more comfortable. Besides an interface to the brunch command line it offers Ex commands to quickly move from one brunch file to one of its related files.

Want to open your user model? Type :Bmodel user. Need the corresponding unit test in a vertical split? Just go :BVtest.


Preferred method: Vundle

  • Install with vundle
  • Add Bundle 'drichard/vim-brunch' to your vimrc
  • Save and call :BundleInstall

Manual installation

  • Download zip/tarball and extract contents into your .vim directory


  • Use git:

    git clone git://
    cd vim-brunch
    cp -R * ~/.vim


Vim-brunch expects that you start Vim inside the root folder of your brunch project. When a brunch project has been detected the following commands are available:

:Bmodel [name]

Opens the model for the current module or opens the model with the optionally given name.

:Bview [name]

Opens the view for the current module.

:Bcontroller [name]

Opens the controller for the current module.

:Btemplate [name]

Opens the template for the current module.

:Bstyle [name]

Opens the stylesheet for the current module.

:Btest [name]

Opens the test for the current file. Inside a model this will open the unit test for a model, inside a view it opens the view_test etc. Inside a template, for example, this command doesn't make much sense.

To open a specific test file name should be the filename of the module. The script will then try to figure out which test you want to open. For example, for :Btest user it would assume that you would like to open the test for the user model, whereas :Btest user_view will open the test for the user view.

In combination with the bang modifier this commands makes a handy shortcut for creating test files. :Btest! todo_view will create an empty test file in test/views/


Opens the config file for the project.


Opens index.html in app/assets/index.html.

:Build [options]

Builds the project. Same as brunch build.

:Bgenerate <type> <name> [options]

Generate files from template. Same as brunch generate.

:Bdestroy <type> <name> [options]

Destroys changes made by :Bgenerate. Same as brunch destroy.

:Btests [options]

Runs all tests for the current project. Same as brunch test. Requires brunch 1.3+.

Features and Hints

  • Bang modifier: The commands [model, view, controller, template, style, test] accept a bang modifier which creates a new file if it does not exist yet.

    :Bcontroller! home
    -> Would create app/controllers/ if it isn't there yet.
    -> Create the corresponding test file
  • When called without an argument the commands with an optional [name] argument will open the appropriate file based on the file in the current buffer. However, you can specify a module name if you like to open an unrelated module.

    Inside app/models/

    -> Opens app/views/

    Inside app/

    :Bview todolist
    -> Opens app/views/
  • Auto completion: All commands that accept an optional [name] argument offer context based auto completion. For example, :Bmodel t<TAB> would auto complete all models starting with 't'.

  • Split windows: The navigation commands can also be called as :BVmodel or :BSview which will then open the file in a vertical or horizontal split window.

    :BStemplate user
    -> Opens app/views/templates/user.styl in horizontal split window.
  • The plugin makes a lot of assumptions about how you name your files and where you put them. If you don't follow the brunch conventions all hell will break lose, the undead will rise again and not much will work really.


For now the plugin does not detect which brunch skeleton you are using, so by default it expects the standard directory structure with Backbone.js, CoffeeScript, Handlebars and Stylus. If you want to change those settings, the following global variables are defined:

let g:brunch_path_app='app'

The directory of the app folder.

let g:brunch_path_test='test'

The directory of the test folder.

let g:brunch_ext_script='coffee'

The extension for script files.

let g:brunch_ext_stylesheet='styl'

The extension for stylesheets.

let g:brunch_ext_template='hbs'

The extension for templates.

let g:brunch_name_delim='_'

The delimiter in file names, _ or -.


Inside your .vimrc:

" Use Javascript and less for brunch.
let g:brunch_ext_script = 'js'
let g:brunch_ext_stylesheet = 'less'


  • Add support for gf in require './home\_view' statements
  • Detect brunch settings based
Something went wrong with that request. Please try again.