|
|
|
@ -9,62 +9,71 @@ let python_highlight_all=1
|
|
|
|
|
|
|
|
|
|
" Plug updates itself automatically
|
|
|
|
|
if empty(glob('~/.config/nvim/autoload/plug.vim'))
|
|
|
|
|
silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs
|
|
|
|
|
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
|
|
|
|
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
|
|
|
|
|
silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs
|
|
|
|
|
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
|
|
|
|
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
if executable('rg')
|
|
|
|
|
set grepprg=rg\ --vimgrep\ --no-heading
|
|
|
|
|
set grepprg=rg\ --vimgrep\ --hidden\ --no-heading
|
|
|
|
|
set grepformat=%f:%l:%c:%m,%f:%l:%m
|
|
|
|
|
elseif executable('ag')
|
|
|
|
|
set grepprg=ag\ --nogroup\ --nocolor
|
|
|
|
|
set grepprg=ag\ --nogroup\ --nocolor
|
|
|
|
|
endif
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Plugins {{{
|
|
|
|
|
call plug#begin('~/.config/nvim/plugged')
|
|
|
|
|
Plug 'junegunn/vim-plug'
|
|
|
|
|
Plug 'w0rp/ale'
|
|
|
|
|
Plug 'sbdchd/neoformat'
|
|
|
|
|
" Languages
|
|
|
|
|
Plug 'lervag/vimtex', { 'for': 'tex' }
|
|
|
|
|
Plug 'plasticboy/vim-markdown', { 'for': 'markdown' }
|
|
|
|
|
Plug 'supercollider/scvim'
|
|
|
|
|
" Formatting
|
|
|
|
|
Plug 'w0rp/ale'
|
|
|
|
|
Plug 'sbdchd/neoformat', {'on': 'Neoformat'}
|
|
|
|
|
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
|
|
|
|
|
Plug 'Shougo/neco-syntax'
|
|
|
|
|
Plug 'Shougo/neco-vim'
|
|
|
|
|
" Navigation
|
|
|
|
|
Plug 'scrooloose/nerdtree', { 'on': ['NERDTreeFind', 'NERDTreeToggle'] }
|
|
|
|
|
Plug 'christoomey/vim-tmux-navigator'
|
|
|
|
|
Plug '/usr/bin/fzf'
|
|
|
|
|
Plug 'junegunn/fzf.vim'
|
|
|
|
|
" Modes
|
|
|
|
|
Plug 'junegunn/goyo.vim', { 'on': 'Goyo' }
|
|
|
|
|
Plug 'reedes/vim-pencil', { 'for': ['tex', 'markdown', 'text'] }
|
|
|
|
|
Plug 'chrisbra/vim-diff-enhanced'
|
|
|
|
|
" UI
|
|
|
|
|
Plug 'NLKNguyen/papercolor-theme'
|
|
|
|
|
Plug 'zefei/vim-wintabs'
|
|
|
|
|
Plug 'jiangmiao/auto-pairs'
|
|
|
|
|
Plug 'chrisbra/vim-diff-enhanced'
|
|
|
|
|
" Python
|
|
|
|
|
Plug 'numirias/semshi', {'do': ':UpdateRemotePlugins'}
|
|
|
|
|
Plug 'hkupty/iron.nvim', { 'do': ':UpdateRemotePlugins' }
|
|
|
|
|
Plug 'roxma/nvim-yarp'
|
|
|
|
|
Plug 'ncm2/ncm2'
|
|
|
|
|
Plug 'ncm2/ncm2-jedi'
|
|
|
|
|
Plug 'ncm2/ncm2-match-highlight'
|
|
|
|
|
Plug 'zchee/deoplete-jedi'
|
|
|
|
|
Plug 'autozimu/LanguageClient-neovim', {
|
|
|
|
|
\ 'branch': 'next',
|
|
|
|
|
\ 'branch': 'next',
|
|
|
|
|
\ 'do': 'bash install.sh',
|
|
|
|
|
\ }
|
|
|
|
|
|
|
|
|
|
call plug#end()
|
|
|
|
|
let g:plug_window = 'rightbelow topleft new'
|
|
|
|
|
|
|
|
|
|
nnoremap <leader>pi :PlugInstall<CR>
|
|
|
|
|
nnoremap <leader>pu :PlugUpdate<CR>
|
|
|
|
|
nnoremap <leader>pU :PlugUpgrade<CR>
|
|
|
|
|
nnoremap <leader>pc :PlugClean<CR>
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Options {{{
|
|
|
|
|
" Search down int subfolders
|
|
|
|
|
" Search down into subfolders
|
|
|
|
|
" Provides tab-completion for all file-related tasks
|
|
|
|
|
" - :b lets you autocomplete any open buffer
|
|
|
|
|
set path+=**
|
|
|
|
|
|
|
|
|
|
set binary
|
|
|
|
|
set clipboard^=unnamedplus " system clipboard (requires +clipboard)
|
|
|
|
|
set encoding=utf-8 " The encoding displayed.
|
|
|
|
|
set fileencoding=utf-8 " The encoding written to file.
|
|
|
|
|
let mapleader="\<SPACE>"
|
|
|
|
|
let localleader=","
|
|
|
|
|
set shell=/bin/zsh " Setting shell to zsh
|
|
|
|
|
set number " Line numbers on
|
|
|
|
|
set showmode " Always show mode
|
|
|
|
@ -104,8 +113,9 @@ set foldenable " Fold by default
|
|
|
|
|
set foldlevelstart=10
|
|
|
|
|
set foldnestmax=10 " Deepest fold is 10 levels
|
|
|
|
|
set foldmethod=marker " Markers are used to specify folds.
|
|
|
|
|
set completeopt=noinsert,menuone,noselect
|
|
|
|
|
set completeopt-=preview " Don't show preview scratch buffers
|
|
|
|
|
set completeopt=noinsert,menuone,preview,noselect
|
|
|
|
|
"set completefunc=LanguageClient#complete
|
|
|
|
|
set formatexpr=LanguageClient#textDocument_rangeFormatting_sync()
|
|
|
|
|
set noexpandtab " Do not turn tabs into spaces
|
|
|
|
|
set tabstop=4 " Number of spaces a <Tab> equals
|
|
|
|
|
set softtabstop=4
|
|
|
|
@ -131,8 +141,7 @@ set complete+=]
|
|
|
|
|
set completeopt-=preview
|
|
|
|
|
set completeopt+=noinsert,longest,noselect,menuone
|
|
|
|
|
set formatoptions+=n
|
|
|
|
|
let formatlistpat='^\s*\(\d\+[\]:.)}\t ]\|[*-][\t ]\)\s*'
|
|
|
|
|
set matchpairs=(:),{:},[:],<:>
|
|
|
|
|
"set matchpairs=(:),{:},[:],<:>
|
|
|
|
|
|
|
|
|
|
" Display all matching files when we tab complete
|
|
|
|
|
set wildmenu
|
|
|
|
@ -161,31 +170,9 @@ set wildmode=longest:list,full
|
|
|
|
|
|
|
|
|
|
match ErrorMsg '^\(<\|=\|>\)\{7\}\([^=].\+\)\?$'
|
|
|
|
|
|
|
|
|
|
" use ripgrep as grepprg
|
|
|
|
|
if executable('rg')
|
|
|
|
|
set grepprg=rg\ --vimgrep\ --hidden\ --no-ignore-vcs
|
|
|
|
|
set grepformat=%f:%l:%c:%m,%f:%l:%m
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
"highlight MatchParen cterm=bold ctermbg=none ctermfg=9
|
|
|
|
|
"highlight TermCursor ctermfg=green guifg=green
|
|
|
|
|
"highlight DiffAdd ctermbg=2
|
|
|
|
|
"highlight DiffDelete ctermbg=1
|
|
|
|
|
"highlight DiffChange ctermbg=238
|
|
|
|
|
"highlight DiffChange ctermbg=242
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Papercolor {{{
|
|
|
|
|
set background=dark
|
|
|
|
|
let g:PaperColor_Theme_Options = {
|
|
|
|
|
\ 'theme': {
|
|
|
|
|
\ 'default.dark': {
|
|
|
|
|
\ 'transparent_background': 1,
|
|
|
|
|
\ 'allow_italic': 1
|
|
|
|
|
\ }
|
|
|
|
|
\ }
|
|
|
|
|
\ }
|
|
|
|
|
colorscheme PaperColor
|
|
|
|
|
let mapleader="\<SPACE>"
|
|
|
|
|
let localleader=","
|
|
|
|
|
let formatlistpat='^\s*\(\d\+[\]:.)}\t ]\|[*-][\t ]\)\s*'
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Statusline {{{
|
|
|
|
@ -220,7 +207,7 @@ function! LinterStatus() abort
|
|
|
|
|
\)
|
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
|
|
set statusline+=%#SpecialKey#
|
|
|
|
|
set statusline+=%#Keyword#
|
|
|
|
|
set statusline+=%{StatuslineGit()}
|
|
|
|
|
set statusline+=%#CursorLineNr#
|
|
|
|
|
set statusline+=\ %{LinterStatus()}
|
|
|
|
@ -238,12 +225,13 @@ set statusline+=\ %{winnr()}
|
|
|
|
|
if !exists("autocommands_loaded") && has("autocmd")
|
|
|
|
|
let autocommands_loaded = 1
|
|
|
|
|
|
|
|
|
|
autocmd BufWritePre * :%s/\s\+$//e " Auto remove all trailing whitespace on :w
|
|
|
|
|
":au FocusLost * :wa " Autosave files when focus is lost
|
|
|
|
|
" Auto remove all trailing whitespace on :w
|
|
|
|
|
autocmd BufWritePre * :%s/\s\+$//e
|
|
|
|
|
|
|
|
|
|
" Disables automatic commenting on newline
|
|
|
|
|
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
|
|
|
|
|
|
|
|
|
|
" Python file template
|
|
|
|
|
autocmd BufNewFile *.py 0r ~/.config/nvim/templates/py.skeleton
|
|
|
|
|
|
|
|
|
|
aug terminal_stuff
|
|
|
|
@ -255,7 +243,7 @@ if !exists("autocommands_loaded") && has("autocmd")
|
|
|
|
|
aug END
|
|
|
|
|
|
|
|
|
|
autocmd FileType fzf set noshowmode noruler
|
|
|
|
|
\| autocmd BufLeave <buffer> set showmode ruler
|
|
|
|
|
\| autocmd BufLeave <buffer> set showmode ruler
|
|
|
|
|
|
|
|
|
|
" Automatic syntax highlighting for files
|
|
|
|
|
aug set_file_types
|
|
|
|
@ -297,76 +285,6 @@ let g:netrw_list_hide.=',\(^\|\s\s\)\zs\.\S\+'
|
|
|
|
|
let g:netrw_winsize=25
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" {{{ Ale
|
|
|
|
|
"let g:ale_set_highlights = 0
|
|
|
|
|
"let g:ale_echo_msg_error_str = 'E'
|
|
|
|
|
"let g:ale_echo_msg_warning_str = 'W'
|
|
|
|
|
let g:ale_echo_msg_format = '[%linter%] %s% (code)% [%severity%]'
|
|
|
|
|
let g:ale_statusline_format = ['⨉ %d', '⚠ %d', '⬥ ok']
|
|
|
|
|
let g:ale_lint_delay = 500 " relint max once per [amount] milliseconds
|
|
|
|
|
highlight ALEError cterm=undercurl ctermfg=196
|
|
|
|
|
highlight ALEInfo cterm=undercurl ctermfg=14
|
|
|
|
|
hi ALEErrorSign ctermfg=red ctermbg=none
|
|
|
|
|
hi ALEWarningSign ctermfg=yellow ctermbg=none
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Iron {{{
|
|
|
|
|
nnoremap <leader>ir :IronRepl<CR>
|
|
|
|
|
|
|
|
|
|
let g:iron_repl_open_cmd = 'vsplit'
|
|
|
|
|
let g:iron_map_defaults = 0
|
|
|
|
|
|
|
|
|
|
nmap + <S-v><Plug>(iron-send-motion)
|
|
|
|
|
vmap + <Plug>(iron-send-motion)
|
|
|
|
|
nmap rr <Plug>(iron-repeat-cmd)
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" LSP {{{
|
|
|
|
|
let g:LanguageClient_serverCommands = {
|
|
|
|
|
\ 'python': ['/usr/bin/pyls'],
|
|
|
|
|
\ }
|
|
|
|
|
call ncm2#override_source('LanguageClient_python', {'enable': 0})
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Wintabs {{{
|
|
|
|
|
let g:wintabs_ui_active_higroup = 'TabLineSel'
|
|
|
|
|
let g:wintabs_switchbuf='useopen,usetab'
|
|
|
|
|
let g:wintabs_display='statusline'
|
|
|
|
|
|
|
|
|
|
let intertabSpace= ''
|
|
|
|
|
let activeVimTabChar = '┃ '
|
|
|
|
|
let g:wintabs_ui_sep_leftmost=activeVimTabChar
|
|
|
|
|
let g:wintabs_ui_sep_inbetween=' '
|
|
|
|
|
let g:wintabs_ui_sep_rightmost=' '
|
|
|
|
|
let g:wintabs_ui_active_vimtab_left=activeVimTabChar
|
|
|
|
|
let g:wintabs_ui_active_vimtab_right=' '
|
|
|
|
|
let g:wintabs_ui_active_left=activeVimTabChar
|
|
|
|
|
let g:wintabs_ui_active_right=' '
|
|
|
|
|
let g:wintabs_ui_buffer_name_format='%t'
|
|
|
|
|
let g:wintabs_ui_vimtab_name_format='%n'
|
|
|
|
|
let g:wintabs_ui_arrow_left='«'
|
|
|
|
|
let g:wintabs_ui_arrow_right='»'
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" NerdTree {{{
|
|
|
|
|
autocmd StdinReadPre * let s:std_in=1
|
|
|
|
|
let NERDTreeIgnore=['\.rbc$', '\~$', '\.pyc$', '\.pyo$', '\.db$', '\.sqlite$', '.o$', 'bower_components', 'node_modules', '__pycache__']
|
|
|
|
|
let g:NERDTreeSortOrder=['^__\.py$', '\/$', '*', '\.swp$', '\.bak$', '\~$']
|
|
|
|
|
let NERDTreeNaturalSort = 1
|
|
|
|
|
let NERDTreeShowHidden=1
|
|
|
|
|
let NERDTreeWinPos=1
|
|
|
|
|
let NERDTreeRespectWildIgnore = 1
|
|
|
|
|
let NERDTreeMinimalUI=1
|
|
|
|
|
let NERDTreeDirArrows = 1
|
|
|
|
|
let NERDTreeCascadeSingleChildDir=1
|
|
|
|
|
let NERDTreeCascadeOpenSingleChildDir=1
|
|
|
|
|
let NERDTreeQuitOnOpen = 1
|
|
|
|
|
let NERDTreeHijackNetrw = 0
|
|
|
|
|
let NERDTreeAutoCenter = 1
|
|
|
|
|
let g:NERDTreeDirArrowExpandable = '↠'
|
|
|
|
|
let g:NERDTreeDirArrowCollapsible = '↡'
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Ranger {{{
|
|
|
|
|
function! <SID>ranger()
|
|
|
|
|
let l:temp = tempname()
|
|
|
|
@ -392,6 +310,67 @@ function! <SID>ranger()
|
|
|
|
|
|
|
|
|
|
redraw!
|
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
|
|
nnoremap <leader>R :call <SID>ranger()<CR>
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" {{{ Ale
|
|
|
|
|
let g:ale_linters_explicit = 1
|
|
|
|
|
let g:ale_echo_msg_format = '[%linter%] %s% (code)% [%severity%]'
|
|
|
|
|
let g:ale_lint_delay = 500 " relint max once per [amount] milliseconds
|
|
|
|
|
let g:ale_pattern_options = {
|
|
|
|
|
\ '\.min\.js$': {'ale_linters': [], 'ale_fixers': []},
|
|
|
|
|
\ '\.min\.css$': {'ale_linters': [], 'ale_fixers': []},
|
|
|
|
|
\}
|
|
|
|
|
|
|
|
|
|
highlight ALEError cterm=undercurl ctermfg=196
|
|
|
|
|
highlight ALEInfo cterm=undercurl ctermfg=14
|
|
|
|
|
hi ALEErrorSign ctermfg=red ctermbg=none
|
|
|
|
|
hi ALEWarningSign ctermfg=yellow ctermbg=none
|
|
|
|
|
|
|
|
|
|
nmap <silent> <F10> <Plug>(ale_previous_wrap)
|
|
|
|
|
nmap <silent> <F11> <Plug>(ale_next_wrap)
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Deoplete {{{
|
|
|
|
|
let g:deoplete#enable_at_startup = 1
|
|
|
|
|
"set completeopt-=preview
|
|
|
|
|
call deoplete#custom#option('max_list', 100000)
|
|
|
|
|
call deoplete#custom#option('min_pattern_length', 2)
|
|
|
|
|
call deoplete#custom#source('LanguageClient',
|
|
|
|
|
\ 'min_pattern_length',
|
|
|
|
|
\ 2)
|
|
|
|
|
if !exists('g:deoplete#omni#input_patterns')
|
|
|
|
|
let g:deoplete#omni#input_patterns = {}
|
|
|
|
|
endif
|
|
|
|
|
let g:deoplete#sources#jedi#server_timeout = 120
|
|
|
|
|
let g:deoplete#sources#jedi#show_docstring = 1
|
|
|
|
|
let g:deoplete#enable_ignore_case = 1
|
|
|
|
|
let g:deoplete#enable_smart_case = 1
|
|
|
|
|
let g:context_filetype#same_filetypes = {}
|
|
|
|
|
let g:context_filetype#same_filetypes._ = '_'
|
|
|
|
|
"}}}
|
|
|
|
|
|
|
|
|
|
" NerdTree {{{
|
|
|
|
|
autocmd StdinReadPre * let s:std_in=1
|
|
|
|
|
let NERDTreeIgnore=['\.rbc$', '\~$', '\.pyc$', '\.pyo$', '\.db$', '\.sqlite$', '.o$', 'bower_components', 'node_modules', '__pycache__']
|
|
|
|
|
let g:NERDTreeSortOrder=['^__\.py$', '\/$', '*', '\.swp$', '\.bak$', '\~$']
|
|
|
|
|
let NERDTreeNaturalSort = 1
|
|
|
|
|
let NERDTreeShowHidden=1
|
|
|
|
|
let NERDTreeWinPos=1
|
|
|
|
|
let NERDTreeRespectWildIgnore = 1
|
|
|
|
|
let NERDTreeMinimalUI=1
|
|
|
|
|
let NERDTreeDirArrows = 1
|
|
|
|
|
let NERDTreeCascadeSingleChildDir=1
|
|
|
|
|
let NERDTreeCascadeOpenSingleChildDir=1
|
|
|
|
|
let NERDTreeQuitOnOpen = 1
|
|
|
|
|
let NERDTreeHijackNetrw = 0
|
|
|
|
|
let NERDTreeAutoCenter = 1
|
|
|
|
|
let g:NERDTreeDirArrowExpandable = '↠'
|
|
|
|
|
let g:NERDTreeDirArrowCollapsible = '↡'
|
|
|
|
|
|
|
|
|
|
nnoremap <silent> <F2> :NERDTreeToggle<CR>
|
|
|
|
|
nnoremap <silent> <F3> :NERDTreeFind<CR>
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Tmux navigator {{{
|
|
|
|
@ -404,97 +383,152 @@ nnoremap <silent> M-Right :TmuxNavigateRight<cr>
|
|
|
|
|
nnoremap <silent> M-Tab :TmuxNavigatePrevious<cr>
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Fzf {{{
|
|
|
|
|
" use bottom positioned 30% height bottom split
|
|
|
|
|
let g:fzf_layout = { 'down': '~30%' }
|
|
|
|
|
let g:fzf_action = {
|
|
|
|
|
\ 'ctrl-t': 'tab split',
|
|
|
|
|
\ 'ctrl-s': 'split',
|
|
|
|
|
\ 'ctrl-v': 'vsplit' }
|
|
|
|
|
let g:fzf_colors =
|
|
|
|
|
\ { 'fg': ['fg', 'Normal'],
|
|
|
|
|
\ 'bg': ['bg', 'Clear'],
|
|
|
|
|
\ 'hl': ['fg', 'String'],
|
|
|
|
|
\ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
|
|
|
|
|
\ 'bg+': ['bg', 'CursorLine', 'CursorColumn'],
|
|
|
|
|
\ 'hl+': ['fg', 'Statement'],
|
|
|
|
|
\ 'info': ['fg', 'PreProc'],
|
|
|
|
|
\ 'prompt': ['fg', 'Conditional'],
|
|
|
|
|
\ 'pointer': ['fg', 'Exception'],
|
|
|
|
|
\ 'marker': ['fg', 'Keyword'],
|
|
|
|
|
\ 'spinner': ['fg', 'Label'],
|
|
|
|
|
\ 'header': ['fg', 'Comment'] }
|
|
|
|
|
|
|
|
|
|
command! -bang -nargs=* Rg
|
|
|
|
|
\ call fzf#vim#grep(
|
|
|
|
|
\ 'rg --column --line-number --hidden --ignore-case --no-heading --color=always '.shellescape(<q-args>), 1,
|
|
|
|
|
\ <bang>0 ? fzf#vim#with_preview({'options': '--delimiter : --nth 4..'}, 'up:60%')
|
|
|
|
|
\ : fzf#vim#with_preview({'options': '--delimiter : --nth 4..'}, 'right:50%:hidden', '?'),
|
|
|
|
|
\ <bang>0)
|
|
|
|
|
|
|
|
|
|
command! -bang -nargs=? -complete=dir Files
|
|
|
|
|
\ call fzf#vim#files(<q-args>, fzf#vim#with_preview(), <bang>0)
|
|
|
|
|
|
|
|
|
|
" only use FZF shortcuts in non diff-mode
|
|
|
|
|
if !&diff
|
|
|
|
|
nnoremap <C-p> :Files<Cr>
|
|
|
|
|
nnoremap <C-g> :Rg<Cr>
|
|
|
|
|
nnoremap <C-h> :History<CR>
|
|
|
|
|
nnoremap <C-b> :Buffers<CR>
|
|
|
|
|
endif
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Goyo {{{
|
|
|
|
|
function! s:goyo_enter()
|
|
|
|
|
let b:quitting = 0
|
|
|
|
|
let b:quitting_bang = 0
|
|
|
|
|
autocmd QuitPre <buffer> let b:quitting = 1
|
|
|
|
|
cabbrev <buffer> q! let b:quitting_bang = 1 <bar> q!
|
|
|
|
|
let b:quitting = 0
|
|
|
|
|
let b:quitting_bang = 0
|
|
|
|
|
autocmd QuitPre <buffer> let b:quitting = 1
|
|
|
|
|
cabbrev <buffer> q! let b:quitting_bang = 1 <bar> q!
|
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
|
|
function! s:goyo_leave()
|
|
|
|
|
" Quit Vim if this is the only remaining buffer
|
|
|
|
|
if b:quitting && len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) == 1
|
|
|
|
|
if b:quitting_bang
|
|
|
|
|
qa!
|
|
|
|
|
else
|
|
|
|
|
qa
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
" Quit Vim if this is the only remaining buffer
|
|
|
|
|
if b:quitting && len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) == 1
|
|
|
|
|
if b:quitting_bang
|
|
|
|
|
qa!
|
|
|
|
|
else
|
|
|
|
|
qa
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
|
|
autocmd! User GoyoEnter call <SID>goyo_enter()
|
|
|
|
|
autocmd! User GoyoLeave call <SID>goyo_leave()
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Fzf {{{
|
|
|
|
|
" use bottom positioned 30% height bottom split
|
|
|
|
|
let g:fzf_layout = { 'down': '~30%' }
|
|
|
|
|
let g:fzf_action = {
|
|
|
|
|
\ 'ctrl-t': 'tab split',
|
|
|
|
|
\ 'ctrl-s': 'split',
|
|
|
|
|
\ 'ctrl-v': 'vsplit' }
|
|
|
|
|
let g:fzf_colors =
|
|
|
|
|
\ { 'fg': ['fg', 'Normal'],
|
|
|
|
|
\ 'bg': ['bg', 'Clear'],
|
|
|
|
|
\ 'hl': ['fg', 'String'],
|
|
|
|
|
\ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
|
|
|
|
|
\ 'bg+': ['bg', 'CursorLine', 'CursorColumn'],
|
|
|
|
|
\ 'hl+': ['fg', 'Statement'],
|
|
|
|
|
\ 'info': ['fg', 'PreProc'],
|
|
|
|
|
\ 'prompt': ['fg', 'Conditional'],
|
|
|
|
|
\ 'pointer': ['fg', 'Exception'],
|
|
|
|
|
\ 'marker': ['fg', 'Keyword'],
|
|
|
|
|
\ 'spinner': ['fg', 'Label'],
|
|
|
|
|
\ 'header': ['fg', 'Comment'] }
|
|
|
|
|
|
|
|
|
|
command! -bang -nargs=* Rg
|
|
|
|
|
\ call fzf#vim#grep(
|
|
|
|
|
\ 'rg --column --line-number --hidden --ignore-case --no-heading --color=always '.shellescape(<q-args>), 1,
|
|
|
|
|
\ <bang>0 ? fzf#vim#with_preview({'options': '--delimiter : --nth 4..'}, 'up:60%')
|
|
|
|
|
\ : fzf#vim#with_preview({'options': '--delimiter : --nth 4..'}, 'right:50%:hidden', '?'),
|
|
|
|
|
\ <bang>0)
|
|
|
|
|
|
|
|
|
|
command! -bang -nargs=? -complete=dir Files
|
|
|
|
|
\ call fzf#vim#files(<q-args>, fzf#vim#with_preview(), <bang>0)
|
|
|
|
|
|
|
|
|
|
" only use FZF shortcuts in non diff-mode
|
|
|
|
|
if !&diff
|
|
|
|
|
nnoremap <C-p> :Files<Cr>
|
|
|
|
|
nnoremap <C-g> :Rg<Cr>
|
|
|
|
|
" Enhanced Diff {{{
|
|
|
|
|
" started In Diff-Mode set diffexpr (plugin not loaded yet)
|
|
|
|
|
if &diff
|
|
|
|
|
let &diffexpr='EnhancedDiff#Diff("git diff", "--diff-algorithm=patience")'
|
|
|
|
|
endif
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
"Mappings {{{
|
|
|
|
|
" Open ranger as a file chooser
|
|
|
|
|
nnoremap <leader>R :call <SID>ranger()<CR>
|
|
|
|
|
" Papercolor {{{
|
|
|
|
|
set background=dark
|
|
|
|
|
let g:PaperColor_Theme_Options = {
|
|
|
|
|
\ 'theme': {
|
|
|
|
|
\ 'default.dark': {
|
|
|
|
|
\ 'transparent_background': 1,
|
|
|
|
|
\ 'allow_italic': 1
|
|
|
|
|
\ }
|
|
|
|
|
\ }
|
|
|
|
|
\ }
|
|
|
|
|
colorscheme PaperColor
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Wintabs {{{
|
|
|
|
|
let g:wintabs_ui_active_higroup = 'TabLineSel'
|
|
|
|
|
let g:wintabs_switchbuf='useopen,usetab'
|
|
|
|
|
let g:wintabs_display='statusline'
|
|
|
|
|
|
|
|
|
|
let intertabSpace= ''
|
|
|
|
|
let activeVimTabChar = '┃ '
|
|
|
|
|
let g:wintabs_ui_sep_leftmost=activeVimTabChar
|
|
|
|
|
let g:wintabs_ui_sep_inbetween=' '
|
|
|
|
|
let g:wintabs_ui_sep_rightmost=' '
|
|
|
|
|
let g:wintabs_ui_active_vimtab_left=activeVimTabChar
|
|
|
|
|
let g:wintabs_ui_active_vimtab_right=' '
|
|
|
|
|
let g:wintabs_ui_active_left=activeVimTabChar
|
|
|
|
|
let g:wintabs_ui_active_right=' '
|
|
|
|
|
let g:wintabs_ui_buffer_name_format='%t'
|
|
|
|
|
let g:wintabs_ui_vimtab_name_format='%n'
|
|
|
|
|
let g:wintabs_ui_arrow_left='«'
|
|
|
|
|
let g:wintabs_ui_arrow_right='»'
|
|
|
|
|
|
|
|
|
|
nnoremap <silent> <C-,> :bnew<CR>
|
|
|
|
|
nnoremap <silent> <M-,> :WintabsClose<CR>
|
|
|
|
|
nnoremap <silent> <C-l> :WintabsNext<CR>
|
|
|
|
|
nnoremap <silent> <C-h> :WintabsPrevious<CR>
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Semshi {{{
|
|
|
|
|
let g:semshi#mark_selected_nodes = 2
|
|
|
|
|
let g:semshi#error_sign = v:false
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Iron {{{
|
|
|
|
|
nnoremap <leader>ir :IronRepl<CR>
|
|
|
|
|
|
|
|
|
|
let g:iron_repl_open_cmd = '10split'
|
|
|
|
|
let g:iron_map_defaults = 0
|
|
|
|
|
|
|
|
|
|
nmap + <S-v><Plug>(iron-send-motion)
|
|
|
|
|
vmap + <Plug>(iron-send-motion)
|
|
|
|
|
nmap rr <Plug>(iron-repeat-cmd)
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" LSP {{{
|
|
|
|
|
let g:LanguageClient_serverCommands = {
|
|
|
|
|
\ 'python': ['/usr/bin/pyls'],
|
|
|
|
|
\ 'cpp': ['clangd'],
|
|
|
|
|
\ 'bash': ['/usr/bin/shellcheck'],
|
|
|
|
|
\ }
|
|
|
|
|
|
|
|
|
|
nnoremap <silent> <F2> :NERDTreeToggle<CR>
|
|
|
|
|
nnoremap <silent> <F3> :NERDTreeFind<CR>
|
|
|
|
|
nnoremap <F5> :call LanguageClient_contextMenu()<CR>
|
|
|
|
|
map <F6> :setlocal spell! spelllang=es<CR>
|
|
|
|
|
map <F7> :setlocal spell! spelllang=en<CR>
|
|
|
|
|
map <F8> :set nospell<CR>
|
|
|
|
|
map <F9> :!w<Enter>:!pdflatex <C-r>%<Enter>
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
nmap <silent> <F10> <Plug>(ale_previous_wrap)
|
|
|
|
|
nmap <silent> <F11> <Plug>(ale_next_wrap)
|
|
|
|
|
"Mappings {{{
|
|
|
|
|
" Spell checking
|
|
|
|
|
nnoremap <F6> :setlocal spell! spelllang=es<CR>
|
|
|
|
|
nnoremap <F7> :setlocal spell! spelllang=en<CR>
|
|
|
|
|
nnoremap <F8> :set nospell<CR>
|
|
|
|
|
nnoremap <F9> :!w<Enter>:!pdflatex <C-r>%<Enter>
|
|
|
|
|
|
|
|
|
|
" Neoformat
|
|
|
|
|
nnoremap <leader>f :Neoformat<CR>
|
|
|
|
|
vnoremap <leader>f :Neoformat<CR>
|
|
|
|
|
|
|
|
|
|
nnoremap <leader>pi :PlugInstall<CR>
|
|
|
|
|
nnoremap <leader>pu :PlugUpdate<CR>
|
|
|
|
|
nnoremap <leader>pU :PlugUpgrade<CR>
|
|
|
|
|
nnoremap <leader>pc :PlugClean<CR>
|
|
|
|
|
|
|
|
|
|
" fzf & rg
|
|
|
|
|
nnoremap <C-p> :Files<Cr>
|
|
|
|
|
nnoremap <C-g> :Rg<Cr>
|
|
|
|
|
nnoremap <C-h> :History<CR>
|
|
|
|
|
nnoremap <C-b> :Buffers<CR>
|
|
|
|
|
|
|
|
|
|
" super quick search and replace
|
|
|
|
|
" Super quick search and replace
|
|
|
|
|
nnoremap <Space>' :'{,'}s/\<<C-r>=expand("<cword>")<CR>\>/
|
|
|
|
|
nnoremap <Space>¿ :%s/\<<C-r>=expand("<cword>")<CR>\>/
|
|
|
|
|
|
|
|
|
@ -510,23 +544,24 @@ nnoremap <silent> <Down> :resize +1<CR>
|
|
|
|
|
inoremap jk <esc>
|
|
|
|
|
cnoremap jk <C-c>
|
|
|
|
|
|
|
|
|
|
" edit and source config file
|
|
|
|
|
" Edit and source config file
|
|
|
|
|
nnoremap <silent> <leader>ev :vsplit $MYVIMRC<CR>
|
|
|
|
|
nnoremap <silent> <leader>sv :source $MYVIMRC<CR>
|
|
|
|
|
|
|
|
|
|
" fast saves
|
|
|
|
|
" Fast saves
|
|
|
|
|
nnoremap <leader>w :w!<CR>
|
|
|
|
|
|
|
|
|
|
" exit quickly
|
|
|
|
|
" Exit quickly
|
|
|
|
|
nnoremap <leader>q :q!<CR>
|
|
|
|
|
|
|
|
|
|
" Splits
|
|
|
|
|
nnoremap <leader>T :terminal<CR>
|
|
|
|
|
nnoremap <leader>s :split<CR>
|
|
|
|
|
nnoremap <leader>v :vsplit<CR>
|
|
|
|
|
nnoremap <leader>nv :vnew<CR>
|
|
|
|
|
nnoremap <leader>ns :new<CR>
|
|
|
|
|
|
|
|
|
|
" ensure that ctrl+u in insert mode can be reversed
|
|
|
|
|
" Ensure that ctrl+u in insert mode can be reversed
|
|
|
|
|
" http://vim.wikia.com/wiki/Recover_from_accidental_Ctrl-U
|
|
|
|
|
inoremap <c-u> <c-g>u<c-u>
|
|
|
|
|
inoremap <c-w> <c-g>u<c-w>
|
|
|
|
@ -537,7 +572,7 @@ nnoremap <silent> <CR> i<CR><ESC>
|
|
|
|
|
" Fix indentation
|
|
|
|
|
nnoremap <leader>i mzgg=G`z<CR>
|
|
|
|
|
|
|
|
|
|
" deedee
|
|
|
|
|
" Deedee
|
|
|
|
|
nnoremap - dd<CR>p
|
|
|
|
|
inoremap <c-d> <esc>ddi
|
|
|
|
|
|
|
|
|
@ -574,6 +609,7 @@ vnoremap <S-Tab> <gv
|
|
|
|
|
nnoremap <Tab> v>gv|
|
|
|
|
|
nnoremap <S-Tab> v<gv
|
|
|
|
|
|
|
|
|
|
" Line movements
|
|
|
|
|
noremap <silent> <Home> g<Home>
|
|
|
|
|
noremap <silent> <End> g<End>
|
|
|
|
|
inoremap <silent> <Home> <C-o>g<Home>
|
|
|
|
@ -591,12 +627,6 @@ nnoremap <silent> N :norm! Nzz<CR>
|
|
|
|
|
vnoremap <silent> n :norm! nzz<CR>
|
|
|
|
|
vnoremap <silent> N :norm! Nzz<CR>
|
|
|
|
|
|
|
|
|
|
" Tabs
|
|
|
|
|
nnoremap <silent> <C-,> :bnew<CR>
|
|
|
|
|
nnoremap <silent> <M-,> :WintabsClose<CR>
|
|
|
|
|
nnoremap <silent> <C-l> :WintabsNext<CR>
|
|
|
|
|
nnoremap <silent> <C-h> :WintabsPrevious<CR>
|
|
|
|
|
|
|
|
|
|
" Alt to switch windows
|
|
|
|
|
nnoremap <M-j> <C-W><C-J>
|
|
|
|
|
nnoremap <M-k> <C-W><C-K>
|
|
|
|
@ -638,19 +668,12 @@ tnoremap <M-l> <C-\><C-n><C-w>l
|
|
|
|
|
:command! QA qa
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Enhanced Diff {{{
|
|
|
|
|
" started In Diff-Mode set diffexpr (plugin not loaded yet)
|
|
|
|
|
if &diff
|
|
|
|
|
let &diffexpr='EnhancedDiff#Diff("git diff", "--diff-algorithm=patience")'
|
|
|
|
|
endif
|
|
|
|
|
" }}}
|
|
|
|
|
|
|
|
|
|
" Stuff i'll probably use if i remember to {{{
|
|
|
|
|
" Don't close window, when deleting a buffer
|
|
|
|
|
" Don't close window when deleting a buffer
|
|
|
|
|
command! Bclose call <SID>BufcloseCloseIt()
|
|
|
|
|
function! <SID>BufcloseCloseIt()
|
|
|
|
|
let l:currentBufNum = bufnr("%")
|
|
|
|
|
let l:alternateBufNum = bufnr("#")
|
|
|
|
|
let l:currentBufNum = bufnr("%")
|
|
|
|
|
let l:alternateBufNum = bufnr("#")
|
|
|
|
|
|
|
|
|
|
if buflisted(l:alternateBufNum)
|
|
|
|
|
buffer #
|
|
|
|
@ -692,7 +715,7 @@ endfunction
|
|
|
|
|
vnoremap <Leader>sw "hy
|
|
|
|
|
\ :let b:sub = input('global replacement: ') <Bar>
|
|
|
|
|
\ if b:sub !=? '' <Bar>
|
|
|
|
|
\ let b:rep = substitute(getreg('h'), '/', '\\/', 'g') <Bar>
|
|
|
|
|
\ let b:rep = substitute(getreg('h'), '/', '\\/', 'g') <Bar>
|
|
|
|
|
\ execute '%s/'.b:rep."/".b:sub.'/g' <Bar>
|
|
|
|
|
\ unlet b:sub b:rep <Bar>
|
|
|
|
|
\ endif <CR>
|
|
|
|
|