2023-02-11 14:11:00 +01:00
|
|
|
|
" vim: fdm=marker ts=2 sts=2 sw=2
|
|
|
|
|
|
|
|
|
|
if has('python3')
|
|
|
|
|
silent! python3 1
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
let mapleader = "\<Space>"
|
|
|
|
|
let maplocalleader = "\\"
|
|
|
|
|
map <Space> <Leader>
|
|
|
|
|
let g:elite_mode=1
|
|
|
|
|
|
2023-02-14 08:36:53 +01:00
|
|
|
|
" Plugins {{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
call plug#begin('~/.vim/plugged')
|
|
|
|
|
"###########
|
|
|
|
|
" Utility
|
|
|
|
|
"###########
|
|
|
|
|
Plug '~/.fzf'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let NERDTreeShowHidden=0
|
|
|
|
|
let NERDTreeMinimalUI = 1
|
|
|
|
|
let NERDTreeDirArrows = 1
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
Plug 'preservim/tagbar', { 'on': 'TagbarToggle' }
|
|
|
|
|
Plug 'lifepillar/vim-mucomplete' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:mucomplete#chains = {
|
|
|
|
|
\ 'default': ['c-p', 'omni'],
|
|
|
|
|
\ 'markdown': ['keyp', 'thes', 'spel', 'dict'],
|
|
|
|
|
\ 'tex': ['keyp', 'ulti', 'spel', 'thes', 'dict']
|
|
|
|
|
\ }
|
|
|
|
|
inoremap <silent> <expr> <plug>MyCR mucomplete#ultisnips#expand_snippet("\<cr>")
|
|
|
|
|
imap <cr> <plug>MyCR
|
|
|
|
|
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
|
|
|
|
|
inoremap <silent> <plug>(MUcompleteFwdKey) <right>
|
|
|
|
|
imap <right> <plug>(MUcompleteCycFwd)
|
|
|
|
|
inoremap <silent> <plug>(MUcompleteBwdKey) <left>
|
|
|
|
|
imap <left> <plug>(MUcompleteCycBwd)
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
Plug 'junegunn/fzf.vim' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } }
|
|
|
|
|
let g:fzf_preview_window = ''
|
|
|
|
|
|
|
|
|
|
nnoremap <leader>e :Files<cr>
|
|
|
|
|
nnoremap <leader>E :History<cr>
|
|
|
|
|
nnoremap <leader>b :Buffer<cr>
|
|
|
|
|
nnoremap <leader>c :Commits<cr>
|
|
|
|
|
nnoremap <leader>s :Snippets<cr>
|
|
|
|
|
" nnoremap <leader>a :Ag<cr>
|
|
|
|
|
nnoremap <leader>g :Rg<cr>
|
|
|
|
|
nnoremap <leader>l :BLines<cr>
|
|
|
|
|
nnoremap <leader>L :Lines<cr>
|
|
|
|
|
nnoremap <leader>t :BTags<cr>
|
|
|
|
|
nnoremap <leader>T :Tags<cr>
|
|
|
|
|
nnoremap <leader>h :Helptags<cr>
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
Plug 'junegunn/vim-easy-align' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
xmap gl <Plug>(EasyAlign)
|
|
|
|
|
nmap gl <Plug>(EasyAlign)
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
Plug 'easymotion/vim-easymotion' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:EasyMotion_do_mapping = 0
|
|
|
|
|
let g:EasyMotion_smartcase = 1
|
|
|
|
|
" map <Leader> <Plug>(easymotion-prefix)
|
|
|
|
|
nmap <Leader>s <Plug>(easymotion-overwin-f2)
|
|
|
|
|
map <Leader>w <Plug>(easymotion-bd-w)
|
|
|
|
|
nmap <Leader>w <Plug>(easymotion-overwin-w)
|
|
|
|
|
map <Leader>j <Plug>(easymotion-j)
|
|
|
|
|
map <Leader>k <Plug>(easymotion-k)
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
Plug 'konfekt/fastfold' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
nmap zuz <Plug>(FastFoldUpdate)
|
|
|
|
|
let g:fastfold_savehook = 1
|
|
|
|
|
let g:tex_fold_enabled = 1
|
|
|
|
|
let g:vimsyn_folding = 'af'
|
|
|
|
|
let g:javaScript_fold = 1
|
|
|
|
|
let g:perl_fold = 0
|
|
|
|
|
let g:php_folding = 0
|
2023-02-14 08:36:53 +01:00
|
|
|
|
" {{ "}}}" }}
|
|
|
|
|
Plug 'tpope/vim-unimpaired'
|
|
|
|
|
Plug 'mhinz/vim-grepper' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
nnoremap <leader>g :Grepper -tool rg<cr>
|
|
|
|
|
nnoremap <leader>G :Grepper -tool ag<cr>
|
|
|
|
|
|
|
|
|
|
nmap gs <plug>(GrepperOperator)
|
|
|
|
|
xmap gs <plug>(GrepperOperator)
|
|
|
|
|
|
|
|
|
|
let g:grepper = {}
|
|
|
|
|
let g:grepper.tools = ['rg', 'ag', 'git', 'ack']
|
|
|
|
|
let g:grepper.jump = 1
|
|
|
|
|
let g:grepper.next_tool = '<leader>g'
|
|
|
|
|
let g:grepper.simple_prompt = 1
|
|
|
|
|
let g:grepper.quickfix = 0
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
Plug 'tpope/vim-dispatch'
|
|
|
|
|
Plug 'tpope/vim-repeat'
|
|
|
|
|
Plug 'tpope/vim-surround'
|
|
|
|
|
Plug 'tpope/vim-eunuch'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'vasconcelloslf/vim-interestingwords' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
" nnoremap <silent> <leader>k :call InterestingWords('n')<cr>
|
|
|
|
|
" nnoremap <silent> <leader>K :call UncolorAllWords()<cr>
|
|
|
|
|
" nnoremap <silent> n :call WordNavigation('forward')<cr>
|
|
|
|
|
" nnoremap <silent> N :call WordNavigation('backward')<cr>
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
|
|
|
|
|
"#############################
|
|
|
|
|
" Generic Programming Support
|
|
|
|
|
"#############################
|
|
|
|
|
Plug 'honza/vim-snippets'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'jiangmiao/auto-pairs' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:AutoPairsShortcutFastWrap='<C-e>'
|
|
|
|
|
let g:AutoPairsMapSpace = 0
|
|
|
|
|
imap <silent> <expr> <space> pumvisible()
|
|
|
|
|
\ ? "<space>"
|
|
|
|
|
\ : "<c-r>=AutoPairsSpace()<cr>"
|
|
|
|
|
let g:AutoPairsMapCR = 0
|
|
|
|
|
let g:AutoPairsMapSpace = 0
|
|
|
|
|
imap <silent> <expr> <space> pumvisible()
|
|
|
|
|
\ ? "<space>"
|
|
|
|
|
\ : "<c-r>=AutoPairsSpace()<cr>"
|
|
|
|
|
|
|
|
|
|
inoremap <silent> <expr> <plug>UltiExpand
|
|
|
|
|
\ mucomplete#ultisnips#expand_snippet("\<cr>")
|
|
|
|
|
imap <plug>MyCR <plug>UltiExpand<plug>AutoPairsReturn
|
|
|
|
|
imap <cr> <plug>MyCR
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
Plug 'ntpeters/vim-better-whitespace' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:better_whitespace_filetypes_blacklist=['mail', 'diff', 'gitcommit', 'unite', 'qf', 'help']
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
Plug 'tpope/vim-commentary'
|
|
|
|
|
Plug 'AndrewRadev/splitjoin.vim'
|
|
|
|
|
Plug 'tobyS/vmustache'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'dense-analysis/ale' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:ale_sign_error = '✘'
|
|
|
|
|
let g:ale_sign_warning = '⚠'
|
|
|
|
|
highlight ALEErrorSign ctermbg=NONE ctermfg=red
|
|
|
|
|
highlight ALEWarningSign ctermbg=NONE ctermfg=yellow
|
|
|
|
|
let g:ale_lint_on_save = 1
|
|
|
|
|
let g:ale_fix_on_save = 1
|
|
|
|
|
let g:ale_lint_on_enter = 0
|
|
|
|
|
let g:ale_lint_on_text_changed = 'never'
|
|
|
|
|
set omnifunc=ale#completion#OmniFunc
|
|
|
|
|
let g:ale_linter_aliases = {'svelte': ['css', 'javascript']}
|
|
|
|
|
let g:ale_linters = {
|
|
|
|
|
\ 'javascript': ['standard'],
|
|
|
|
|
\ 'svelte': ['stylelint', 'eslint'],
|
|
|
|
|
\ 'go': ['go build', 'gometalinter']
|
|
|
|
|
\ }
|
|
|
|
|
let g:ale_fixers = {
|
|
|
|
|
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
|
|
|
|
|
\ 'javascript': ['prettier', 'eslint'],
|
|
|
|
|
\ 'svelte': ['eslint', 'prettier', 'prettier_standard'],
|
|
|
|
|
\ 'go': ['goimports']
|
|
|
|
|
\ }
|
|
|
|
|
let g:gometalinter_fast = ''
|
|
|
|
|
\ . ' --enable=vet'
|
|
|
|
|
\ . ' --enable=errcheck'
|
|
|
|
|
\ . ' --enable=ineffassign'
|
|
|
|
|
\ . ' --enable=goimports'
|
|
|
|
|
\ . ' --enable=misspell'
|
|
|
|
|
\ . ' --enable=lll --line-length=120'
|
|
|
|
|
let g:ale_go_gometalinter_options = '--disable-all --tests' . g:gometalinter_fast . ' --enable=golint'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
|
|
|
|
|
"#####################
|
|
|
|
|
" Markdown / Writing
|
|
|
|
|
"#####################
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'dbmrq/vim-ditto' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
" au FileType markdown,text,tex DittoOn
|
|
|
|
|
nmap <leader>di <Plug>ToggleDitto " Turn Ditto on and off
|
|
|
|
|
nmap =d <Plug>DittoNext " Jump to the next word
|
|
|
|
|
nmap -d <Plug>DittoPrev " Jump to the previous word
|
|
|
|
|
nmap +d <Plug>DittoGood " Ignore the word under the cursor
|
|
|
|
|
nmap _d <Plug>DittoBad " Stop ignoring the word under the cursor
|
|
|
|
|
nmap ]d <Plug>DittoMore " Show the next matches
|
|
|
|
|
nmap [d <Plug>DittoLess " Show the previous matches
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
Plug 'kana/vim-textobj-user'
|
|
|
|
|
Plug 'reedes/vim-textobj-quote'
|
|
|
|
|
Plug 'reedes/vim-textobj-sentence'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'reedes/vim-wordy' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
" let g:wordy_spell_dir = '~/.vim/spell/wordy'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
Plug 'reedes/vim-lexical' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:lexical#thesaurus = ['~/.vim/thesaurus/english.txt',]
|
|
|
|
|
let g:lexical#spellfile = ['~/.vim/spell/en.utf-8.add',]
|
|
|
|
|
let g:lexical#thesaurus_key = '<leader>t'
|
|
|
|
|
let g:lexical#dictionary_key = '<leader>k'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
Plug 'reedes/vim-litecorrect'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'reedes/vim-pencil' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:pencil#map#suspend_af = 'K'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
Plug 'tpope/vim-abolish'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'plasticboy/vim-markdown' " {{ "{{{" }}
|
|
|
|
|
let g:vim_markdown_folding_disabled = 1
|
|
|
|
|
let g:vim_markdown_new_list_item_indent = 0
|
|
|
|
|
let g:vim_markdown_auto_insert_bullets = 1
|
|
|
|
|
let g:vim_markdown_frontmatter = 1
|
|
|
|
|
let g:vim_markdown_no_extensions_in_markdown = 0
|
|
|
|
|
let g:vim_markdown_follow_anchor = 1
|
|
|
|
|
let g:vim_markdown_strikethrough = 1
|
|
|
|
|
let g:vim_markdown_autowrite = 1
|
|
|
|
|
set conceallevel=0
|
|
|
|
|
|
|
|
|
|
autocmd FileType markdown setlocal spell
|
|
|
|
|
autocmd FileType markdown setlocal linebreak " wrap on words, not characters
|
|
|
|
|
|
|
|
|
|
augroup my_spelling_colors
|
|
|
|
|
" Underline, don't do intrusive red things.
|
|
|
|
|
autocmd!
|
|
|
|
|
" autocmd ColorScheme * hi clear SpellBad
|
|
|
|
|
autocmd ColorScheme * hi SpellBad cterm=underline ctermfg=NONE ctermbg=NONE term=Reverse
|
|
|
|
|
autocmd ColorScheme * hi SpellCap cterm=underline ctermfg=NONE ctermbg=NONE term=Reverse
|
|
|
|
|
autocmd ColorScheme * hi SpellLocal cterm=underline ctermfg=NONE ctermbg=NONE term=Reverse
|
|
|
|
|
autocmd ColorScheme * hi SpellRare cterm=underline ctermfg=NONE ctermbg=NONE term=Reverse
|
|
|
|
|
augroup END
|
|
|
|
|
set spell spelllang=en_us
|
|
|
|
|
" {{ "}}}" }}
|
|
|
|
|
Plug 'lervag/vimtex' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:tex_flavor = 'latex'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
|
|
|
|
|
"#####################
|
|
|
|
|
" Productivity
|
|
|
|
|
"#####################
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'fcpg/vim-waikiki' "{{ "{{{" }}
|
2023-07-06 07:49:58 +02:00
|
|
|
|
let g:waikiki_roots = ['~/doc/wiki/']
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:waikiki_default_maps = 1
|
2023-07-06 07:49:58 +02:00
|
|
|
|
nn <Leader>ww :e ~/doc/wiki/index.md<cr>
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
Plug 'alok/notational-fzf-vim' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:nv_search_paths = ['~/doc/zettelkasten', '~/doc/wiki']
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
|
|
|
|
|
"#####################
|
|
|
|
|
" Git Support
|
|
|
|
|
"#####################
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'tpope/vim-fugitive' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
nnoremap <Leader>gs :Gstatus<CR>
|
|
|
|
|
nnoremap <Leader>gr :Gremove<CR>
|
|
|
|
|
nnoremap <Leader>gl :Glog<CR>
|
|
|
|
|
nnoremap <Leader>gb :Gblame<CR>
|
|
|
|
|
nnoremap <Leader>gm :Gmove
|
|
|
|
|
nnoremap <Leader>gp :Ggrep
|
|
|
|
|
nnoremap <Leader>gR :Gread<CR>
|
|
|
|
|
nnoremap <Leader>gg :Git
|
|
|
|
|
nnoremap <Leader>gd :Gdiff<CR>
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
Plug 'junegunn/gv.vim'
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'mhinz/vim-signify' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:signify_vcs_list = [ 'git' ]
|
|
|
|
|
let g:signify_disable_by_default = 0
|
|
|
|
|
let g:signify_realtime = 0
|
|
|
|
|
nmap <F10> <Plug>(SignifyToggle)
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
|
|
|
|
|
"#########################
|
|
|
|
|
" Web Programming Support
|
|
|
|
|
"#########################
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'pangloss/vim-javascript', { 'for': 'javascript' }
|
2023-02-11 14:11:00 +01:00
|
|
|
|
Plug 'mxw/vim-jsx'
|
|
|
|
|
Plug 'mattn/emmet-vim'
|
|
|
|
|
Plug 'othree/html5.vim'
|
|
|
|
|
Plug 'lumiliet/vim-twig'
|
|
|
|
|
Plug 'evanleck/vim-svelte'
|
|
|
|
|
Plug 'jparise/vim-graphql'
|
|
|
|
|
Plug 'ap/vim-css-color'
|
|
|
|
|
|
|
|
|
|
"#########################
|
|
|
|
|
" Language support
|
|
|
|
|
"#########################
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'vim-perl/vim-perl', { 'for': 'perl' }
|
|
|
|
|
Plug 'cespare/vim-toml', { 'for': 'toml' }
|
|
|
|
|
Plug 'fatih/vim-go', { 'for': 'go' } " {{ "{{{" }}
|
|
|
|
|
let g:go_fmt_command = "goimports"
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:go_addtags_transform = "camelcase"
|
|
|
|
|
autocmd FileType go nmap MM <Plug>(go-build)
|
|
|
|
|
autocmd FileType go nmap LL <Plug>(go-run)
|
|
|
|
|
autocmd FileType go nmap TT <Plug>(go-test)
|
|
|
|
|
autocmd FileType go nmap <Leader>i <Plug>(go-info)
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
Plug 'rust-lang/rust.vim', { 'for': 'rust' } " {{ "{{{" }}
|
|
|
|
|
let g:rustfmt_autosave = 0
|
|
|
|
|
let g:rust_recommended_style = 1
|
|
|
|
|
" {{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
|
|
|
|
|
"#########################
|
|
|
|
|
" Theme / Interface
|
|
|
|
|
"#########################
|
|
|
|
|
let g:lightline = {'colorscheme': 'powerline'}
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'itchyny/lightline.vim' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:lightline = {
|
|
|
|
|
\ 'active': {
|
|
|
|
|
\ 'left': [ [ 'mode', 'paste' ],
|
|
|
|
|
\ [ 'gitbranch', 'readonly', 'filename', 'modified', 'pencil' ] ]
|
|
|
|
|
\ },
|
|
|
|
|
\ 'component_function': {
|
|
|
|
|
\ 'gitbranch': 'fugitive#statusline',
|
|
|
|
|
\ 'pencil': 'PencilMode'
|
|
|
|
|
\ },
|
|
|
|
|
\ }
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
Plug 'morhetz/gruvbox'
|
|
|
|
|
|
|
|
|
|
call plug#end()
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
" Vim sensible settings {{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
set nocompatible
|
|
|
|
|
set encoding=utf8
|
|
|
|
|
set lazyredraw
|
|
|
|
|
"Always show the status line
|
|
|
|
|
set laststatus=2
|
|
|
|
|
"Set incremental searching"
|
|
|
|
|
set incsearch
|
|
|
|
|
"highlighting of search matches
|
|
|
|
|
set hlsearch
|
|
|
|
|
"ignore case in search patterns
|
|
|
|
|
set ignorecase
|
|
|
|
|
"overwrite ignorecase if upper case chars
|
|
|
|
|
set smartcase
|
|
|
|
|
"Show line numbers
|
|
|
|
|
set number
|
|
|
|
|
"keep cursor in the same column
|
|
|
|
|
set nostartofline
|
|
|
|
|
"Write the old file out when switching between files.
|
|
|
|
|
set autowrite
|
|
|
|
|
"read file if changed outside
|
|
|
|
|
set autoread
|
|
|
|
|
"show line and column of cursor
|
|
|
|
|
set ruler
|
|
|
|
|
" Enable highlighting of the current line
|
|
|
|
|
" set cursorline
|
|
|
|
|
|
|
|
|
|
set wildmenu wildignorecase wildmode=list:longest,full
|
2023-02-14 08:36:53 +01:00
|
|
|
|
set history={{ .chezmoi.gid }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
set completeopt+=menuone
|
|
|
|
|
set completeopt+=noselect
|
|
|
|
|
set cpt=.,w,b,t
|
|
|
|
|
" set completeopt+=noinsert
|
|
|
|
|
|
|
|
|
|
"Show command in bottom right portion of the screen
|
|
|
|
|
set showcmd
|
|
|
|
|
set noshowmode
|
|
|
|
|
set shortmess+=c
|
|
|
|
|
set belloff+=ctrlg
|
|
|
|
|
|
|
|
|
|
"Switch between buffers without saving
|
|
|
|
|
set hidden
|
|
|
|
|
set splitbelow
|
|
|
|
|
set splitright
|
|
|
|
|
set display+=lastline
|
|
|
|
|
|
|
|
|
|
"Enable code folding
|
|
|
|
|
" set foldenable foldmethod=syntax
|
|
|
|
|
|
|
|
|
|
"Ever notice a slight lag after typing the leader key + command?
|
|
|
|
|
"This lowers the timeout.
|
|
|
|
|
set timeoutlen=500 ttimeoutlen=50
|
|
|
|
|
|
|
|
|
|
"Hide mouse when typing
|
|
|
|
|
set mousehide
|
|
|
|
|
set mouse=a
|
|
|
|
|
|
|
|
|
|
"Tab stuff
|
|
|
|
|
set tabstop=4
|
|
|
|
|
set shiftwidth=4
|
|
|
|
|
set softtabstop=4
|
|
|
|
|
set smarttab
|
|
|
|
|
set expandtab
|
|
|
|
|
|
|
|
|
|
"Indent stuff
|
|
|
|
|
set smartindent
|
|
|
|
|
set autoindent
|
|
|
|
|
set breakindent
|
|
|
|
|
|
|
|
|
|
"Prefer a slightly higher line height
|
|
|
|
|
set linespace=3
|
|
|
|
|
|
|
|
|
|
set switchbuf=useopen
|
|
|
|
|
set updatetime=500
|
|
|
|
|
set synmaxcol=400
|
|
|
|
|
|
|
|
|
|
"Better line wrapping
|
|
|
|
|
set nowrap
|
|
|
|
|
set formatoptions+=j
|
|
|
|
|
|
|
|
|
|
filetype plugin indent on
|
|
|
|
|
syntax on
|
|
|
|
|
|
|
|
|
|
" better backup, swap and undo storage
|
|
|
|
|
set noswapfile
|
|
|
|
|
set backup
|
|
|
|
|
set undofile
|
|
|
|
|
|
|
|
|
|
set backupdir=~/.vim/dirs/backup
|
|
|
|
|
set undodir=~/.vim/dirs/undo
|
|
|
|
|
|
|
|
|
|
set thesaurus=~/.vim/thesaurus/english.txt
|
|
|
|
|
set spellfile=~/.vim/spell/en.utf8.add
|
|
|
|
|
set spelllang=en_us
|
|
|
|
|
|
|
|
|
|
set diffopt+=vertical
|
|
|
|
|
" hi SpellBad gui=underline guifg=red cterm=underline ctermfg=red
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
" Theme and Styling {{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
if has('gui_running')
|
2023-02-14 08:36:53 +01:00
|
|
|
|
set guifont={{ .guifont }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
" Scrollbar junk
|
|
|
|
|
set guioptions=aAcei
|
|
|
|
|
set go-=T
|
|
|
|
|
set ballooneval
|
|
|
|
|
autocmd GUIEnter * set novisualbell t_vb=
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
|
|
|
|
|
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
|
|
|
|
|
set termguicolors
|
|
|
|
|
let g:gruvbox_contrast_dark = 'hard'
|
|
|
|
|
let g:gruvbox_italic=0
|
|
|
|
|
colorscheme gruvbox
|
|
|
|
|
set background=dark
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
" Filetype settings {{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
|
|
|
|
|
function! Prose()
|
|
|
|
|
call pencil#init({'wrap': 'hard', 'autoformat': 1})
|
|
|
|
|
call lexical#init()
|
|
|
|
|
call litecorrect#init()
|
|
|
|
|
call textobj#quote#init()
|
|
|
|
|
call textobj#sentence#init()
|
|
|
|
|
DittoOn
|
|
|
|
|
|
|
|
|
|
" manual reformatting shortcuts
|
|
|
|
|
nnoremap <buffer> <silent> Q gqap
|
|
|
|
|
xnoremap <buffer> <silent> Q gq
|
|
|
|
|
nnoremap <buffer> <silent> <leader>Q vapJgqap
|
|
|
|
|
|
|
|
|
|
" force top correction on most recent misspelling
|
|
|
|
|
nnoremap <buffer> <c-s> [s1z=<c-o>
|
|
|
|
|
inoremap <buffer> <c-s> <c-g>u<Esc>[s1z=`]A<c-g>u
|
|
|
|
|
|
|
|
|
|
" replace common punctuation
|
|
|
|
|
iabbrev <buffer> -- –
|
|
|
|
|
iabbrev <buffer> --- —
|
|
|
|
|
iabbrev <buffer> << «
|
|
|
|
|
iabbrev <buffer> >> »
|
|
|
|
|
|
|
|
|
|
" open most folds
|
|
|
|
|
setlocal foldlevel=6
|
|
|
|
|
|
|
|
|
|
" replace typographical quotes (reedes/vim-textobj-quote)
|
|
|
|
|
map <silent> <buffer> <leader>qc <Plug>ReplaceWithCurly
|
|
|
|
|
map <silent> <buffer> <leader>qs <Plug>ReplaceWithStraight
|
|
|
|
|
|
|
|
|
|
" highlight words (reedes/vim-wordy)
|
|
|
|
|
noremap <silent> <buffer> <F8> :<C-u>NextWordy<cr>
|
|
|
|
|
xnoremap <silent> <buffer> <F8> :<C-u>NextWordy<cr>
|
|
|
|
|
inoremap <silent> <buffer> <F8> <C-o>:NextWordy<cr>
|
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
|
|
augroup CustomFiletype
|
|
|
|
|
autocmd BufNewFile,BufRead *.md set filetype=markdown
|
|
|
|
|
autocmd FileType python,vim,yaml setlocal foldmethod=indent
|
|
|
|
|
autocmd FileType qf wincmd J
|
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
|
|
:autocmd! BufNewFile,BufRead * setlocal nowrap
|
|
|
|
|
:autocmd! BufNewFile,BufRead *.txt,*.md,*.tex setlocal wrap
|
|
|
|
|
|
|
|
|
|
autocmd BufNewFile,BufRead ~/.mutt/temp/* set noautoindent filetype=mail wm=0 tw=78 nonumber digraph nolist nofen
|
|
|
|
|
autocmd BufNewFile,BufRead /dev/shm/gopass.* setlocal noswapfile nobackup noundofile
|
|
|
|
|
autocmd FileType help wincmd L
|
|
|
|
|
autocmd FileType fugitive wincmd L
|
|
|
|
|
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
|
|
|
|
|
" autocmd FileType markdown,mkd call Prose()
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
" Mappings {{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
"allow deletion of previously entered data in insert mode
|
|
|
|
|
set backspace=indent,eol,start
|
|
|
|
|
|
|
|
|
|
" When pressing <Leader>cd switch to the directory of the open buffer
|
|
|
|
|
map <Leader>cd :cd %:p:h<CR>
|
|
|
|
|
|
|
|
|
|
"------ Disable Annoying Features ------
|
|
|
|
|
" Wtf is Ex Mode anyways?
|
|
|
|
|
nnoremap Q <nop>
|
|
|
|
|
|
|
|
|
|
" Annoying window
|
|
|
|
|
map q: :q
|
|
|
|
|
|
|
|
|
|
" Accidentally pressing Shift K will no longer open stupid man entry
|
|
|
|
|
noremap K <nop>
|
|
|
|
|
|
|
|
|
|
" Shortcut to close quickfix windows
|
|
|
|
|
nnoremap <silent> <leader>a :windo lcl\|ccl<CR>
|
|
|
|
|
|
|
|
|
|
"------ Buffer Navigation ------
|
|
|
|
|
" <Leader>q Closes the current buffer
|
|
|
|
|
nnoremap <silent> <Leader>q :bdelete<CR>
|
|
|
|
|
|
|
|
|
|
" replace ex mode map and use it for repeating 'q' macro
|
|
|
|
|
nnoremap Q @q
|
|
|
|
|
vnoremap Q :norm @q<cr>
|
|
|
|
|
|
|
|
|
|
" clear the search buffer when hitting return
|
|
|
|
|
nnoremap <silent> <CR> :nohlsearch<CR><CR>
|
|
|
|
|
|
|
|
|
|
if get(g:, 'elite_mode')
|
|
|
|
|
nnoremap <Up> :resize -2<CR>
|
|
|
|
|
nnoremap <Down> :resize +2<CR>
|
|
|
|
|
nnoremap <Left> :vertical resize -2<CR>
|
|
|
|
|
nnoremap <Right> :vertical resize +2<CR>
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
" Easier in-file navigation with Tab and S-Tab
|
|
|
|
|
nnoremap <S-Tab> <C-U>
|
|
|
|
|
nnoremap <Tab> <C-D>
|
|
|
|
|
|
|
|
|
|
" Toggle all folds with F2
|
|
|
|
|
nnoremap <F2> zR
|
|
|
|
|
" nnoremap <F3> zM
|
|
|
|
|
|
|
|
|
|
nnoremap <F3> :PencilToggle<CR>
|
|
|
|
|
nnoremap <F4> :MUcompleteAutoToggle<CR>
|
|
|
|
|
|
|
|
|
|
nmap <F9> i<C-R>=strftime("%Y-%m-%d %H:%M")<CR><Esc>
|
|
|
|
|
imap <F9> <C-R>=strftime("%Y-%m-%d %H:%M")<CR>
|
|
|
|
|
|
|
|
|
|
map <C-t> :TagbarToggle<CR>
|
|
|
|
|
map <C-n> :NERDTreeToggle<CR>
|
|
|
|
|
|
|
|
|
|
" Easier split navigation
|
|
|
|
|
nnoremap <C-J> <C-W><C-J>
|
|
|
|
|
nnoremap <C-K> <C-W><C-K>
|
|
|
|
|
nnoremap <C-L> <C-W><C-L>
|
|
|
|
|
nnoremap <C-H> <C-W><C-H>
|
|
|
|
|
|
|
|
|
|
" switch tabs with Ctrl left and right
|
|
|
|
|
nnoremap <C-right> :tabnext<CR>
|
|
|
|
|
nnoremap <C-left> :tabprevious<CR>
|
|
|
|
|
" and whilst in insert mode
|
|
|
|
|
inoremap <C-right> <Esc>:tabnext<CR>
|
|
|
|
|
inoremap <C-left> <Esc>:tabprevious<CR>
|
|
|
|
|
|
|
|
|
|
"------ Text Editing Utilities ------
|
|
|
|
|
" <Leader>U = Deletes Unwanted empty lines
|
|
|
|
|
nmap <Leader>U :g/^$/d<CR>
|
|
|
|
|
|
|
|
|
|
" <Leader>R = Converts tabs to spaces in document
|
|
|
|
|
nmap <Leader>R :retab<CR>
|
|
|
|
|
|
|
|
|
|
" gq will wrap lines, so gQ will unwrap lines
|
|
|
|
|
nmap gQ VipJ
|
|
|
|
|
|
|
|
|
|
command! -nargs=0 Prose call Prose()
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|