332 lines
8.3 KiB
Cheetah
332 lines
8.3 KiB
Cheetah
" 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
|
||
|
||
" Plugins {{ "{{{" }}
|
||
call plug#begin('~/.vim/plugged')
|
||
"###########
|
||
" Utility
|
||
"###########
|
||
Plug '~/.fzf'
|
||
Plug 'lifepillar/vim-mucomplete' "{{ "{{{" }}
|
||
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)
|
||
"{{ "}}}" }}
|
||
Plug 'junegunn/fzf.vim' "{{ "{{{" }}
|
||
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>
|
||
"{{ "}}}" }}
|
||
Plug 'easymotion/vim-easymotion' "{{ "{{{" }}
|
||
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)
|
||
"{{ "}}}" }}
|
||
|
||
Plug 'reedes/vim-lexical' "{{ "{{{" }}
|
||
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'
|
||
"{{ "}}}" }}
|
||
Plug 'reedes/vim-pencil' "{{ "{{{" }}
|
||
let g:pencil#map#suspend_af = 'K'
|
||
"{{ "}}}" }}
|
||
|
||
"#########################
|
||
" Theme / Interface
|
||
"#########################
|
||
Plug 'itchyny/lightline.vim' "{{ "{{{" }}
|
||
let g:lightline = {
|
||
\ 'colorscheme': 'nord',
|
||
\ 'active': {
|
||
\ 'left': [ [ 'mode', 'paste' ],
|
||
\ [ 'gitbranch', 'readonly', 'filename', 'modified', 'pencil' ] ]
|
||
\ },
|
||
\ 'component_function': {
|
||
\ 'gitbranch': 'fugitive#statusline',
|
||
\ 'pencil': 'PencilMode'
|
||
\ },
|
||
\ }
|
||
"{{ "}}}" }}
|
||
Plug 'arcticicestudio/nord-vim'
|
||
|
||
call plug#end()
|
||
"{{ "}}}" }}
|
||
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
|
||
set history={{ .chezmoi.gid }}
|
||
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
|
||
|
||
if has('gui_running')
|
||
set guifont={{ .guifont }}
|
||
" 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
|
||
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()
|
||
|
||
"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()
|