|
|
@ -3,61 +3,41 @@ filetype off " required |
|
|
|
|
|
|
|
" Section Plugins {{{ |
|
|
|
" Load vim-plug |
|
|
|
if has("nvim") |
|
|
|
if empty(glob("~/.config/nvim/autoload/plug.vim")) |
|
|
|
execute '!curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' |
|
|
|
endif |
|
|
|
else |
|
|
|
if empty(glob("~/.vim/autoload/plug.vim")) |
|
|
|
execute '!curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.github.com/junegunn/vim-plug/master/plug.vim' |
|
|
|
endif |
|
|
|
if empty(glob("~/.config/nvim/autoload/plug.vim")) |
|
|
|
execute '!curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' |
|
|
|
endif |
|
|
|
call plug#begin() |
|
|
|
" alternatively, pass a path where Vundle should install plugins |
|
|
|
"call vundle#begin('~/some/path/here') |
|
|
|
|
|
|
|
" let Vundle manage Vundle, required |
|
|
|
Plug 'VundleVim/Vundle.vim' |
|
|
|
Plug 'VundleVim/Vundle.vim' " let Vundle manage Vundle, required |
|
|
|
|
|
|
|
Plug 'tpope/vim-fugitive' " Git integration |
|
|
|
Plug 'tpope/vim-sensible' |
|
|
|
Plug 'tpope/vim-sensible' " Defaults everyone can agree on |
|
|
|
Plug 'tpope/vim-surround' " better handling of surrounding markers |
|
|
|
Plug 'tpope/vim-ragtag' " Enhancement of surround for html |
|
|
|
Plug 'tpope/vim-repeat' " repeat last command with . |
|
|
|
Plug 'tpope/vim-dadbod' " Modern database interface for Vim |
|
|
|
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } " file tree |
|
|
|
Plug 'Xuyuanp/nerdtree-git-plugin', { 'on': 'NERDTreeToggle' } |
|
|
|
Plug 'scrooloose/nerdcommenter' " better commenting |
|
|
|
if has("nvim") |
|
|
|
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } |
|
|
|
else |
|
|
|
Plug 'Shougo/neocomplete.vim' |
|
|
|
endif |
|
|
|
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } " completion engine |
|
|
|
Plug 'Shougo/neosnippet.vim' " snippet engine |
|
|
|
Plug 'Shougo/neosnippet-snippets' " snippets |
|
|
|
Plug 'easymotion/vim-easymotion' " better motion with leader |
|
|
|
Plug 'bling/vim-airline' |
|
|
|
Plug 'tpope/vim-ragtag' |
|
|
|
Plug 'tpope/vim-surround' " better handling of surrounding markers |
|
|
|
Plug 'tpope/vim-repeat' " repeat last command with . |
|
|
|
if has("nvim") |
|
|
|
Plug 'w0rp/ale' " asynchronous linting engine |
|
|
|
else |
|
|
|
Plug 'vim-syntastic/syntastic' " automatic linters |
|
|
|
endif |
|
|
|
Plug 'altercation/vim-colors-solarized' " solarized theme |
|
|
|
Plug 'bling/vim-airline' " statusline |
|
|
|
Plug 'w0rp/ale' " asynchronous linting engine |
|
|
|
Plug 'godlygeek/tabular' " Align text on symbols |
|
|
|
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } " fuzzy file finder |
|
|
|
Plug 'junegunn/fzf.vim' " vim integration for fzf |
|
|
|
if has("nvim") |
|
|
|
" Problems with Syntastic in vim |
|
|
|
Plug 'airblade/vim-gitgutter' " git status in gutter column |
|
|
|
endif |
|
|
|
Plug 'tpope/vim-dadbod' " Modern database interface for Vim |
|
|
|
Plug 'airblade/vim-gitgutter' " git status in gutter column |
|
|
|
Plug 'radenling/vim-dispatch-neovim' " support for :Start command, needed in dadbod |
|
|
|
|
|
|
|
" html / templates |
|
|
|
" html / templates{{{ |
|
|
|
Plug 'mattn/emmet-vim', { 'for': ['html', 'php', 'gohtmltmpl', 'vue'] } " emmet support for vim - easily create markdup wth CSS-like syntax |
|
|
|
Plug 'gregsexton/MatchTag', { 'for': ['html', 'php', 'gohtmltmpl', 'vue'] } " match tags in html, similar to paren support |
|
|
|
Plug 'othree/html5.vim', { 'for': ['html', 'php', 'gohtmltmpl', 'vue'] } " html5 support |
|
|
|
"}}} |
|
|
|
|
|
|
|
" JavaScript |
|
|
|
" JavaScript{{{ |
|
|
|
Plug 'gavocanov/vim-js-indent', { 'for': [ 'javascript' ]} " JavaScript indent support |
|
|
|
Plug 'moll/vim-node', { 'for': [ 'javascript', 'vue' ]} " node support |
|
|
|
"Plug 'othree/yajs.vim', { 'for': [ 'javascript', 'vue' ]} " JavaScript syntax plugin |
|
|
@ -65,49 +45,61 @@ Plug 'moll/vim-node', { 'for': [ 'javascript', 'vue' ]} " node support |
|
|
|
Plug 'https://github.com/othree/jspc.vim', { 'for': [ 'javascript', 'vue' ]} " Function parameter completion |
|
|
|
Plug 'heavenshell/vim-jsdoc', { 'for': [ 'javascript', 'vue' ]} " Generate JSDoc comments |
|
|
|
Plug 'posva/vim-vue', { 'for': [ 'javascript', 'html', 'vue' ] } " vue.js integration |
|
|
|
Plug 'carlitux/deoplete-ternjs', { 'for': [ 'javascript', 'vue', 'html' ], 'do': 'npm install -g tern' } |
|
|
|
Plug 'carlitux/deoplete-ternjs', { 'for': [ 'javascript', 'vue', 'html' ], 'do': 'npm install -g tern' } " deoplete completion via ternjs |
|
|
|
"}}} |
|
|
|
|
|
|
|
" Go |
|
|
|
" Go {{{ |
|
|
|
Plug 'fatih/vim-go', { 'for': [ 'go', 'html', 'gohtmltmpl' ], 'do': ':GoInstallBinaries' } " go support |
|
|
|
Plug 'zchee/deoplete-go', { 'for': 'go' } |
|
|
|
"}}} |
|
|
|
|
|
|
|
" LaTeX |
|
|
|
" LaTeX{{{ |
|
|
|
Plug 'lervag/vimtex', { 'for': 'tex' } |
|
|
|
"}}} |
|
|
|
|
|
|
|
" Markdown |
|
|
|
" Markdown{{{ |
|
|
|
Plug 'suan/vim-instant-markdown', { 'for': 'markdown' } |
|
|
|
Plug 'tpope/vim-markdown', { 'for': 'markdown'} |
|
|
|
"}}} |
|
|
|
|
|
|
|
" Colorschemes |
|
|
|
" Colorschemes{{{ |
|
|
|
Plug 'altercation/vim-colors-solarized' |
|
|
|
"}}} |
|
|
|
|
|
|
|
" TOML |
|
|
|
" TOML{{{ |
|
|
|
Plug 'cespare/vim-toml', { 'for': 'toml' } |
|
|
|
"}}} |
|
|
|
|
|
|
|
" Haskell |
|
|
|
" Haskell{{{ |
|
|
|
Plug 'bitc/vim-hdevtools', { 'for': 'haskell' } |
|
|
|
Plug 'nbouscal/vim-stylish-haskell', { 'for': 'haskell' } |
|
|
|
"}}} |
|
|
|
|
|
|
|
" C/C++ |
|
|
|
" C/C++{{{ |
|
|
|
Plug 'Rip-Rip/clang_complete', { 'for': ['c', 'cpp'], 'do': 'make install' } |
|
|
|
let g:clang_library_path='/usr/lib/llvm-6.0/lib/libclang-6.0.so.1' |
|
|
|
Plug 'rhysd/vim-clang-format', { 'for' : ['c', 'cpp', 'java'] } |
|
|
|
"}}} |
|
|
|
|
|
|
|
" PHP |
|
|
|
" PHP{{{ |
|
|
|
"Plug 'shawncplus/phpcomplete.vim', { 'for': 'php', 'do': 'curl -Ss http://vim-php.com/phpctags/install/phpctags.phar > ~/bin/phpctags && chmod +x ~/bin/phpctags' } |
|
|
|
Plug 'lvht/phpcd.vim', { 'for': 'php', 'do': 'composer install' } |
|
|
|
Plug 'captbaritone/better-indent-support-for-php-with-html', { 'for': 'php' } |
|
|
|
Plug 'lumiliet/vim-twig', { 'for': [ 'php', 'html' ] } " Twig templates |
|
|
|
"}}} |
|
|
|
|
|
|
|
" Python |
|
|
|
" Python{{{ |
|
|
|
Plug 'davidhalter/jedi-vim', { 'for': 'python', 'do': 'pip install jedi' } |
|
|
|
Plug 'zchee/deoplete-jedi', { 'for': 'python' } |
|
|
|
"}}} |
|
|
|
|
|
|
|
" Java |
|
|
|
" Java{{{ |
|
|
|
Plug 'artur-shaik/vim-javacomplete2', { 'for': 'java' } |
|
|
|
"}}} |
|
|
|
|
|
|
|
" MIPS |
|
|
|
" MIPS{{{ |
|
|
|
Plug 'vim-scripts/mips.vim' |
|
|
|
"}}} |
|
|
|
|
|
|
|
" All of your Plugins must be added before the following line |
|
|
|
call plug#end() " required |
|
|
@ -116,8 +108,9 @@ filetype plugin indent on " required |
|
|
|
|
|
|
|
" THEME{{{ |
|
|
|
colorscheme solarized |
|
|
|
set background=dark" |
|
|
|
set background=dark |
|
|
|
|
|
|
|
" Use light theme if whole shell is in light mode |
|
|
|
let themeenv=$THEME_SWITCHER |
|
|
|
if themeenv=='light' |
|
|
|
set background=light |
|
|
@ -125,18 +118,18 @@ endif |
|
|
|
" }}} |
|
|
|
|
|
|
|
" SETTINGS{{{ |
|
|
|
set number |
|
|
|
set autoread |
|
|
|
set colorcolumn=80 |
|
|
|
set number " line numbers |
|
|
|
set autoread " reload file automatically |
|
|
|
set colorcolumn=80 " highlight column 80 |
|
|
|
|
|
|
|
set history=1000 |
|
|
|
set wildignore+=node_modules |
|
|
|
set wildignore+=node_modules " ignore node_modules folder from file search |
|
|
|
|
|
|
|
" make comments and HTML attributes italic |
|
|
|
highlight Comment cterm=italic |
|
|
|
highlight htmlArg cterm=italic |
|
|
|
|
|
|
|
set autoindent " automatically set indent of new line |
|
|
|
set autoindent " automatically set indent of new line |
|
|
|
set smartindent |
|
|
|
set tabstop=4 |
|
|
|
set shiftwidth=4 |
|
|
@ -202,19 +195,6 @@ let NERDTreeShowHidden=1 |
|
|
|
|
|
|
|
let g:airline_powerline_fonts = 1 |
|
|
|
|
|
|
|
" Syntastic{{{ |
|
|
|
if !has("nvim") |
|
|
|
let g:syntastic_always_populate_loc_list = 1 |
|
|
|
let g:syntastic_auto_loc_list = 1 |
|
|
|
let g:syntastic_check_on_open = 1 |
|
|
|
let g:syntastic_check_on_wq = 0 |
|
|
|
let g:syntastic_aggregate_errors = 1 |
|
|
|
set statusline+=%#warningmsg# |
|
|
|
set statusline+=%{SyntasticStatuslineFlag()} |
|
|
|
set statusline+=%* |
|
|
|
endif |
|
|
|
"}}} |
|
|
|
|
|
|
|
" ALE {{{ |
|
|
|
let g:airline#extensions#ale#enabled = 1 |
|
|
|
"}}} |
|
|
@ -245,89 +225,15 @@ autocmd FileType c,cpp,objc vnoremap <buffer><Leader>f :ClangFormat<CR> |
|
|
|
"}}} |
|
|
|
|
|
|
|
" Completion {{{ |
|
|
|
if !has("nvim") |
|
|
|
"Note: This option must be set in .vimrc(_vimrc). NOT IN .gvimrc(_gvimrc)! |
|
|
|
" Disable AutoComplPop. |
|
|
|
let g:acp_enableAtStartup = 0 |
|
|
|
" Use neocomplete. |
|
|
|
let g:neocomplete#enable_at_startup = 1 |
|
|
|
" Use smartcase. |
|
|
|
let g:neocomplete#enable_smart_case = 1 |
|
|
|
" Set minimum syntax keyword length. |
|
|
|
let g:neocomplete#sources#syntax#min_keyword_length = 3 |
|
|
|
|
|
|
|
" Define dictionary. |
|
|
|
let g:neocomplete#sources#dictionary#dictionaries = { |
|
|
|
\ 'default' : '', |
|
|
|
\ 'vimshell' : $HOME.'/.vimshell_hist', |
|
|
|
\ 'scheme' : $HOME.'/.gosh_completions' |
|
|
|
\ } |
|
|
|
|
|
|
|
" Define keyword. |
|
|
|
if !exists('g:neocomplete#keyword_patterns') |
|
|
|
let g:neocomplete#keyword_patterns = {} |
|
|
|
endif |
|
|
|
let g:neocomplete#keyword_patterns['default'] = '\h\w*' |
|
|
|
|
|
|
|
" Plugin key-mappings. |
|
|
|
inoremap <expr><C-g> neocomplete#undo_completion() |
|
|
|
inoremap <expr><C-l> neocomplete#complete_common_string() |
|
|
|
|
|
|
|
" Recommended key-mappings. |
|
|
|
" <CR>: close popup and save indent. |
|
|
|
inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR> |
|
|
|
function! s:my_cr_function() |
|
|
|
return (pumvisible() ? "\<C-y>" : "" ) . "\<CR>" |
|
|
|
" For no inserting <CR> key. |
|
|
|
"return pumvisible() ? "\<C-y>" : "\<CR>" |
|
|
|
endfunction |
|
|
|
" <TAB>: completion. |
|
|
|
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" |
|
|
|
" <C-h>, <BS>: close popup and delete backword char. |
|
|
|
inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>" |
|
|
|
inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>" |
|
|
|
" Close popup by <Space>. |
|
|
|
"inoremap <expr><Space> pumvisible() ? "\<C-y>" : "\<Space>" |
|
|
|
|
|
|
|
" AutoComplPop like behavior. |
|
|
|
"let g:neocomplete#enable_auto_select = 1 |
|
|
|
|
|
|
|
" Shell like behavior(not recommended). |
|
|
|
"set completeopt+=longest |
|
|
|
"let g:neocomplete#enable_auto_select = 1 |
|
|
|
"let g:neocomplete#disable_auto_complete = 1 |
|
|
|
"inoremap <expr><TAB> pumvisible() ? "\<Down>" : "\<C-x>\<C-u>" |
|
|
|
|
|
|
|
" Enable omni completion. |
|
|
|
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS |
|
|
|
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags |
|
|
|
autocmd FileType javascript setlocal omnifunc=tern#Complete |
|
|
|
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete |
|
|
|
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags |
|
|
|
|
|
|
|
" Enable heavy omni completion. |
|
|
|
if !exists('g:neocomplete#sources#omni#input_patterns') |
|
|
|
let g:neocomplete#sources#omni#input_patterns = {} |
|
|
|
endif |
|
|
|
"let g:neocomplete#sources#omni#input_patterns.php = '[^. \t]->\h\w*\|\h\w*::' |
|
|
|
"let g:neocomplete#sources#omni#input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)' |
|
|
|
"let g:neocomplete#sources#omni#input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::' |
|
|
|
|
|
|
|
" For perlomni.vim setting. |
|
|
|
" https://github.com/c9s/perlomni.vim |
|
|
|
let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::' |
|
|
|
|
|
|
|
else |
|
|
|
" Use deoplete. |
|
|
|
let g:deoplete#enable_at_startup = 1 |
|
|
|
|
|
|
|
" Use TAB to cycle between matches |
|
|
|
inoremap <silent><expr><tab> pumvisible() ? "\<c-n>" : "\<tab>" |
|
|
|
inoremap <silent><expr><s-tab> pumvisible() ? "\<c-p>" : "\<s-tab>" |
|
|
|
|
|
|
|
let g:deoplete#ignore_sources = get(g:, 'deoplete#ignore_sources', {}) |
|
|
|
let g:deoplete#ignore_sources.php = ['omni'] |
|
|
|
endif |
|
|
|
" Use deoplete. |
|
|
|
let g:deoplete#enable_at_startup = 1 |
|
|
|
|
|
|
|
" Use TAB to cycle between matches |
|
|
|
inoremap <silent><expr><tab> pumvisible() ? "\<c-n>" : "\<tab>" |
|
|
|
inoremap <silent><expr><s-tab> pumvisible() ? "\<c-p>" : "\<s-tab>" |
|
|
|
|
|
|
|
let g:deoplete#ignore_sources = get(g:, 'deoplete#ignore_sources', {}) |
|
|
|
let g:deoplete#ignore_sources.php = ['omni'] |
|
|
|
|
|
|
|
" Neosnippet Settings |
|
|
|
imap <C-k> <Plug>(neosnippet_expand_or_jump) |
|
|
|