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] nmap d [Denite] nnoremap [Denite]g :Denite grep -auto-action=preview -split=no -no-empty nnoremap [Denite]f :Denite file/rec -start-filter -split=no nnoremap [Denite]l :Denite buffer file/old -split=no nnoremap [Denite]r :Denite -resume -refresh nnoremap [Denite]gf :DeniteCursorWord file/rec nnoremap [Denite]gg :DeniteCursorWord grep nnoremap [Denite]g/ :DeniteCursorWord line function! s:denite_my_settings() abort nnoremap denite#do_map('do_action') nnoremap p denite#do_map('do_action', 'preview') nnoremap q denite#do_map('quit') nnoremap i denite#do_map('open_filter_buffer') nnoremap denite#do_map('toggle_select').'j' endfunction autocmd FileType denite call s:denite_my_settings() 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 (neosnippet_expand_or_jump) smap (neosnippet_expand_or_jump) xmap (neosnippet_expand_or_jump) endif if dein#tap('vim-easy-align') nmap ga (EasyAlign) endif if dein#tap('vim-textobj-between') let g:textobj_between_no_default_key_mappings = 1 omap af (textobj-between-a) omap if (textobj-between-i) xmap af (textobj-between-a) xmap if (textobj-between-i) endif if dein#tap('vim-textobj-indent') let g:textobj_indent_no_default_key_mappings = 1 omap ai (textobj-indent-a) omap ii (textobj-indent-i) xmap ai (textobj-indent-a) xmap ii (textobj-indent-i) omap aI (textobj-indent-same-a) omap iI (textobj-indent-same-i) xmap aI (textobj-indent-same-a) xmap iI (textobj-indent-same-i) endif if dein#tap('vim-operator-surround') nmap sa (operator-surround-append) nmap sd (operator-surround-delete) nmap sr (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': '/var/tmp/ccls/cache' }}, \ 'whitelist': ['c', 'cpp', 'objc', 'objcpp'], \ }) endif if executable('rustup') au User lsp_setup call lsp#register_server({ \ 'name': 'rls', \ 'cmd': {server_info->['rustup', 'run', 'nightly', 'rls']}, \ 'whitelist': ['rust'], \ }) endif if executable('haskell-language-server-wrapper') au User lsp_setup call lsp#register_server({ \ 'name': 'hls', \ 'cmd': {server_info->['haskell-language-server-wrapper', '--lsp']}, \ 'whitelist': ['haskell'], \ }) endif if executable('texlab') au User lsp_setup call lsp#register_server({ \ 'name': 'texlab', \ 'cmd': {server_info->['texlab']}, \ 'whitelist': ['tex', 'plaintex'], \ }) endif function! s:on_lsp_buffer_enabled() abort setl omnifunc=lsp#complete setl signcolumn=yes setl completeopt-=preview endfunction augroup lsp_install au! au User lsp_buffer_enabled call s:on_lsp_buffer_enabled() augroup end nnoremap [Lsp] nmap l [Lsp] nmap [Lsp]dd (lsp-definition) nmap [Lsp]s (lsp-document-symbol) nmap [Lsp]i (lsp-document-diagnostics) nmap [Lsp]r (lsp-rename) endif if dein#tap('base16-vim') set bg=dark let base16colorspace=256 colorscheme base16-monokai endif let g:markdown_fenced_languages = ['haskell'] filetype plugin indent on syntax on set ai set bs=2 set cc=80,120 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 ",w !fb -e ".&filetype." -n ".expand("%:t") " Write with sudo com W w !sudo tee % > /dev/null