chore: updated vim config
33530285
5 file(s) · +100 −2
| 1 | + | " Vim has no built-in .mdx detection, so map it onto markdown while keeping |
|
| 2 | + | " an mdx component for filetype-specific autocommands and plugins. |
|
| 3 | + | augroup filetypedetect_mdx |
|
| 4 | + | autocmd! |
|
| 5 | + | autocmd BufNewFile,BufRead *.mdx setfiletype markdown.mdx |
|
| 6 | + | augroup END |
|
| 7 | + | ||
| 8 | + | " Prose files: soft wrap at word boundaries, spell check |
|
| 9 | + | augroup prose_settings |
|
| 10 | + | autocmd! |
|
| 11 | + | autocmd FileType markdown,mdx,text call s:ProseSettings() |
|
| 12 | + | augroup END |
|
| 13 | + | ||
| 14 | + | function! s:ProseSettings() abort |
|
| 15 | + | setlocal wrap |
|
| 16 | + | setlocal linebreak " Break at word boundaries |
|
| 17 | + | setlocal spell |
|
| 18 | + | endfunction |
| 12 | 12 | ||
| 13 | 13 | let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}} |
|
| 14 | 14 | ||
| 15 | - | let s:p.normal.left = [ [ s:base00, s:base0A ], [ s:base05, s:base02 ] ] |
|
| 15 | + | let s:p.normal.left = [ [ s:base00, s:base0B ], [ s:base05, s:base02 ] ] |
|
| 16 | 16 | let s:p.normal.middle = [ [ s:base04, s:base01 ] ] |
|
| 17 | 17 | let s:p.normal.right = [ [ s:base00, s:base04 ], [ s:base05, s:base02 ], [ s:base04, s:base01 ] ] |
|
| 18 | 18 | let s:p.normal.error = [ [ s:base00, s:base0A ] ] |
|
| 19 | 19 | let s:p.normal.warning = [ [ s:base00, s:base0B ] ] |
|
| 20 | 20 | ||
| 21 | - | let s:p.insert.left = [ [ s:base00, s:base0B ], [ s:base05, s:base02 ] ] |
|
| 21 | + | let s:p.insert.left = [ [ s:base00, s:base0A ], [ s:base05, s:base02 ] ] |
|
| 22 | 22 | let s:p.replace.left = [ [ s:base00, s:base08 ], [ s:base05, s:base02 ] ] |
|
| 23 | 23 | let s:p.visual.left = [ [ s:base00, s:base05 ], [ s:base05, s:base02 ] ] |
|
| 24 | 24 |
| 1 | 1 | let mapleader = " " |
|
| 2 | 2 | ||
| 3 | 3 | noremap <leader>e :Ex<CR> |
|
| 4 | + | noremap <leader>h :noh<CR> |
|
| 5 | + | noremap <S-l> :bnext<CR> |
|
| 6 | + | noremap <S-h> :bprevious<CR> |
|
| 7 | + | noremap <leader>t :tabnext<CR> |
|
| 8 | + | noremap <leader>c :Bclose<cr>:tabclose<cr>gT |
|
| 9 | + | noremap <C-d> <C-d>zz |
|
| 10 | + | noremap <C-u> <C-u>zz |
|
| 11 | + | ||
| 12 | + | noremap <leader>q :e ~/buffer.md<CR> |
|
| 13 | + | ||
| 14 | + | noremap <C-j> <C-W>j |
|
| 15 | + | noremap <C-k> <C-W>k |
|
| 16 | + | noremap <C-h> <C-W>h |
|
| 17 | + | noremap <C-l> <C-W>l |
|
| 18 | + | ||
| 19 | + | " Spelling suggestions (requires fzf) |
|
| 20 | + | function! s:SpellReplace(word, choice) abort |
|
| 21 | + | execute 'normal! ciw' . a:choice |
|
| 22 | + | stopinsert |
|
| 23 | + | endfunction |
|
| 24 | + | ||
| 25 | + | function! s:SpellSuggest() abort |
|
| 26 | + | let l:word = expand('<cword>') |
|
| 27 | + | if empty(l:word) |
|
| 28 | + | return |
|
| 29 | + | endif |
|
| 30 | + | call fzf#run(fzf#wrap({ |
|
| 31 | + | \ 'source': spellsuggest(l:word, 25), |
|
| 32 | + | \ 'sink': function('s:SpellReplace', [l:word]), |
|
| 33 | + | \ 'options': ['--prompt', 'Spelling: ' . l:word . '> '] |
|
| 34 | + | \ })) |
|
| 35 | + | endfunction |
|
| 36 | + | ||
| 37 | + | nnoremap <silent> <leader>s :call <SID>SpellSuggest()<CR> |
|
| 38 | + | ||
| 39 | + | command! Bclose call <SID>BufcloseCloseIt() |
|
| 40 | + | function! <SID>BufcloseCloseIt() |
|
| 41 | + | let l:currentBufNum = bufnr("%") |
|
| 42 | + | let l:alternateBufNum = bufnr("#") |
|
| 43 | + | ||
| 44 | + | if buflisted(l:alternateBufNum) |
|
| 45 | + | buffer # |
|
| 46 | + | else |
|
| 47 | + | bnext |
|
| 48 | + | endif |
|
| 49 | + | ||
| 50 | + | if bufnr("%") == l:currentBufNum |
|
| 51 | + | new |
|
| 52 | + | endif |
|
| 53 | + | ||
| 54 | + | if buflisted(l:currentBufNum) |
|
| 55 | + | execute("bdelete! ".l:currentBufNum) |
|
| 56 | + | endif |
|
| 57 | + | endfunction |
| 8 | 8 | set smartindent |
|
| 9 | 9 | set showmatch |
|
| 10 | 10 | set backspace=indent,eol,start |
|
| 11 | + | set autoread |
|
| 12 | + | set lazyredraw |
|
| 11 | 13 | syntax on |
|
| 12 | 14 | set termguicolors |
|
| 15 | + | set cursorline |
|
| 13 | 16 | set shell=/bin/zsh |
|
| 14 | 17 | set noshowmode |
|
| 15 | 18 | set signcolumn=yes |
|
| 19 | + | " Search Options |
|
| 20 | + | set hlsearch " Search highlighting |
|
| 21 | + | set incsearch " Incremental search |
|
| 22 | + | set ignorecase " Non case sensitive searching |
|
| 23 | + | set smartcase " Auto switch to case-sensitive if capital used |
|
| 16 | 24 | ||
| 25 | + | set mouse=a "Enabled mouse for scrolling |
|
| 26 | + | set spell |
|
| 27 | + | " System clipboard: * register on macOS, + when xterm_clipboard is built in |
|
| 28 | + | if has('unnamedplus') |
|
| 29 | + | set clipboard=unnamedplus |
|
| 30 | + | else |
|
| 31 | + | set clipboard=unnamed |
|
| 32 | + | endif |
|
| 33 | + | ||
| 34 | + | set noerrorbells |
|
| 35 | + | set novisualbell |
|
| 36 | + | set t_vb= |
|
| 37 | + | set tm=500 |
|
| 38 | + | ||
| 39 | + | set nobackup |
|
| 40 | + | set nowb |
|
| 41 | + | set noswapfile |
| 1 | 1 | source ~/.vim/options.vim |
|
| 2 | + | source ~/.vim/autocmds.vim |
|
| 2 | 3 | source ~/.vim/plugins.vim |
|
| 3 | 4 | source ~/.vim/keybinds.vim |
|
| 4 | 5 | source ~/.vim/fzf.vim |