Vim: Difference between revisions

From NixOS Wiki
imported>Mic92
imported>Mic92
Line 2: Line 2:


= Examples =
= Examples =
== Apply custom vimrc configuration ==
<syntaxHighlight lang="nix">
vim_configurable.customize {
  name = "vim-with-plugins";
  # add custom .vimrc lines like this:
  vimrcConfig.customRC = ''
    set hidden
    set colorcolumn=80
  '';
}
</syntaxHighlight>


== Using vim's builtin packaging capability ==
== Using vim's builtin packaging capability ==
Line 23: Line 36:
  vim_configurable.customize {
  vim_configurable.customize {
     name = "vim-with-plugins";
     name = "vim-with-plugins";
    # add custom .vimrc lines like this:
    vimrcConfig.customRC = ''
      set hidden
      set colorcolumn=80
    '';
     vimrcConfig.vam.knownPlugins = pkgs.vimPlugins; # optional
     vimrcConfig.vam.knownPlugins = pkgs.vimPlugins; # optional
     vimrcConfig.vam.pluginDictionaries = [
     vimrcConfig.vam.pluginDictionaries = [

Revision as of 06:06, 24 August 2017

Vim plugins can be installed with the help of nix. You can omit using vim plugin managers and do everything in your .nixpkgs/config.

Examples

Apply custom vimrc configuration

vim_configurable.customize {
  name = "vim-with-plugins";
  # add custom .vimrc lines like this:
  vimrcConfig.customRC = ''
    set hidden
    set colorcolumn=80 
  '';
}

Using vim's builtin packaging capability

vim_configurable.customize {
  vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; {
    # loaded on launch
    start = [ youcompleteme fugitive ];
    # manually loadable by calling `:packadd $plugin-name`
    opt = [ phpCompletion elm-vim ];
    # To automatically load a plugin when opening a filetype, add vimrc lines like:
    # autocmd FileType php :packadd phpCompletion
  }
};

Using VAM as manager

You can add this to you nix configuration to get vim with custom .vimrc and listed plugins.

 vim_configurable.customize {
    name = "vim-with-plugins";
    vimrcConfig.vam.knownPlugins = pkgs.vimPlugins; # optional
    vimrcConfig.vam.pluginDictionaries = [
      # load always
      { name = "youcompleteme"; }
      { names = [ "youcompleteme" "foo" ]; }
      # only load when opening a .php file
      { name = "phpCompletion"; ft_regex = "^php\$"; }
      { name = "phpCompletion"; filename_regex = "^.php\$"; }
      # provide plugin which can be loaded manually:
      { name = "phpCompletion"; tag = "lazy"; }
    ];
  };

Full documentation at VAM homepage.

Using Pathogen as manager

There is a pathogen implementation as well, but its startup is slower and [VAM] has more features.

    vimrcConfig.pathogen.knownPlugins = vimPlugins; # optional
    vimrcConfig.pathogen.pluginNames = [ "vim-addon-nix" "youcompleteme" ];

Adding new plugins

Real life examples

YouCompleteMe

Currently the youcompleteme plugin uses unwrapped clang on linux. This causes it to not find stdlib.h. There is a workaround you can put in your .ycm_extra_conf.py file, which works by executing the C/C++ compiler and getting it to output the list of search paths - which includes the search path to find stdlib.h.