dotfiles/dot_vimrc.tmpl

332 lines
8.3 KiB
Cheetah
Raw Permalink Normal View History

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 = {
\ 'colorscheme': 'nord',
2023-02-11 14:11:00 +01:00
\ 'active': {
\ 'left': [ [ 'mode', 'paste' ],
\ [ 'gitbranch', 'readonly', 'filename', 'modified', 'pencil' ] ]
\ },
\ 'component_function': {
\ 'gitbranch': 'fugitive#statusline',
\ 'pencil': 'PencilMode'
2023-02-11 14:11:00 +01:00
\ },
\ }
2023-02-14 08:36:53 +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
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
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()
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()