Last active
January 16, 2020 15:34
-
-
Save kborling/7ec3eeceb7eb2c9e095c4c9187b5ae68 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"***************************************************************************** | |
" Vim-PLug core | |
"***************************************************************************** | |
let vimplug_exists=expand('~/.config/nvim/autoload/plug.vim') | |
let g:vim_bootstrap_langs = "c,elm,go,html,javascript,php,python" | |
let g:vim_bootstrap_editor = "nvim" " nvim or vim | |
if !filereadable(vimplug_exists) | |
if !executable("curl") | |
echoerr "You have to install curl or first install vim-plug yourself!" | |
execute "q!" | |
endif | |
echo "Installing Vim-Plug..." | |
echo "" | |
silent exec "!\curl -fLo " . vimplug_exists . " --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" | |
let g:not_finish_vimplug = "yes" | |
autocmd VimEnter * PlugInstall | |
endif | |
" Required: | |
call plug#begin(expand('~/.config/nvim/plugged')) | |
"***************************************************************************** | |
" Plug install packages | |
"***************************************************************************** | |
Plug 'scrooloose/nerdtree' | |
Plug 'jistr/vim-nerdtree-tabs' | |
Plug 'Xuyuanp/nerdtree-git-plugin' | |
Plug 'ryanoasis/vim-devicons' | |
Plug 'justinmk/vim-sneak' | |
Plug 'easymotion/vim-easymotion' | |
Plug 'tpope/vim-commentary' | |
Plug 'tpope/vim-fugitive' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'vim-scripts/grep.vim' | |
Plug 'vim-scripts/CSApprox' | |
Plug 'Raimondi/delimitMate' | |
Plug 'majutsushi/tagbar' | |
Plug 'w0rp/ale' | |
Plug 'Yggdroot/indentLine' | |
Plug 'avelino/vim-bootstrap-updater' | |
Plug 'sheerun/vim-polyglot' | |
Plug 'tpope/vim-rhubarb' " required by fugitive to :Gbrowse | |
Plug 'joonty/vdebug' | |
if isdirectory('/usr/local/opt/fzf') | |
Plug '/usr/local/opt/fzf' | Plug 'junegunn/fzf.vim' | |
else | |
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin' } | |
Plug 'junegunn/fzf.vim' | |
endif | |
let g:make = 'gmake' | |
if exists('make') | |
let g:make = 'make' | |
endif | |
Plug 'Shougo/vimproc.vim', {'do': g:make} | |
" Intellisense | |
" Install nightly build | |
Plug 'neoclide/coc.nvim', {'do': './install.sh nightly'} | |
" Or install lastest release tag | |
Plug 'neoclide/coc.nvim', {'tag': '*', 'do': './install.sh'} | |
" Or build from source code | |
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'} | |
" Tmux | |
Plug 'benmills/vimux' | |
Plug 'christoomey/vim-tmux-navigator' | |
" Vim-Session | |
Plug 'xolox/vim-misc' | |
Plug 'xolox/vim-session' | |
" Snippets | |
Plug 'SirVer/ultisnips' | |
Plug 'honza/vim-snippets' | |
" Gist | |
Plug 'mattn/webapi-vim' | |
Plug 'mattn/gist-vim' | |
" Fuzzy file, buffer, mru, tab, etc finder | |
Plug 'ctrlpvim/ctrlp.vim' | |
" Time Track | |
Plug 'wakatime/vim-wakatime' | |
" Time Track - Disabled due to syntax issues | |
"Plug 'swdotcom/swdc-vim' | |
" Color | |
"Plug 'tomasr/molokai' | |
Plug 'haishanh/night-owl.vim' | |
" Rainbow Brackets | |
Plug 'luochen1990/rainbow' | |
" Multiple Cursors | |
" Plug 'terryma/vim-multiple-cursors' | |
" Org mode | |
Plug 'jceb/vim-orgmode' | |
" Better Comments | |
Plug 'jbgutierrez/vim-better-comments' | |
" Auto Format | |
Plug 'chiel92/vim-autoformat' | |
" Fancy start screen | |
" Plug 'mhinz/vim-startify' | |
let g:rainbow_active = 1 | |
" enable 24bit true color | |
" If you have vim >=8.0 or Neovim >= 0.1.5 | |
if (has("termguicolors")) | |
set termguicolors | |
endif | |
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" | |
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" | |
set t_ut= | |
" For Neovim 0.1.3 and 0.1.4 | |
" let $NVIM_TUI_ENABLE_TRUE_COLOR=1 | |
" enable the theme | |
syntax enable | |
" set color scheme via source | |
source /Users/borlandia/.config/nvim/plugged/night-owl.vim/colors/night-owl.vim | |
" colorscheme night-owl | |
"***************************************************************************** | |
" Custom bundles | |
"***************************************************************************** | |
" php | |
Plug 'stanangeloff/php.vim' | |
Plug 'stephpy/vim-php-cs-fixer' | |
" laravel | |
Plug 'jwalton512/vim-blade' | |
" gdscript | |
Plug 'calviken/vim-gdscript3' | |
" c | |
Plug 'vim-scripts/c.vim', {'for': ['c', 'cpp']} | |
Plug 'ludwig/split-manpage.vim' | |
" elm | |
" Elm Bundle | |
Plug 'elmcast/elm-vim' | |
" go | |
" Go Lang Bundle | |
Plug 'fatih/vim-go', {'do': ':GoInstallBinaries'} | |
" gocode | |
Plug 'mdempsky/gocode', { 'rtp': 'nvim', 'do': '~/.config/nvim/plugged/gocode/nvim/symlink.sh' } | |
" dart | |
Plug 'dart-lang/dart-vim-plugin' | |
"Plug 'natebosch/vim-lsc' | |
"Plug 'natebosch/vim-lsc-dart' | |
" flutter | |
Plug 'thosakwe/vim-flutter' | |
" html | |
" HTML Bundle | |
Plug 'hail2u/vim-css3-syntax' | |
Plug 'gorodinskiy/vim-coloresque' | |
Plug 'tpope/vim-haml' | |
Plug 'mattn/emmet-vim' | |
" javascript | |
" Javascript Bundle | |
Plug 'jelera/vim-javascript-syntax' | |
" php | |
" PHP Bundle | |
Plug 'arnaud-lb/vim-php-namespace' | |
" python | |
" Python Bundle | |
Plug 'davidhalter/jedi-vim' | |
Plug 'raimon49/requirements.txt.vim', {'for': 'requirements'} | |
" Language Client | |
Plug 'autozimu/LanguageClient-neovim', { | |
\ 'branch': 'next', | |
\ 'do': 'bash install.sh', | |
\ } | |
" (Optional) Multi-entry selection UI. | |
Plug 'junegunn/fzf' | |
" deoplete | |
" if has('nvim') | |
" Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } | |
" else | |
" Plug 'Shougo/deoplete.nvim' | |
" Plug 'roxma/nvim-yarp' | |
" Plug 'roxma/vim-hug-neovim-rpc' | |
" endif | |
" let g:deoplete#enable_at_startup = 1 | |
" " deoplete-go | |
" Plug 'deoplete-plugins/deoplete-go', { 'do': 'make'} | |
"***************************************************************************** | |
"***************************************************************************** | |
" Include user's extra bundle | |
if filereadable(expand("~/.config/nvim/local_bundles.vim")) | |
source ~/.config/nvim/local_bundles.vim | |
endif | |
call plug#end() | |
" Required: | |
filetype plugin indent on | |
"***************************************************************************** | |
" Basic Setup | |
"*****************************************************************************" | |
" Encoding | |
set encoding=utf-8 | |
set fileencoding=utf-8 | |
set fileencodings=utf-8 | |
" Enable filetypes | |
filetype plugin on | |
" Fix backspace indent | |
set backspace=indent,eol,start | |
" Tabs. May be overridden by autocmd rules | |
set tabstop=4 | |
set softtabstop=0 | |
set shiftwidth=4 | |
set expandtab | |
" Map leader to , | |
let mapleader=',' | |
"more characters will be sent to the screen for redrawing | |
set ttyfast | |
"time waited for key press(es) to complete. It makes for a faster key response | |
set ttimeout | |
set ttimeoutlen=50 | |
"display incomplete commands | |
set showcmd | |
"a better menu in command mode | |
set wildmenu | |
"disable soft wrap for lines | |
set nowrap | |
"always display the status line | |
set laststatus=2 | |
"display line numbers on the left side | |
set number | |
"highlight current line | |
set cursorline | |
"display text width column | |
set colorcolumn=81 | |
"new splits will be at the bottom or to the right side of the screen | |
set splitbelow | |
set splitright | |
"always set autoindenting on | |
set autoindent | |
" Enable hidden buffers | |
set hidden | |
" Searching | |
set hlsearch | |
set incsearch | |
set ignorecase | |
set smartcase | |
" Hybrid Line Numbers (absolute + relative) | |
augroup numbertoggle | |
autocmd! | |
autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu | set rnu | endif | |
autocmd BufLeave,FocusLost,InsertEnter,WinLeave * if &nu | set nornu | endif | |
augroup END | |
" Fix for crontab editing | |
autocmd filetype crontab setlocal nobackup nowritebackup | |
set fileformats=unix,dos,mac | |
if exists('$SHELL') | |
set shell=$SHELL | |
else | |
set shell=/bin/sh | |
endif | |
" session management | |
let g:session_directory = "~/.config/nvim/session" | |
let g:session_autoload = "no" | |
let g:session_autosave = "no" | |
let g:session_command_aliases = 1 | |
"***************************************************************************** | |
" Visual Settings | |
"***************************************************************************** | |
set ruler | |
let no_buffers_menu=1 | |
"silent! colorscheme molokai | |
set mousemodel=popup | |
set t_Co=256 | |
set guioptions=egmrti | |
set gfn=Monospace\ 10 | |
if has("gui_running") | |
if has("gui_mac") || has("gui_macvim") | |
set guifont=Menlo:h12 | |
set transparency=7 | |
endif | |
else | |
let g:CSApprox_loaded = 1 | |
" IndentLine | |
let g:indentLine_enabled = 1 | |
let g:indentLine_concealcursor = 0 | |
let g:indentLine_char = '┆' | |
let g:indentLine_faster = 1 | |
endif | |
" Disable the blinking cursor. | |
set gcr=a:blinkon0 | |
set scrolloff=3 | |
" Status bar | |
set laststatus=2 | |
" Use modeline overrides | |
set modeline | |
set modelines=10 | |
set title | |
set titleold="Terminal" | |
set titlestring=%F | |
set statusline=%F%m%r%h%w%=(%{&ff}/%Y)\ (line\ %l\/%L,\ col\ %c)\ | |
" Search mappings: These will make it so that going to the next one in a | |
" search will center on the line it's found in. | |
nnoremap n nzzzv | |
nnoremap N Nzzzv | |
if exists("*fugitive#statusline") | |
set statusline+=%{fugitive#statusline()} | |
endif | |
" vim-airline | |
let g:airline_theme = 'powerlineish' | |
let g:airline#extensions#branch#enabled = 1 | |
let g:airline#extensions#ale#enabled = 1 | |
let g:airline#extensions#tabline#enabled = 1 | |
let g:airline#extensions#tagbar#enabled = 1 | |
let g:airline_skip_empty_sections = 1 | |
"***************************************************************************** | |
" Abbreviations | |
"***************************************************************************** | |
" no one is really happy until you have this shortcuts | |
cnoreabbrev W! w! | |
cnoreabbrev Q! q! | |
cnoreabbrev Qall! qall! | |
cnoreabbrev Wq wq | |
cnoreabbrev Wa wa | |
cnoreabbrev wQ wq | |
cnoreabbrev WQ wq | |
cnoreabbrev W w | |
cnoreabbrev Q q | |
cnoreabbrev Qall qall | |
" netrw | |
let g:netrw_banner=0 | |
let g:netrw_winsize=20 | |
let g:netrw_liststyle=3 | |
let g:netrw_localrmdir='rm -r' | |
"toggle netrw on the left side of the editor | |
nnoremap <leader>n :Lexplore<CR> | |
" Easy Motion Leader | |
map <SPACE> <Plug>(easymotion-s2) | |
" NERDTree configuration | |
let g:NERDTreeChDirMode=2 | |
let g:NERDTreeIgnore=['\.rbc$', '\~$', '\.pyc$', '\.db$', '\.sqlite$', '__pycache__'] | |
let g:NERDTreeSortOrder=['^__\.py$', '\/$', '*', '\.swp$', '\.bak$', '\~$'] | |
let g:NERDTreeShowBookmarks=1 | |
let g:nerdtree_tabs_focus_on_files=1 | |
let NERDTreeQuitOnOpen = 1 | |
let NERDTreeMinimalUI = 1 | |
let NERDTreeAutoDeleteBuffer = 1 | |
let NERDTreeDirArrows = 1 | |
let g:NERDTreeMapOpenInTabSilent = '<RightMouse>' | |
let g:NERDTreeWinSize = 35 | |
set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.pyc,*.db,*.sqlite | |
nnoremap <silent> <F2> :NERDTreeFind<CR> | |
nnoremap <silent> <F3> :NERDTreeToggle<CR> | |
map <C-n> :NERDTreeToggle<CR> | |
" grep.vim | |
nnoremap <silent> <leader>f :Rgrep<CR> | |
let Grep_Default_Options = '-IR' | |
let Grep_Skip_Files = '*.log *.db' | |
let Grep_Skip_Dirs = '.git node_modules' | |
" Vimux | |
" Prompt for a command to run | |
map <Leader>vp :VimuxPromptCommand<CR> | |
" Run last command executed by VimuxRunCommand | |
map <Leader>vl :VimuxRunLastCommand<CR> | |
" terminal emulation | |
nnoremap <silent> <leader>sh :terminal<CR> | |
"***************************************************************************** | |
" Commands | |
"***************************************************************************** | |
" remove trailing whitespaces | |
command! FixWhitespace :%s/\s\+$//e | |
"***************************************************************************** | |
" Functions | |
"***************************************************************************** | |
if !exists('*s:setupWrapping') | |
function s:setupWrapping() | |
set wrap | |
set wm=2 | |
set textwidth=79 | |
endfunction | |
endif | |
"***************************************************************************** | |
" Autocmd Rules | |
"***************************************************************************** | |
" The PC is fast enough, do syntax highlight syncing from start unless 200 lines | |
augroup vimrc-sync-fromstart | |
autocmd! | |
autocmd BufEnter * :syntax sync maxlines=200 | |
augroup END | |
" Remember cursor position | |
augroup vimrc-remember-cursor-position | |
autocmd! | |
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif | |
augroup END | |
" txt | |
augroup vimrc-wrapping | |
autocmd! | |
autocmd BufRead,BufNewFile *.txt call s:setupWrapping() | |
augroup END | |
" make/cmake | |
augroup vimrc-make-cmake | |
autocmd! | |
autocmd FileType make setlocal noexpandtab | |
autocmd BufNewFile,BufRead CMakeLists.txt setlocal filetype=cmake | |
augroup END | |
set autoread | |
" Format PHP on save | |
autocmd BufWritePost *.php silent! call PhpCsFixerFixFile() | |
"***************************************************************************** | |
" Mappings | |
"***************************************************************************** | |
" Split | |
noremap <Leader>h :<C-u>split<CR> | |
noremap <Leader>v :<C-u>vsplit<CR> | |
" vv to generate new vertical split | |
noremap <silent> vv <C-w>v | |
" ss to generate new horizontal split | |
" noremap <silent> ss <C-w>j | |
noremap <silent> ss :split<CR> | |
" Git | |
noremap <Leader>ga :Gwrite<CR> | |
noremap <Leader>gc :Gcommit<CR> | |
noremap <Leader>gsh :Gpush<CR> | |
noremap <Leader>gll :Gpull<CR> | |
noremap <Leader>gs :Gstatus<CR> | |
noremap <Leader>gb :Gblame<CR> | |
noremap <Leader>gd :Gvdiff<CR> | |
noremap <Leader>gr :Gremove<CR> | |
" session management | |
nnoremap <leader>so :OpenSession<Space> | |
nnoremap <leader>ss :SaveSession<Space> | |
nnoremap <leader>sd :DeleteSession<CR> | |
nnoremap <leader>sc :CloseSession<CR> | |
" Tabs | |
nnoremap <Tab> gt | |
nnoremap <S-Tab> gT | |
nnoremap <silent> <S-t> :tabnew<CR> | |
" Set working directory | |
nnoremap <leader>. :lcd %:p:h<CR> | |
" Opens an edit command with the path of the currently edited file filled in | |
noremap <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR> | |
" Opens a tab edit command with the path of the currently edited file filled | |
noremap <Leader>te :tabe <C-R>=expand("%:p:h") . "/" <CR> | |
" fzf.vim | |
set wildmode=list:longest,list:full | |
set wildignore+=*.o,*.obj,.git,*.rbc,*.pyc,__pycache__ | |
let $FZF_DEFAULT_COMMAND = "find * -path '*/\.*' -prune -o -path 'node_modules/**' -prune -o -path 'target/**' -prune -o -path 'dist/**' -prune -o -type f -print -o -type l -print 2> /dev/null" | |
" The Silver Searcher | |
if executable('ag') | |
let $FZF_DEFAULT_COMMAND = 'ag --hidden --ignore .git -g ""' | |
set grepprg=ag\ --nogroup\ --nocolor | |
endif | |
" ripgrep | |
if executable('rg') | |
let $FZF_DEFAULT_COMMAND = 'rg --files --hidden --follow --glob "!.git/*"' | |
set grepprg=rg\ --vimgrep | |
command! -bang -nargs=* Find call fzf#vim#grep('rg --column --line-number --no-heading --fixed-strings --ignore-case --hidden --follow --glob "!.git/*" --color "always" '.shellescape(<q-args>).'| tr -d "\017"', 1, <bang>0) | |
endif | |
cnoremap <C-P> <C-R>=expand("%:p:h") . "/" <CR> | |
nnoremap <silent> <leader>b :Buffers<CR> | |
nnoremap <silent> <leader>e :FZF -m<CR> | |
"Recovery commands from history through FZF | |
nmap <leader>y :History:<CR> | |
" snippets | |
let g:UltiSnipsExpandTrigger="<c-j>" | |
let g:UltiSnipsJumpForwardTrigger="<c-b>" | |
let g:UltiSnipsJumpBackwardTrigger="<c-z>" | |
let g:UltiSnipsEditSplit="vertical" | |
" <TAB>: completion. | |
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" | |
" ale | |
let g:ale_linters = {} | |
" Error and warning signs. | |
" let g:ale_sign_error = '⤫' | |
" let g:ale_sign_warning = '⚠' | |
" Tagbar | |
" nmap <silent> <F4> :TagbarToggle<CR> | |
nnoremap <silent> <Leader>t :TagbarToggle<CR> | |
let g:tagbar_autofocus = 1 | |
" Disable visualbell | |
set noerrorbells visualbell t_vb= | |
if has('autocmd') | |
autocmd GUIEnter * set visualbell t_vb= | |
endif | |
" Copy/Paste/Cut | |
if has('unnamedplus') | |
set clipboard=unnamed,unnamedplus | |
endif | |
noremap YY "+y<CR> | |
noremap <leader>p "+gP<CR> | |
noremap XX "+x<CR> | |
if has('macunix') | |
" pbcopy for OSX copy/paste | |
vmap <C-x> :!pbcopy<CR> | |
vmap <C-c> :w !pbcopy<CR><CR> | |
endif | |
" No arrows | |
" noremap <Up> :m -2<CR> | |
" noremap <Down> :m +1<CR> | |
noremap <Left> <Nop> | |
noremap <Right> <Nop> | |
" Buffer nav | |
noremap <leader>z :bp<CR> | |
noremap <leader>q :bp<CR> | |
noremap <leader>x :bn<CR> | |
noremap <leader>w :bn<CR> | |
" Close buffer | |
noremap <leader>c :bd<CR> | |
noremap <Tab> :bp<CR> | |
noremap <S-Tab> :bn<CR> | |
" Clean search (highlight) | |
nnoremap <silent> <leader><space> :noh<cr> | |
" Switching windows | |
noremap <C-j> <C-w>j | |
noremap <C-k> <C-w>k | |
noremap <C-l> <C-w>l | |
noremap <C-h> <C-w>h | |
" Vmap for maintain Visual Mode after shifting > and < | |
vmap < <gv | |
vmap > >gv | |
" Move visual block | |
vnoremap J :m '>+1<CR>gv=gv | |
vnoremap K :m '<-2<CR>gv=gv | |
" Open current line on GitHub | |
nnoremap <Leader>o :.Gbrowse<CR> | |
"***************************************************************************** | |
" Custom configs | |
"***************************************************************************** | |
" c | |
autocmd FileType c setlocal tabstop=4 shiftwidth=4 expandtab | |
autocmd FileType cpp setlocal tabstop=4 shiftwidth=4 expandtab | |
" elm | |
" elm-vim | |
let g:elm_setup_keybindings = 0 | |
let g:elm_format_autosave = 1 | |
" vim-polyglot | |
let g:polyglot_disabled = ['elm'] | |
" go | |
" vim-go | |
" run :GoBuild or :GoTestCompile based on the go file | |
function! s:build_go_files() | |
let l:file = expand('%') | |
if l:file =~# '^\f\+_test\.go$' | |
call go#test#Test(0, 1) | |
elseif l:file =~# '^\f\+\.go$' | |
call go#cmd#Build(0) | |
endif | |
endfunction | |
let g:go_list_type = "quickfix" | |
let g:go_fmt_command = "goimports" | |
let g:go_fmt_fail_silently = 1 | |
let g:go_highlight_types = 1 | |
let g:go_highlight_fields = 1 | |
let g:go_highlight_functions = 1 | |
let g:go_highlight_methods = 1 | |
let g:go_highlight_operators = 1 | |
let g:go_highlight_build_constraints = 1 | |
let g:go_highlight_structs = 1 | |
let g:go_highlight_generate_tags = 1 | |
let g:go_highlight_space_tab_error = 0 | |
let g:go_highlight_array_whitespace_error = 0 | |
let g:go_highlight_trailing_whitespace_error = 0 | |
let g:go_highlight_extra_types = 1 | |
let g:go_auto_sameids = 1 | |
let g:go_auto_type_info = 1 | |
autocmd BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 | |
augroup completion_preview_close | |
autocmd! | |
if v:version > 703 || v:version == 703 && has('patch598') | |
autocmd CompleteDone * if !&previewwindow && &completeopt =~ 'preview' | silent! pclose | endif | |
endif | |
augroup END | |
augroup go | |
au! | |
au Filetype go command! -bang A call go#alternate#Switch(<bang>0, 'edit') | |
au Filetype go command! -bang AV call go#alternate#Switch(<bang>0, 'vsplit') | |
au Filetype go command! -bang AS call go#alternate#Switch(<bang>0, 'split') | |
au Filetype go command! -bang AT call go#alternate#Switch(<bang>0, 'tabe') | |
au FileType go nmap <Leader>dd <Plug>(go-def-vertical) | |
au FileType go nmap <Leader>dv <Plug>(go-doc-vertical) | |
au FileType go nmap <Leader>db <Plug>(go-doc-browser) | |
au FileType go nmap <leader>r <Plug>(go-run) | |
au FileType go nmap <leader>t <Plug>(go-test) | |
au FileType go nmap <Leader>gt <Plug>(go-coverage-toggle) | |
au FileType go nmap <Leader>i <Plug>(go-info) | |
au FileType go nmap <silent> <Leader>l <Plug>(go-metalinter) | |
au FileType go nmap <C-g> :GoDecls<cr> | |
au FileType go nmap <leader>dr :GoDeclsDir<cr> | |
au FileType go imap <C-g> <esc>:<C-u>GoDecls<cr> | |
au FileType go imap <leader>dr <esc>:<C-u>GoDeclsDir<cr> | |
au FileType go nmap <leader>rb :<C-u>call <SID>build_go_files()<CR> | |
augroup END | |
" ale | |
:call extend(g:ale_linters, { | |
\"go": ['golint', 'go vet'], }) | |
" flutter options | |
nnoremap <leader>fa :FlutterRun<cr> | |
nnoremap <leader>fq :FlutterQuit<cr> | |
nnoremap <leader>fr :FlutterHotReload<cr> | |
nnoremap <leader>fR :FlutterHotRestart<cr> | |
" Some servers have issues with backup files, see #649 | |
set nobackup | |
set nowritebackup | |
" Better display for messages | |
set cmdheight=2 | |
" Smaller updatetime for CursorHold & CursorHoldI | |
set updatetime=300 | |
" don't give |ins-completion-menu| messages. | |
set shortmess+=c | |
" always show signcolumns | |
set signcolumn=yes | |
" Use tab for trigger completion with characters ahead and navigate. | |
" Use command ':verbose imap <tab>' to make sure tab is not mapped by other plugin. | |
inoremap <silent><expr> <TAB> | |
\ pumvisible() ? "\<C-n>" : | |
\ <SID>check_back_space() ? "\<TAB>" : | |
\ coc#refresh() | |
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" | |
function! s:check_back_space() abort | |
let col = col('.') - 1 | |
return !col || getline('.')[col - 1] =~# '\s' | |
endfunction | |
" Use <c-space> to trigger completion. | |
inoremap <silent><expr> <c-space> coc#refresh() | |
" Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position. | |
" Coc only does snippet and additional edit on confirm. | |
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" | |
" Use `[c` and `]c` to navigate diagnostics | |
nmap <silent> [c <Plug>(coc-diagnostic-prev) | |
nmap <silent> ]c <Plug>(coc-diagnostic-next) | |
" Remap keys for gotos | |
nmap <silent> gd <Plug>(coc-definition) | |
nmap <silent> gy <Plug>(coc-type-definition) | |
nmap <silent> gi <Plug>(coc-implementation) | |
nmap <silent> gr <Plug>(coc-references) | |
" Use K to show documentation in preview window | |
nnoremap <silent> K :call <SID>show_documentation()<CR> | |
function! s:show_documentation() | |
if (index(['vim','help'], &filetype) >= 0) | |
execute 'h '.expand('<cword>') | |
else | |
call CocAction('doHover') | |
endif | |
endfunction | |
" Highlight symbol under cursor on CursorHold | |
autocmd CursorHold * silent call CocActionAsync('highlight') | |
" Remap for rename current word | |
nmap <leader>rn <Plug>(coc-rename) | |
" Remap for format selected region | |
xmap <leader>f <Plug>(coc-format-selected) | |
nmap <leader>f <Plug>(coc-format-selected) | |
augroup mygroup | |
autocmd! | |
" Setup formatexpr specified filetype(s). | |
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') | |
" Update signature help on jump placeholder | |
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') | |
augroup end | |
" Remap for do codeAction of selected region, ex: `<leader>aap` for current paragraph | |
xmap <leader>a <Plug>(coc-codeaction-selected) | |
nmap <leader>a <Plug>(coc-codeaction-selected) | |
" Remap for do codeAction of current line | |
nmap <leader>ac <Plug>(coc-codeaction) | |
" Fix autofix problem of current line | |
nmap <leader>qf <Plug>(coc-fix-current) | |
" Use `:Format` to format current buffer | |
command! -nargs=0 Format :call CocAction('format') | |
" Use `:Fold` to fold current buffer | |
command! -nargs=? Fold :call CocAction('fold', <f-args>) | |
" Add diagnostic info for https://github.com/itchyny/lightline.vim | |
let g:lightline = { | |
\ 'colorscheme': 'wombat', | |
\ 'active': { | |
\ 'left': [ [ 'mode', 'paste' ], | |
\ [ 'cocstatus', 'readonly', 'filename', 'modified' ] ] | |
\ }, | |
\ 'component_function': { | |
\ 'cocstatus': 'coc#status' | |
\ }, | |
\ } | |
" Show all diagnostics | |
nnoremap <silent> <space>a :<C-u>CocList diagnostics<cr> | |
" Manage extensions | |
nnoremap <silent> <space>e :<C-u>CocList extensions<cr> | |
" Show commands | |
nnoremap <silent> <space>c :<C-u>CocList commands<cr> | |
" Find symbol of current document | |
nnoremap <silent> <space>o :<C-u>CocList outline<cr> | |
" Search workspace symbols | |
nnoremap <silent> <space>s :<C-u>CocList -I symbols<cr> | |
" Do default action for next item. | |
nnoremap <silent> <space>j :<C-u>CocNext<CR> | |
" Do default action for previous item. | |
nnoremap <silent> <space>k :<C-u>CocPrev<CR> | |
" Resume latest coc list | |
nnoremap <silent> <space>p :<C-u>CocListResume<CR> | |
" Use <C-l> for trigger snippet expand. | |
imap <C-l> <Plug>(coc-snippets-expand) | |
" Use <C-j> for select text for visual placeholder of snippet. | |
vmap <C-j> <Plug>(coc-snippets-select) | |
" dart options | |
let dart_html_in_string=v:true | |
let dart_style_guide = 2 | |
let dart_format_on_save = 1 | |
" LanguageClient-neovim | |
" let g:lsc_auto_map = v:true | |
" let g:lsc_server_commands = {'dart': 'dart_language_server'} | |
" let g:lsc_auto_map = { | |
" \ 'GoToDefinition': '<C-]>', | |
" \ 'GoToDefinitionSplit': ['<C-W>]', '<C-W><C-]>'], | |
" \ 'FindReferences': 'gr', | |
" \ 'NextReference': '<C-9>', | |
" \ 'PreviousReference': '<C-0>', | |
" \ 'FindImplementations': 'gI', | |
" \ 'FindCodeActions': 'ga', | |
" \ 'Rename': 'gR', | |
" \ 'ShowHover': v:true, | |
" \ 'DocumentSymbol': 'go', | |
" \ 'WorkspaceSymbol': 'gS', | |
" \ 'SignatureHelp': 'gm', | |
" \ 'Completion': 'completefunc', | |
" \} | |
function SetLSPShortcuts() | |
nnoremap <leader>ld :call LanguageClient#textDocument_definition()<CR> | |
nnoremap <leader>lr :call LanguageClient#textDocument_rename()<CR> | |
nnoremap <leader>lf :call LanguageClient#textDocument_formatting()<CR> | |
nnoremap <leader>lt :call LanguageClient#textDocument_typeDefinition()<CR> | |
nnoremap <leader>lx :call LanguageClient#textDocument_references()<CR> | |
nnoremap <leader>la :call LanguageClient_workspace_applyEdit()<CR> | |
nnoremap <leader>lc :call LanguageClient#textDocument_completion()<CR> | |
nnoremap <leader>lh :call LanguageClient#textDocument_hover()<CR> | |
nnoremap <leader>ls :call LanguageClient_textDocument_documentSymbol()<CR> | |
nnoremap <leader>lm :call LanguageClient_contextMenu()<CR> | |
endfunction() | |
augroup LSP | |
autocmd! | |
autocmd FileType cpp,c call SetLSPShortcuts() | |
augroup END | |
" deoplete | |
" call deoplete#custom#source('LanguageClient', | |
" \ 'min_pattern_length', | |
" \ 1) | |
" html | |
" for html files, 2 spaces | |
autocmd Filetype html setlocal ts=2 sw=2 expandtab | |
" javascript | |
let g:javascript_enable_domhtmlcss = 1 | |
" vim-javascript | |
augroup vimrc-javascript | |
autocmd! | |
autocmd FileType javascript setl tabstop=4|setl shiftwidth=4|setl expandtab softtabstop=4 | |
augroup END | |
" php | |
" python | |
" vim-python | |
augroup vimrc-python | |
autocmd! | |
autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=8 colorcolumn=79 | |
\ formatoptions+=croq softtabstop=4 | |
\ cinwords=if,elif,else,for,while,try,except,finally,def,class,with | |
augroup END | |
" jedi-vim | |
let g:jedi#popup_on_dot = 0 | |
let g:jedi#goto_assignments_command = "<leader>g" | |
let g:jedi#goto_definitions_command = "<leader>d" | |
let g:jedi#documentation_command = "K" | |
let g:jedi#usages_command = "<leader>n" | |
let g:jedi#rename_command = "<leader>r" | |
let g:jedi#show_call_signatures = "0" | |
let g:jedi#completions_command = "<C-N>" | |
let g:jedi#smart_auto_mappings = 0 | |
" ale | |
:call extend(g:ale_linters, { | |
\'python': ['flake8'], }) | |
" vim-airline | |
let g:airline#extensions#virtualenv#enabled = 1 | |
" Syntax highlight | |
" Default highlight is better than polyglot | |
let g:polyglot_disabled = ['python'] | |
let python_highlight_all = 1 | |
" CtrlP Settings | |
let g:ctrlp_map = '<c-p>' | |
let g:ctrlp_cmd = 'CtrlP' | |
let g:ctrlp_working_path_mode = 'ra' | |
if exists("g:ctrlp_user_command") | |
unlet g:ctrlp_user_command | |
endif | |
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.idea/*,*/.DS_Store,*/vendor,*/tmp/*,*.so,*.swp,*.zip | |
" Ignore custom files/directory | |
let g:ctrlp_custom_ignore = { | |
\ 'dir': '\.git$\|\.hg$\|\.svn$\|bower_components$\|dist$\|node_modules$\|project_files$\|android$\|ios$\|build$', | |
\ 'file': '\.exe$\|\.so$\|\.dll$\|\.pyc$' } | |
" Use a custom file listing command | |
" let g:ctrlp_user_command = 'find %s -type f' | |
" Ignore files in .gitignore | |
" let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files -co --exclude-standard'] | |
"***************************************************************************** | |
"***************************************************************************** | |
" Include user's local vim config | |
if filereadable(expand("~/.config/nvim/local_init.vim")) | |
source ~/.config/nvim/local_init.vim | |
endif | |
"***************************************************************************** | |
" Convenience variables | |
"***************************************************************************** | |
" vim-airline | |
if !exists('g:airline_symbols') | |
let g:airline_symbols = {} | |
endif | |
if !exists('g:airline_powerline_fonts') | |
let g:airline#extensions#tabline#left_sep = ' ' | |
let g:airline#extensions#tabline#left_alt_sep = '|' | |
let g:airline_left_sep = '▶' | |
let g:airline_left_alt_sep = '»' | |
let g:airline_right_sep = '◀' | |
let g:airline_right_alt_sep = '«' | |
let g:airline#extensions#branch#prefix = '⤴' "➔, ➥, ⎇ | |
let g:airline#extensions#readonly#symbol = '⊘' | |
let g:airline#extensions#linecolumn#prefix = '¶' | |
let g:airline#extensions#paste#symbol = 'ρ' | |
let g:airline_symbols.linenr = '␊' | |
let g:airline_symbols.branch = '⎇' | |
let g:airline_symbols.paste = 'ρ' | |
let g:airline_symbols.paste = 'Þ' | |
let g:airline_symbols.paste = '∥' | |
let g:airline_symbols.whitespace = 'Ξ' | |
else | |
let g:airline#extensions#tabline#left_sep = '' | |
let g:airline#extensions#tabline#left_alt_sep = '' | |
" powerline symbols | |
let g:airline_left_sep = '' | |
let g:airline_left_alt_sep = '' | |
let g:airline_right_sep = '' | |
let g:airline_right_alt_sep = '' | |
let g:airline_symbols.branch = '' | |
let g:airline_symbols.readonly = '' | |
let g:airline_symbols.linenr = '' | |
endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment