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 '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 '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
|
|
|
|
"{{ "}}}" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
|
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
|
|
|
|
"{{ "}}}" }}
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
"#########################
|
|
|
|
|
" Theme / Interface
|
|
|
|
|
"#########################
|
2023-02-14 08:36:53 +01:00
|
|
|
|
Plug 'itchyny/lightline.vim' "{{ "{{{" }}
|
2023-02-11 14:11:00 +01:00
|
|
|
|
let g:lightline = {
|
2024-03-26 09:00:57 +01:00
|
|
|
|
\ 'colorscheme': 'nord',
|
2023-02-11 14:11:00 +01:00
|
|
|
|
\ 'active': {
|
|
|
|
|
\ 'left': [ [ 'mode', 'paste' ],
|
|
|
|
|
\ [ 'gitbranch', 'readonly', 'filename', 'modified', 'pencil' ] ]
|
|
|
|
|
\ },
|
|
|
|
|
\ 'component_function': {
|
|
|
|
|
\ 'gitbranch': 'fugitive#statusline',
|
2024-03-26 09:00:57 +01:00
|
|
|
|
\ 'pencil': 'PencilMode'
|
2023-02-11 14:11:00 +01:00
|
|
|
|
\ },
|
|
|
|
|
\ }
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
2024-03-26 09:00:57 +01:00
|
|
|
|
Plug 'arcticicestudio/nord-vim'
|
2023-02-11 14:11:00 +01:00
|
|
|
|
|
|
|
|
|
call plug#end()
|
2023-02-14 08:36:53 +01:00
|
|
|
|
"{{ "}}}" }}
|
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
|
2024-05-07 07:18:37 +02:00
|
|
|
|
|
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
|
2024-03-26 09:00:57 +01:00
|
|
|
|
colorscheme nord
|
2023-02-11 14:11:00 +01:00
|
|
|
|
set background=dark
|
|
|
|
|
|
|
|
|
|
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()
|
2024-05-07 07:18:37 +02:00
|
|
|
|
|
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()
|