summaryrefslogtreecommitdiffstats
path: root/vim/files/vimrc
diff options
context:
space:
mode:
Diffstat (limited to 'vim/files/vimrc')
-rw-r--r--vim/files/vimrc177
1 files changed, 177 insertions, 0 deletions
diff --git a/vim/files/vimrc b/vim/files/vimrc
new file mode 100644
index 0000000..ac03d93
--- /dev/null
+++ b/vim/files/vimrc
@@ -0,0 +1,177 @@
+set nocompatible
+
+" Environment http://tlvince.com/vim-respect-xdg
+if !exists($XDG_CONFIG_HOME)
+ let $XDG_CONFIG_HOME=expand('~/.config')
+endif
+if !exists($XDG_DATA_HOME)
+ let $XDG_DATA_HOME=expand('~/.local/share')
+endif
+if !exists($XDG_CACHE_HOME)
+ let $XDG_CACHE_HOME=expand('~/.cache')
+endif
+
+set directory=$XDG_CACHE_HOME/vim/swp//,/var/tmp//,/tmp//
+set undodir=$XDG_CACHE_HOME/vim/undo//,/var/tmp//,/tmp//
+set backupdir=$XDG_CACHE_HOME/vim/backup,/var/tmp,/tmp
+set viminfo+=n$XDG_CACHE_HOME/vim/viminfo
+set rtp=$XDG_CONFIG_HOME/vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,$XDG_CONFIG_HOME/vim/after
+
+" dein.vim
+let s:dein_base = $XDG_DATA_HOME . '/vim/dein'
+let s:dein_repo_path = s:dein_base . '/repos/github.com/Shougo/dein.vim'
+let s:dein_repo_url = 'https://github.com/Shougo/dein.vim'
+let s:dein_toml = $XDG_CONFIG_HOME . '/vim/dein.toml'
+let s:plugrc = $XDG_CONFIG_HOME . '/vim/plugrc'
+let &runtimepath.=','.s:dein_repo_path
+
+function! s:hook_source() abort
+ let l:rcfile = s:plugrc . '/' . g:dein#plugin.normalized_name . '.rc.vim'
+ let g:dein#plugin.hook_source = "source " . l:rcfile
+endfunction
+
+" dein.vim
+let g:dein#types#git#clone_depth = 1
+try
+ if dein#load_state(s:dein_base)
+ call dein#begin(s:dein_base)
+ call dein#load_toml(s:dein_toml)
+ call dein#end()
+ call dein#save_state()
+ endif
+catch /E117:/ " dein not installed
+ execute "silent !git clone" s:dein_repo_url s:dein_repo_path
+ call dein#begin(s:dein_base)
+ call dein#load_toml(s:dein_toml)
+ set nomore
+ call dein#install()
+ call dein#end()
+ quit
+endtry
+
+if dein#tap('denite.nvim')
+ nnoremap [Denite] <Nop>
+ nmap <leader>d [Denite]
+
+ nnoremap [Denite]g :<C-u>Denite grep -auto-preview -split=no -no-empty<CR>
+ nnoremap [Denite]f :<C-u>Denite file/rec -mode=insert -split=no<CR>
+ nnoremap [Denite]l :<C-u>Denite buffer file/old -split=no<CR>
+ nnoremap [Denite]r :<C-u>Denite -resume -refresh<CR>
+
+ nnoremap [Denite]gf :DeniteCursorWord file/rec<CR>
+ nnoremap [Denite]gg :DeniteCursorWord grep<Cr>
+ nnoremap [Denite]g/ :DeniteCursorWord line<Cr>
+endif
+if dein#tap('vimfiler.vim')
+ call s:hook_source()
+endif
+if dein#tap('neosnippet.vim')
+ let g:neosnippet#snippets_directory =
+ \ $XDG_CONFIG_HOME . '/vim/snippets'
+ imap <C-k> <Plug>(neosnippet_expand_or_jump)
+ smap <C-k> <Plug>(neosnippet_expand_or_jump)
+ xmap <C-k> <Plug>(neosnippet_expand_or_jump)
+endif
+if dein#tap('vim-easy-align')
+ nmap ga <Plug>(EasyAlign)
+endif
+if dein#tap('vim-textobj-between')
+ let g:textobj_between_no_default_key_mappings = 1
+ omap af <Plug>(textobj-between-a)
+ omap if <Plug>(textobj-between-i)
+ xmap af <Plug>(textobj-between-a)
+ xmap if <Plug>(textobj-between-i)
+endif
+if dein#tap('vim-textobj-indent')
+ let g:textobj_indent_no_default_key_mappings = 1
+ omap ai <Plug>(textobj-indent-a)
+ omap ii <Plug>(textobj-indent-i)
+ xmap ai <Plug>(textobj-indent-a)
+ xmap ii <Plug>(textobj-indent-i)
+
+ omap aI <Plug>(textobj-indent-same-a)
+ omap iI <Plug>(textobj-indent-same-i)
+ xmap aI <Plug>(textobj-indent-same-a)
+ xmap iI <Plug>(textobj-indent-same-i)
+endif
+if dein#tap('vim-operator-surround')
+ nmap <silent>sa <Plug>(operator-surround-append)
+ nmap <silent>sd <Plug>(operator-surround-delete)
+ nmap <silent>sr <Plug>(operator-surround-replace)
+endif
+if dein#tap('vim-addon-local-vimrc')
+ let g:local_vimrc = {'names':['.lvimrc'],'hash_fun':'LVRHashOfFile'}
+endif
+if dein#tap('vim-lsp')
+ if executable('ccls')
+ au User lsp_setup call lsp#register_server({
+ \ 'name': 'ccls',
+ \ 'cmd': {server_info->['ccls']},
+ \ 'root_uri': {server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), 'compile_commands.json'))},
+ \ 'initialization_options': {'cache': {'directory': '/tmp/ccls/cache' }},
+ \ 'whitelist': ['c', 'cpp', 'objc', 'objcpp'],
+ \ })
+ endif
+ if executable('rls')
+ au User lsp_setup call lsp#register_server({
+ \ 'name': 'rls',
+ \ 'cmd': {server_info->['rustup', 'run', 'nightly', 'rls']},
+ \ 'whitelist': ['rust'],
+ \ })
+
+ au FileType rust setl omnifunc=lsp#complete
+ endif
+ if executable('hie-wrapper')
+ au User lsp_setup call lsp#register_server({
+ \ 'name': 'hie',
+ \ 'cmd': {server_info->['hie-wrapper']},
+ \ 'whitelist': ['haskell'],
+ \ })
+
+ au FileType haskell setl omnifunc=lsp#complete
+ endif
+
+ nnoremap [Lsp] <Nop>
+ nmap <leader>l [Lsp]
+
+ nmap [Lsp]dd <Plug>(lsp-definition)
+ nmap [Lsp]s <Plug>(lsp-document-symbol)
+ nmap [Lsp]i <Plug>(lsp-document-diagnostics)
+ nmap [Lsp]r <Plug>(lsp-rename)
+endif
+if dein#tap('base16-vim')
+ set bg=dark
+ let base16colorspace=256
+ colorscheme base16-monokai
+endif
+
+filetype plugin indent on
+syntax on
+
+set ai
+set bs=2
+set cc=80
+set fdm=syntax
+set formatoptions+=j
+set lcs=tab:\│\ ,trail:·,eol:¬
+set ls=2
+set nu
+set rnu
+set ru
+set si
+set sta
+set sw=4
+set ts=4
+set ttyfast
+set udf
+set wmnu
+
+if has('gui_running')
+ set go=m
+endif
+
+" Filebin
+com -range=% Fb :exec "<line1>,<line2>w !fb -e ".&filetype." -n ".expand("%:t")
+
+" Write with sudo
+com W w !sudo tee % > /dev/null