Created tips (markdown)

Junegunn Choi 2017-11-27 00:08:56 +09:00
parent ecb862043d
commit 98611b6484

148
tips.md Normal file

@ -0,0 +1,148 @@
## Tips
### Automatic installation
Place the following code in your .vimrc before `plug#begin()` call
```vim
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
```
Note that `--sync` flag is used to block the execution until the installer finishes.
(If you're behind an HTTP proxy, you may need to add `--insecure` option to the curl command. In that case, you also need to set `$GIT_SSL_NO_VERIFY` to true.)
### Migrating from other plugin managers
Download plug.vim in `autoload` directory
```sh
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
```
and update your .vimrc as needed.
<table>
<tr>
<th>
With Vundle.vim
</th>
<th>
Equivalent vim-plug configuration
</th>
</tr>
<tr>
<td>
<pre>
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'junegunn/seoul256.vim'
Plugin 'junegunn/goyo.vim'
Plugin 'junegunn/limelight.vim'
call vundle#end()
filetype plugin indent on
syntax enable
</pre>
</td>
<td>
<pre>
call plug#begin('~/.vim/plugged')
Plug 'junegunn/seoul256.vim'
Plug 'junegunn/goyo.vim'
Plug 'junegunn/limelight.vim'
call plug#end()
</pre>
</td>
</tr>
</table>
vim-plug does not require any extra statement other than `plug#begin()` and `plug#end()`.
You can remove `filetype off`, `filetype plugin indent on` and `syntax on` from your
`.vimrc` as they are automatically handled by `plug#begin()` and `plug#end()`.
Since all the other major plugin managers store plugins in "bundle" directory,
you might want to pass it to `plug#begin()` if you do not wish to reinstall plugins.
```vim
" For Mac/Linux users
call plug#begin('~/.vim/bundle')
" For Windows users
call plug#begin('~/vimfiles/bundle')
```
Unlike Vundle, vim-plug does not implicitly prepend `vim-scripts/` to single-segment argument. So `Plugin 'taglist.vim'` in Vundle should be explicitly written as `Plug 'vim-scripts/taglist.vim'`. However, note that vim-scripts.org is no longer maintained.
### Conditional activation
Use plain "if" statement to conditionally activate plugins:
```vim
if has('mac')
Plug 'junegunn/vim-xmark'
endif
```
The caveat is that when the condition is not met, `PlugClean` will try to remove the plugin. This can be problematic if you share the same configuration across terminal Vim, GVim, and Neovim.
```vim
" When started with plain Vim, the plugin is not registered
" and PlugClean will try to remove it
if has('nvim')
Plug 'benekastah/neomake'
endif
```
Alternatively, you can pass an empty `on` or `for` option so that the plugin is registered but not loaded by default depending on the condition.
```vim
Plug 'benekastah/neomake', has('nvim') ? {} : { 'on': [] }
```
A helper function can improve the readability.
```vim
function! Cond(cond, ...)
let opts = get(a:000, 0, {})
return a:cond ? opts : extend(opts, { 'on': [], 'for': [] })
endfunction
" Looks better
Plug 'benekastah/neomake', Cond(has('nvim'))
" With other options
Plug 'benekastah/neomake', Cond(has('nvim'), { 'on': 'Neomake' })
```
### Gist as plugin
vim-plug does not natively support installing small Vim plugins from Gist.
But there is a workaround if you really want it.
```vim
Plug 'https://gist.github.com/952560a43601cd9898f1.git',
\ { 'as': 'xxx', 'do': 'mkdir -p plugin; cp -f *.vim plugin/' }
```
### Loading plugins manually
With `on` and `for` options, vim-plug allows you to defer loading of plugins. But if you want a plugin to be loaded on an event that is not supported by vim-plug, you can set `on` or `for` option to an empty list, and use `plug#load(names...)` function later to load the plugin manually. The following example will load [ultisnips](https://github.com/SirVer/ultisnips) and [YouCompleteMe](https://github.com/Valloric/YouCompleteMe) first time you enter insert mode.
```vim
" Load on nothing
Plug 'SirVer/ultisnips', { 'on': [] }
Plug 'Valloric/YouCompleteMe', { 'on': [] }
augroup load_us_ycm
autocmd!
autocmd InsertEnter * call plug#load('ultisnips', 'YouCompleteMe')
\| autocmd! load_us_ycm
augroup END
```