Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "*****************************************************************************
- "" Vim-PLug core
- "*****************************************************************************
- let vimplug_exists=expand('~/.vim/autoload/plug.vim')
- let g:vim_bootstrap_langs = "go,html,javascript,lua,php,python,rust"
- let g:vim_bootstrap_editor = "vim" " 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('~/.vim/plugged'))
- "*****************************************************************************
- "" Plug install packages
- "*****************************************************************************
- Plug 'scrooloose/nerdtree'
- Plug 'jistr/vim-nerdtree-tabs'
- 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 'ryanoasis/vim-devicons'
- 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}
- "" Vim-Session
- Plug 'xolox/vim-misc'
- Plug 'xolox/vim-session'
- "" Snippets
- Plug 'SirVer/ultisnips'
- Plug 'honza/vim-snippets'
- "" Color
- Plug 'challenger-deep-theme/vim'
- "*****************************************************************************
- "" Custom bundles
- "*****************************************************************************
- " go
- "" Go Lang Bundle
- Plug 'fatih/vim-go', {'do': ':GoInstallBinaries'}
- " 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'
- " lua
- "" Lua Bundle
- Plug 'xolox/vim-lua-ftplugin'
- Plug 'xolox/vim-lua-inspect'
- " php
- "" PHP Bundle
- Plug 'arnaud-lb/vim-php-namespace'
- " python
- "" Python Bundle
- Plug 'davidhalter/jedi-vim'
- Plug 'raimon49/requirements.txt.vim', {'for': 'requirements'}
- " rust
- " Vim racer
- Plug 'racer-rust/vim-racer'
- " Rust.vim
- Plug 'rust-lang/rust.vim'
- " vuejs
- Plug 'posva/vim-vue'
- Plug 'leafOfTree/vim-vue-plugin'
- "*****************************************************************************
- "*****************************************************************************
- "" Include user's extra bundle
- if filereadable(expand("~/.vimrc.local.bundles"))
- source ~/.vimrc.local.bundles
- endif
- call plug#end()
- " Required:
- filetype plugin indent on
- "*****************************************************************************
- "" Basic Setup
- "*****************************************************************************"
- "" Encoding
- set encoding=utf-8
- "set fileencoding=utf-8
- set fileencodings=utf-8
- set ttyfast
- set nomodeline
- "" 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=','
- "" Enable hidden buffers
- set hidden
- "" Searching
- set hlsearch
- set incsearch
- set ignorecase
- set smartcase
- set fileformats=unix,dos,mac
- if exists('$SHELL')
- set shell=$SHELL
- else
- set shell=/bin/sh
- endif
- " session management
- let g:session_directory = "~/.vim/session"
- let g:session_autoload = "no"
- let g:session_autosave = "no"
- let g:session_command_aliases = 1
- "*****************************************************************************
- "" Visual Settings
- "*****************************************************************************
- syntax on
- set ruler
- set number
- let no_buffers_menu=1
- silent! colorscheme challenger_deep
- if has('nvim') || has('termguicolors')
- set termguicolors
- endif
- set mousemodel=popup
- set t_Co=256
- set guioptions=egmrti
- "set guifont=FantasqueSansMono\ Nerd\ Font\ 10
- set guifont=Monospace\ 10
- if has("gui_running")
- if has("gui_mac") || has("gui_macvim")
- set guifont=Menlo:h10
- 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
- if $COLORTERM == 'gnome-terminal'
- set term=gnome-256color
- else
- if $TERM == 'xterm'
- set term=xterm-256color
- endif
- endif
- endif
- if &term =~ '256color'
- set t_ut=
- 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 = 'onedark' "similar to schemecolor hybrid, dracula
- 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
- let g:airline#extensions#tabline#formatter = 'unique_tail'
- "*****************************************************************************
- "" 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
- "" 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 g:NERDTreeMapOpenInTabSilent = '<RightMouse>'
- let g:NERDTreeWinSize = 50
- set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.pyc,*.db,*.sqlite
- nnoremap <silent> <F2> :NERDTreeFind<CR>
- nnoremap <silent> <F3> :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'
- " 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
- "*****************************************************************************
- "" Mappings
- "*****************************************************************************
- "" Split
- noremap <Leader>h :<C-u>split<CR>
- noremap <Leader>v :<C-u>vsplit<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="<tab>"
- let g:UltiSnipsJumpForwardTrigger="<tab>"
- let g:UltiSnipsJumpBackwardTrigger="<c-b>"
- let g:UltiSnipsEditSplit="vertical"
- " ale
- let g:ale_linters = {}
- " Tagbar
- nmap <silent> <F4> :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
- "" 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>
- "" 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
- "*****************************************************************************
- " 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
- 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'], })
- " html
- " for html files, 2 spaces
- autocmd Filetype html setlocal ts=2 sw=2 expandtab
- " Native autocomplete
- filetype plugin on
- set omnifunc=syntaxcomplete#Complete
- " 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
- " lua
- " 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-Space>"
- 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
- " rust
- " Vim racer
- au FileType rust nmap gd <Plug>(rust-def)
- au FileType rust nmap gs <Plug>(rust-def-split)
- au FileType rust nmap gx <Plug>(rust-def-vertical)
- au FileType rust nmap <leader>gd <Plug>(rust-doc)
- " vuejs
- " vim vue
- let g:vue_disable_pre_processors=1
- " vim vue plugin
- let g:vim_vue_plugin_load_full_syntax = 1
- "*****************************************************************************
- "*****************************************************************************
- "" Include user's local vim config
- if filereadable(expand("~/.vimrc.local"))
- source ~/.vimrc.local
- endif
- "*****************************************************************************
- "" Convenience variables
- "*****************************************************************************
- "*****************************************************************************
- "" 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement