405 lines
14 KiB
VimL
405 lines
14 KiB
VimL
"*****************************************************************************************
|
||
" ___ __ _ ____ __ __ _
|
||
" / _ \ / / __ __ ___ _ (_) ___ / __/ ___ / /_ / /_ (_) ___ ___ _ ___
|
||
" / ___/ / / / // / / _ `/ / / / _ \ _\ \ / -_)/ __// __/ / / / _ \ / _ `/ (_-<
|
||
"/_/ /_/ \_,_/ \_, / /_/ /_//_/ /___/ \__/ \__/ \__/ /_/ /_//_/ \_, / /___/
|
||
" /___/ /___/
|
||
"
|
||
"*****************************************************************************************
|
||
"""""""""""""""
|
||
" Tmuxline "
|
||
" """""""""""""
|
||
let g:tmuxline_preset = {
|
||
\'a' : '#S',
|
||
\'b' : '#W',
|
||
\'c' : ['#(~/.config/Scripts/showip)'],
|
||
\'win' : ['#I', '#W'],
|
||
\'cwin' : ['#I', '#W', '#F'],
|
||
\'y' : ['%R', '%a', '%Y'],
|
||
\'z' : '#H'}
|
||
|
||
""""""""""""""""
|
||
" Git Gutter "
|
||
"""""""""""""""
|
||
let g:gitgutter_enabled = 1
|
||
let g:gitgutter_grep=''
|
||
|
||
"""""""""""
|
||
" VimTex "
|
||
"""""""""""
|
||
let g:latex_view_general_viewer = "zathura"
|
||
let g:vimtex_view_method = "zathura"
|
||
let g:tex_flavor = "latex"
|
||
let g:vimtex_quickfix_open_on_warning = 0
|
||
let g:vimtex_quickfix_mode = 2
|
||
let g:vimtex_compiler_method = "latexmk"
|
||
let g:vimtex_compiler_progname = 'nvr'
|
||
let g:vimtex_compiler_latexmk = {
|
||
\ 'background' : 1,
|
||
\ 'build_dir' : '',
|
||
\ 'callback' : 1,
|
||
\ 'continuous' : 1,
|
||
\ 'executable' : 'latexmk',
|
||
\ 'options' : [
|
||
\ '-verbose',
|
||
\ '-file-line-error',
|
||
\ '-synctex=1',
|
||
\ '-interaction=nonstopmode',
|
||
\ ],
|
||
\}
|
||
|
||
"""""""""""
|
||
" Goyo "
|
||
"""""""""""
|
||
nmap <F6> :Goyo<CR>
|
||
|
||
|
||
"""""""""""
|
||
" Vista "
|
||
"""""""""""
|
||
nmap <F8> :Vista!!<CR>
|
||
let g:vista_executive_for = {
|
||
\ 'c': 'coc',
|
||
\ }
|
||
nnoremap <silent><leader>vf :Vista finder coc<CR>
|
||
let g:vista_icon_indent = ["╰─▸ ", "├─▸ "]
|
||
let g:vista#renderer#enable_icon = 1
|
||
let g:vista_sidebar_width = 50
|
||
|
||
""""""""""""
|
||
"NerdTree "
|
||
""""""""""""
|
||
" if nerdtree is only window, kill nerdtree so buffer can die
|
||
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | :bdelete | endif
|
||
map <F7> :NERDTreeToggle<CR>
|
||
let nerdtreequitonopen = 0
|
||
let NERDTreeShowHidden=1
|
||
let nerdchristmastree=1
|
||
let g:NERDTreeMinimalUI = 1
|
||
let g:nerdtreewinsize = 25
|
||
let g:NERDTreeDirArrowExpandable = '▷'
|
||
let g:NERDTreeDirArrowCollapsible = '▼'
|
||
let NERDTreeAutoCenter=1
|
||
let g:NERDTreeIndicatorMapCustom = {
|
||
\ "modified" : "✹",
|
||
\ "staged" : "✚",
|
||
\ "untracked" : "✭",
|
||
\ "renamed" : "➜",
|
||
\ "unmerged" : "═",
|
||
\ "deleted" : "✖",
|
||
\ "dirty" : "✗",
|
||
\ "clean" : "✔︎",
|
||
\ 'ignored' : '☒',
|
||
\ "unknown" : "?"
|
||
\ }
|
||
|
||
|
||
""""""""""""
|
||
"Airline "
|
||
""""""""""""
|
||
"main settings
|
||
let g:airline_theme='nord'
|
||
let g:airline_powerline_fonts = 1
|
||
let g:airline_symbols = {}
|
||
let g:airline_skip_empty_sections = 1
|
||
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_powerline_fonts = 1
|
||
let g:airline_symbols.crypt = ''
|
||
let g:airline_symbols.linenr = '☰'
|
||
let g:airline_symbols.linenr = '␊'
|
||
let g:airline_symbols.linenr = ''
|
||
let g:airline_symbols.linenr = '¶'
|
||
let g:airline_symbols.maxlinenr = ''
|
||
let g:airline_symbols.paste = 'ρ'
|
||
let g:airline_symbols.paste = 'Þ'
|
||
let g:airline_symbols.paste = '∥'
|
||
let g:airline_symbols.spell = 'Ꞩ'
|
||
let g:airline_symbols.notexists = 'Ɇ'
|
||
let g:airline_symbols.whitespace = 'Ξ'
|
||
let g:airline_symbols.modified = ' '
|
||
let g:airline_section_error = '%{airline#util#wrap(airline#extensions#coc#get_error(),0)}'
|
||
let g:airline_section_warning = '%{airline#util#wrap(airline#extensions#coc#get_warning(),0)}'
|
||
"extensions
|
||
let g:airline#extensions#tabline#enabled = 1
|
||
let g:airline#extensions#ale#enabled = 1
|
||
let g:airline#extensions#coc#enabled = 1
|
||
let g:airline#extensions#unicode#enabled = 1
|
||
let g:airline#extensions#branch#enabled = 1
|
||
let g:airline#extensions#vista#enabled = 1
|
||
let g:airline#extensions#hunks#enabled = 1
|
||
"extension settings
|
||
let airline#extensions#coc#stl_format_err = '%E{[%e(#%fe)]}'
|
||
let airline#extensions#coc#stl_format_warn = '%W{[%w(#%fw)]}'
|
||
let airline#extensions#coc#warning_symbol = ':'
|
||
let airline#extensions#coc#error_symbol = ':'
|
||
let g:airline#extensions#hunks#hunk_symbols = [':', ':', ':']
|
||
let g:airline#extensions#branch#format = 2
|
||
|
||
|
||
"""""""""""""
|
||
"Devicons "
|
||
"""""""""""""
|
||
let g:webdevicons_enable = 1
|
||
let g:webdevicons_enable_unite = 1
|
||
let g:webdevicons_enable_denite = 1
|
||
let g:webdevicons_enable_nerdtree = 1
|
||
let g:webdevicons_enable_airline_tabline = 1
|
||
let g:webdevicons_enable_vimfiler = 1
|
||
let g:WebDevIconsUnicodeDecorateFileNodes = 1
|
||
let g:WebDevIconsUnicodeDecorateFolderNodes = 1
|
||
let g:WebDevIconsUnicodeGlyphDoubleWidth = 1
|
||
let g:webdevicons_enable_airline_statusline = 1
|
||
let g:WebDevIconsNerdTreeGitPluginForceVAlign = 1
|
||
let g:WebDevIconsUnicodeGlyphDoubleWidth = 1
|
||
let g:WebDevIconsUnicodeDecorateFolderNodesDefaultSymbol = ''
|
||
let g:DevIconsDefaultFolderOpenSymbol = ''
|
||
|
||
"""""""""""""""""
|
||
"Comfy-Scroll "
|
||
"""""""""""""""""
|
||
noremap <silent> <ScrollWheelDown> :call comfortable_motion#flick(40)<CR>
|
||
noremap <silent> <ScrollWheelUp> :call comfortable_motion#flick(-40)<CR>
|
||
let g:comfortable_motion_friction = 50.0
|
||
let g:comfortable_motion_air_drag = 1.0
|
||
|
||
""""""""""
|
||
" Emoji "
|
||
""""""""""
|
||
set completefunc=emoji#complete
|
||
|
||
|
||
"""""""""""""""""
|
||
"Indent Guides "
|
||
"""""""""""""""""
|
||
"let g:indentLine_char = '▏'
|
||
let g:indentLine_char_list = ['|', '¦', '┆', '┊']
|
||
|
||
let g:indent_guides_auto_colors = 1
|
||
let g:indentLine_fileTypeExclude = [
|
||
\'defx',
|
||
\'markdown',
|
||
\'denite',
|
||
\'startify',
|
||
\'tagbar',
|
||
\'vista_kind',
|
||
\'vista'
|
||
\]
|
||
|
||
"""""""""""""
|
||
"Autopairs "
|
||
"""""""""""""
|
||
let g:AutoPairsFlyMode = 1
|
||
|
||
"""""""""""""
|
||
"Ultinsips "
|
||
"""""""""""""
|
||
" These were interfering with coc.nvims completion keybinds
|
||
"let g:UltiSnipsExpandTrigger="<tab>"
|
||
"let g:UltiSnipsJumpForwardTrigger="<c-b>"
|
||
"let g:UltiSnipsJumpBackwardTrigger="<c-z>"
|
||
"let g:UltiSnipsListSnippets="<c-tab>"
|
||
|
||
""""""""""""
|
||
"Startify "
|
||
""""""""""""
|
||
function! s:center(lines) abort
|
||
let longest_line = max(map(copy(a:lines), 'strwidth(v:val)'))
|
||
let centered_lines = map(copy(a:lines),
|
||
\ 'repeat(" ", (&columns / 2) - (longest_line / 2)) . v:val')
|
||
return centered_lines
|
||
endfunction
|
||
let s:header= [
|
||
\"▄▀▀▄ ▄▀▀▄ ▄▀▀█▀▄ ▄▀▀▄ ▄▀▄ ▄▀▀▄▀▀▀▄ ▄▀▀█▄▄▄▄ ▄▀▀█▄ ▄▀▀▄▀▀▀▄ ▄▀▀█▄▄▄▄ ▄▀▀▄▀▀▀▄ ",
|
||
\"█ █ █ █ █ █ █ █ ▀ █ █ █ █ ▐ ▄▀ ▐ ▐ ▄▀ ▀▄ █ █ █ ▐ ▄▀ ▐ █ █ █ ",
|
||
\"▐ █ █ ▐ █ ▐ ▐ █ █ ▐ █▀▀█▀ █▄▄▄▄▄ █▄▄▄█ ▐ █▀▀▀▀ █▄▄▄▄▄ ▐ █▀▀█▀ ",
|
||
\" █ ▄▀ █ █ █ ▄▀ █ █ ▌ ▄▀ █ █ █ ▌ ▄▀ █ ",
|
||
\" ▀▄▀ ▄▀▀▀▀▀▄ ▄▀ ▄▀ █ █ ▄▀▄▄▄▄ █ ▄▀ ▄▀ ▄▀▄▄▄▄ █ █ ",
|
||
\" █ █ █ █ ▐ ▐ █ ▐ ▐ ▐ █ █ ▐ ▐ ▐ ",
|
||
\" ▐ ▐ ▐ ▐ ▐ ▐ ▐ ",
|
||
\"",
|
||
\"",
|
||
\" ;::::;",
|
||
\" ;::::; :;",
|
||
\" ;:::::' :;",
|
||
\" ;:::::; ;.",
|
||
\" ,:::::' ; OOO\ ",
|
||
\" ::::::; ; OOOOO\ ",
|
||
\" ;:::::; ; OOOOOOOO",
|
||
\" ,;::::::; ;' / OOOOOOO",
|
||
\" ;:::::::::`. ,,,;. / / DOOOOOO",
|
||
\" .';:::::::::::::::::;, / / DOOOO",
|
||
\" ,::::::;::::::;;;;::::;, / / DOOO",
|
||
\" ;`::::::`'::::::;;;::::: ,#/ / DOOO",
|
||
\" :`:::::::`;::::::;;::: ;::# / DOOO",
|
||
\" ::`:::::::`;:::::::: ;::::# / DOO",
|
||
\" `:`:::::::`;:::::: ;::::::#/ DOO",
|
||
\" :::`:::::::`;; ;:::::::::## OO",
|
||
\" ::::`:::::::`;::::::::;:::# OO",
|
||
\" `:::::`::::::::::::;'`:;::# O",
|
||
\" `:::::`::::::::;' / / `:#",
|
||
\" ::::::`:::::;' / / `#",
|
||
\]
|
||
|
||
let g:startify_change_to_dir = 1
|
||
let g:startify_custom_header = s:center(s:header)
|
||
" Optionally create and use footer
|
||
"let s:header= []
|
||
"let g:startify_custom_footer = s:center(s:footer)
|
||
|
||
"""""""
|
||
"COC "
|
||
"""""""
|
||
|
||
" Define Error Symbols and colors
|
||
let g:coc_status_warning_sign = ''
|
||
let g:coc_status_error_sign = ''
|
||
hi CocWarningSign ctermfg=blue
|
||
hi CocErrorSign ctermfg=red
|
||
hi CocInfoSign ctermfg=yellow
|
||
hi CocHintSign ctermfg=green
|
||
|
||
" Transparent popup window
|
||
hi! Pmenu ctermbg=black
|
||
hi! PmenuSel ctermfg=2
|
||
hi! PmenuSel ctermbg=0
|
||
|
||
" Brighter line numbers
|
||
hi! LineNr ctermfg=NONE guibg=NONE
|
||
|
||
" KEY REMAPS ""
|
||
set updatetime=300
|
||
let g:ycm_server_python_interpreter = '/usr/bin/python3'
|
||
let g:coc_snippet_next = '<TAB>'
|
||
let g:coc_snippet_prev = '<S-TAB>'
|
||
|
||
" Extensions. Some need configuration.
|
||
" coc-java needs a valid JVM filepath defined in coc-settings
|
||
" coc-ccls needs ccls (available on aur)
|
||
" coc-eslint needs eslint npm package installed globally
|
||
let g:coc_global_extensions = [
|
||
\'coc-html',
|
||
\'coc-xml',
|
||
\'coc-java',
|
||
\'coc-ccls',
|
||
\'coc-powershell',
|
||
\'coc-r-lsp',
|
||
\'coc-vimlsp',
|
||
\'coc-lua',
|
||
\'coc-sql',
|
||
\'coc-go',
|
||
\'coc-css',
|
||
\'coc-sh',
|
||
\'coc-snippets',
|
||
\'coc-prettier',
|
||
\'coc-eslint',
|
||
\'coc-emmet',
|
||
\'coc-tsserver',
|
||
\'coc-translator',
|
||
\'coc-fish',
|
||
\'coc-docker',
|
||
\'coc-pairs',
|
||
\'coc-json',
|
||
\'coc-python',
|
||
\'coc-imselect',
|
||
\'coc-highlight',
|
||
\'coc-git',
|
||
\'coc-github',
|
||
\'coc-gitignore',
|
||
\'coc-emoji',
|
||
\'coc-lists',
|
||
\'coc-post',
|
||
\'coc-stylelint',
|
||
\'coc-yaml',
|
||
\'coc-template',
|
||
\'coc-tabnine',
|
||
\'coc-utils'
|
||
\]
|
||
|
||
" 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)
|
||
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
|
||
" 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)
|
||
|
||
" Fix autofix problem of current line
|
||
nmap <leader>qf <Plug>(coc-fix-current)
|
||
|
||
augroup MyAutoCmd
|
||
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
|
||
|
||
" Highlight symbol under cursor on CursorHold
|
||
"autocmd CursorHold * silent call CocActionAsync('highlight')
|
||
|
||
" map <tab> to trigger completion and navigate to the next item
|
||
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
|
||
|
||
"""""""""""""""""
|
||
"Nerd Commenter "
|
||
"""""""""""""""""
|
||
" Add spaces after comment delimiters by default
|
||
let g:NERDSpaceDelims = 1
|
||
" Use compact syntax for prettified multi-line comments
|
||
let g:NERDCompactSexyComs = 1
|
||
" Allow commenting and inverting empty lines (useful when commenting a region)
|
||
"
|
||
|
||
|
||
"""""""""""""""""
|
||
" Fuzzy Finding "
|
||
"""""""""""""""""
|
||
let g:fzf_colors =
|
||
\ { 'fg': ['bg', 'Normal'],
|
||
\ 'bg': ['bg', 'Normal'],
|
||
\ 'hl': ['fg', 'Comment'],
|
||
\ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
|
||
\ 'bg+': ['fg', 'CursorLine', 'CursorColumn'],
|
||
\ 'hl+': ['fg', 'Statement'],
|
||
\ 'info': ['fg', 'PreProc'],
|
||
\ 'border': ['fg', 'Ignore'],
|
||
\ 'prompt': ['fg', 'Conditional'],
|
||
\ 'pointer': ['fg', 'Exception'],
|
||
\ 'marker': ['fg', 'Keyword'],
|
||
\ 'spinner': ['fg', 'Label'],
|
||
\ 'header': ['fg', 'Comment'] }
|
||
|
||
" Hide status bar while using fzf commands
|
||
if has('nvim') || has('gui_running')
|
||
autocmd! FileType fzf
|
||
autocmd FileType fzf set laststatus=0 | autocmd WinLeave <buffer> set laststatus=2
|
||
endif
|
||
|
||
|
||
"""""""""""""""""
|
||
" Autosaving "
|
||
"""""""""""""""""
|
||
let g:auto_save = 1
|
||
let g:auto_save_silent = 1
|
||
let g:auto_save_events = ["InsertLeave", "TextChanged", "FocusLost"]
|
||
|
||
|