Vim: Difference between revisions
imported>Mic92 |
imported>Mic92 |
||
Line 2: | Line 2: | ||
= Examples = | = Examples = | ||
== Using vim's builtin packaging capability == | |||
<syntaxHighlight lang="nix"> | |||
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 | |||
} | |||
}; | |||
</syntaxHighlight> | |||
== Using VAM as manager == | == Using VAM as manager == | ||
You can add this to you nix configuration to get vim with custom <code>.vimrc</code> and listed plugins. | You can add this to you nix configuration to get vim with custom <code>.vimrc</code> and listed plugins. | ||
< | <syntaxHighlight lang="nix"> | ||
vim_configurable.customize { | vim_configurable.customize { | ||
name = "vim-with-plugins"; | name = "vim-with-plugins"; | ||
Line 24: | Line 40: | ||
]; | ]; | ||
}; | }; | ||
</ | </syntaxHighlight> | ||
Full documentation at [https://github.com/MarcWeber/vim-addon-manager VAM homepage]. | Full documentation at [https://github.com/MarcWeber/vim-addon-manager VAM homepage]. | ||
== Using Pathogen as manager == | == Using Pathogen as manager == | ||
There is a pathogen implementation as well, but its startup is slower and [VAM] has more features. | There is a pathogen implementation as well, but its startup is slower and [VAM] has more features. | ||
Line 32: | Line 49: | ||
vimrcConfig.pathogen.pluginNames = [ "vim-addon-nix" "youcompleteme" ]; | vimrcConfig.pathogen.pluginNames = [ "vim-addon-nix" "youcompleteme" ]; | ||
</pre> | </pre> | ||
= Adding new plugins = | = Adding new plugins = | ||
Revision as of 06:02, 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
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";
# add custom .vimrc lines like this:
vimrcConfig.customRC = ''
set hidden
set colorcolumn=80
'';
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
- Check https://github.com/NixOS/nixpkgs/tree/master/pkgs/misc/vim-plugins
- Add your plugin to ./vim-plugin-names
- Generate via
vim-plugin-names-to-nix
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
.