a Vim Plugin for angular-cli
Vim script
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



a Vim Plugin for angular-cli

angular-cli.vim provides a support for angular-cli, directly inside Vim. It allows the interaction with the cli without having to leave the editor, and also benefit from some comfort features such as autocompletion, split file opening, spec file for the current file opening... The plugin is based on the idea of Time Pope's rails.vim


The command namespace is not cluttered unconditionally. All commands are created on invocation of the function angular_cli#init(). Thus, you can manually activate angular-cli by call angular_cli#init() or automatically initialize the commands depending on your typical setting for angular projects:

On a filetype basis

autocmd FileType typescript,html call angular_cli#init()`

Commands will be available in all typescript and html files.

By indicator file

autocmd VimEnter * if globpath('.,..','node_modules/@angular') != '' | call angular_cli#init() | endif

Commands will be available if the current or the parent directory contains @angular inside node_modules.

The Ng Command

The Ng command (:Ng) simply calls the ng shell command with whatever argument it folows. You can use it with all the options available, for instance:

Ng build
Ng test

The E Command (Edit)

The E command allows to open up an Angular file. The list of compatible file types are the following:

  • Component *
  • Module *
  • Template (HTML files) *
  • Directive
  • Service
  • Pipe
  • Guard
  • Spec *
  • Stylesheet *
  • Ng (every other file type: Class, Interface, Enum...)

For example, to open up the app.component.ts: EComponent app.component (without the .ts extension) The command supports autocompletion for the corresponding file type.

The elements marked with '*' are available without arguments. In this case, the plugin will try to open the directly related file. for instance, if ESpec is called without arguments while editing the component app.component.ts, it will try to open the corresponding spec file, app.component.spec.ts.

ESpec will also try to bounce you back to the file you left as long as you don't leave the buffer.

Stylesheet format is set automatically to the corresponding styleExt value from angular.json or .angular-cli.json depending on the project version.

If neither exists, and g:angular_cli_stylesheet_format is not set manually, assume an Ionic project triggered the plugin and set to scss.

Note to macOS users: macOS grep is not compatible with GNU grep. You can install GNU grep under a different name (ggrep or whatever) and set g:gnu_grep = 'ggrep' to fix stylesheet autodetection if you don't want to set it manually for every project. (If you overwrite the system grep command with GNU grep then you're good)

The S, V, T Commands (Split, VSplit, Tabnew)

Similar to the E command, except that the files are edited in a horizontal split (S), vertical split (V), new tab (T) respectively.

The G Command (Generate)

The G command is used to call directly the ng g shell command. It is compatible with the following file types:

  • Component
  • Module
  • Template
  • Directive
  • Service
  • Pipe
  • Guard
  • Class
  • Interface
  • Enum

To generate a component, simply use: GComponent my-component

Dispatch support

The plugin is compatible with Tim Pope's vim-dispatch, by adding this to your .vimrc:

let g:angular_cli_use_dispatch = 1

Any PR or Feature suggestion is welcome.