Added some lines to approximate auto closing of brackets and parentheses and turned off `conceal` allowing me to see full links and code fencing
380 lines
15 KiB
VimL
380 lines
15 KiB
VimL
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> .vimrc
|
|
|
|
set nocompatible " be iMproved, required
|
|
set number " turn on line numbers
|
|
set relativenumber " lines are numbered relative to current line
|
|
set scrolloff=10 " number of lines to keep above and below the cursor
|
|
set belloff=all " no sound/flash on errors
|
|
|
|
set autoread " set to auto read when a file is changed from the outside
|
|
set cursorcolumn " highlight current column
|
|
set cursorline " highlight current row
|
|
set incsearch " make search act like search in modern browsers
|
|
set showmatch " show matching brackets when text indicator is over them
|
|
|
|
set term=xterm-256color " LOTS of colors
|
|
set path+=** " Search Globally
|
|
set wildmenu
|
|
|
|
autocmd! bufwritepost .vimrc source ~/.vimrc " When vimrc is edited, reload it
|
|
|
|
" Turn line numbers on/off for active/inactive buffers
|
|
augroup BgHighlight
|
|
autocmd!
|
|
autocmd WinEnter * set number
|
|
autocmd WinEnter * set relativenumber
|
|
autocmd WinLeave * set nonumber
|
|
autocmd WinLeave * set norelativenumber
|
|
augroup end
|
|
|
|
syntax enable
|
|
filetype plugin on
|
|
|
|
" Enable Omnicomplete features
|
|
set omnifunc=syntaxcomplete#Complete
|
|
|
|
" Personal Notes settings
|
|
" export NOTES_DIR=<your notes directory>
|
|
" before use
|
|
|
|
" Go to index of notes and set working directory to my notes
|
|
nnoremap <leader>ww :e $NOTES_DIR/Index.md<CR>:cd $NOTES_DIR<CR>
|
|
|
|
" <leader>[ to grep inside Notes files
|
|
" I got the idea from here [step 6: search contents of your notes](https://www.edwinwenink.xyz/posts/42-vim_notetaking/#step-6-search-contents-of-your-notes)
|
|
" but I'm not sold on the idea yet.
|
|
command! -nargs=1 Ngrep vimgrep "<args>" $NOTES_DIR/**/*.md | copen
|
|
nnoremap <leader>[ :Ngrep
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> From Vim Zero: https://www.oliversherouse.com/2017/08/21/vim_zero.html
|
|
|
|
" General
|
|
let mapleader = '\'
|
|
set hidden " Allow background buffers without saving
|
|
set splitright " Split to right by default
|
|
set formatoptions-=ro " Turn off autoinsert of comment char on newline
|
|
|
|
" Text Wrapping
|
|
set textwidth=120 " Set textwidth
|
|
set colorcolumn= " disable colorzing <textwidth> column
|
|
set nowrap " turn off word wrapping at <textwidth>
|
|
|
|
" Search and Substitute
|
|
set gdefault " use global flag by default in s: commands
|
|
set hlsearch " highlight searches
|
|
set ignorecase " ignore case in searches
|
|
set smartcase " don't ignore capitals in searches
|
|
|
|
" Tabs
|
|
set tabstop=4
|
|
set softtabstop=4
|
|
set shiftwidth=4
|
|
set expandtab
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Plugins with VimPlug
|
|
" A minimalist Vim plugin manager
|
|
" https://github.com/junegunn/vim-plug
|
|
|
|
if has("win32")
|
|
call plug#begin('~/vimfiles/plugged')
|
|
else
|
|
call plug#begin('~/.vim/plugged')
|
|
endif
|
|
|
|
" Think of sensible.vim as one step above 'nocompatible' mode: a universal set of defaults that (hopefully) everyone can agree on
|
|
" https://github.com/tpope/vim-sensible
|
|
Plug 'tpope/vim-sensible'
|
|
|
|
" One stop shop for vim colorschemes
|
|
" https://github.com/flazz/vim-colorschemes
|
|
Plug 'flazz/vim-colorschemes'
|
|
|
|
" Command Line Fuzzy Finder
|
|
" https://github.com/junegunn/fzf
|
|
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
|
|
Plug 'junegunn/fzf.vim'
|
|
|
|
" Fugitive is the premier Vim plugin for Git. Or maybe it's the premier Git plugin for Vim? Either way,
|
|
" it's so awesome, it should be illegal. That's why it's called Fugitive
|
|
" https://github.com/tpope/vim-fugitivefugitive.vim for git
|
|
Plug 'tpope/vim-fugitive'
|
|
|
|
" ALE displays warnings and errors in files being edited before being saved back to the filesystem
|
|
" https://github.com/dense-analysis/ale
|
|
"Plug 'dense-analysis/ale'
|
|
|
|
" Vim Markdown
|
|
" Suggestions from [Writing Markdown in Vim](https://codeinthehole.com/tips/writing-markdown-in-vim/)
|
|
" [Vim Markdown](https://github.com/preservim/vim-markdown)
|
|
Plug 'godlygeek/tabular'
|
|
Plug 'preservim/vim-markdown'
|
|
|
|
" Vim Spellsync
|
|
" Magically rebuild Vim spell files if word lists are modified outside of Vim
|
|
" https://github.com/micarmst/vim-spellsync
|
|
Plug 'micarmst/vim-spellsync'
|
|
|
|
call plug#end()
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Plugin Options
|
|
" Options and overrides for installed plugins
|
|
|
|
" Vim Markdown
|
|
" Markdown syntax highlighting for specified languages
|
|
let g:markdown_fenced_languages = ['html', 'python', 'ini', 'vim', 'bash', 'yaml']
|
|
" Set default conceallevel to hide links and some formatting
|
|
set conceallevel=0
|
|
" strikethrough
|
|
let g:vim_markdown_strikethrough = 1
|
|
" follow anchors - allow <ge> to follow anchors just like links
|
|
let g:vim_markdown_follow_anchor = 1
|
|
" multi-line bullets in markdown
|
|
" [Reference](https://vimdoc.sourceforge.net/htmldoc/change.html#fo-table)
|
|
" j - remove a comment leader when joining lines.
|
|
" l - long lines are not broken in insert mode
|
|
" n - Recognize numbered lists
|
|
" r - Continue comments when pressing Enter
|
|
" t - autowrap lines using text width value
|
|
autocmd FileType markdown set formatoptions=jlnrt
|
|
" Open folds by default
|
|
au BufWinEnter * normal zR
|
|
|
|
" ALE
|
|
"let b:ale_linters = ['markdownlint', 'vale']
|
|
"let b:ale_fixers = ['prettier']
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Colors
|
|
" Term GUI Colors
|
|
" Testing different colorschemes
|
|
" Only the last uncommented colorscheme will be used
|
|
"colorscheme slate
|
|
"colorscheme marklar
|
|
colorscheme automation
|
|
"colorscheme advantage
|
|
|
|
hi cursorcolumn cterm=NONE ctermbg=black ctermfg=white
|
|
hi visual cterm=NONE ctermbg=darkyellow ctermfg=white
|
|
|
|
set fillchars=vert:│,fold:┈,diff:┈
|
|
" In split windows - active buffer status bar is green, inactive is yellow
|
|
hi StatusLine ctermfg=white ctermbg=darkgreen cterm=bold
|
|
hi StatusLineNC ctermfg=white ctermbg=darkyellow cterm=none
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" => Statusline
|
|
" Ideas from http://got-ravings.blogspot.com/2008/08/vim-pr0n-making-statuslines-that-own.html
|
|
|
|
set laststatus=2 " always show statusline
|
|
set statusline= " clear on reload
|
|
set statusline+=[\ b%n\ ] " buffer number
|
|
set statusline+=\ %f " filename
|
|
set statusline+=\ [%{strlen(&fenc)?&fenc:'none'}, " file encoding
|
|
set statusline+=\ %{&ff}] " file format
|
|
set statusline+=\ %y " filetype
|
|
set statusline+=\ %H\ %m\ %r\ %W " flags
|
|
set statusline+=%= " left/right separator
|
|
set statusline+=l:%l/%L " cursor line/total lines
|
|
set statusline+=\ c:%c " cursor column
|
|
set statusline+=\ %P " percent through file
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" => Keymaps: Highlights
|
|
|
|
" <leader><leader> to turn off search highlight
|
|
nnoremap <leader><space> :nohls <enter>
|
|
|
|
" <leader>C to toggle row/column highlight
|
|
nnoremap <leader>C :set cursorline! cursorcolumn!<CR>
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Keymaps: Buffers & Panes
|
|
" BUFFERS with ctrl
|
|
" PANES with <leader>
|
|
" when possible
|
|
|
|
" <c-h/l> to navigate BUFFERS
|
|
nnoremap <c-h> :bp <enter>
|
|
nnoremap <c-l> :bn <enter>
|
|
|
|
" <c-b> to open FZF buffers
|
|
map <c-b> :Buffers<CR>
|
|
|
|
" <c-s> to save buffer
|
|
nnoremap <c-s> :w <enter>
|
|
|
|
" <c-q> to quit vim
|
|
nnoremap <c-q> :q <enter>
|
|
|
|
" <c-a> to abandon buffer
|
|
nnoremap <c-a> :bd! <enter>
|
|
|
|
" <c-c>c to close buffer
|
|
nnoremap <c-c> :bd <enter>
|
|
|
|
" <c-x> to bring up the copy buffer
|
|
noremap <c-x> "+
|
|
|
|
" <F5> to refresh buffer
|
|
nnoremap <F5> <c-r>:checktime <CR>
|
|
|
|
" <leader>h/j/k/l to navigate PANES
|
|
nnoremap <leader>h <c-w><c-h>
|
|
nnoremap <leader>l <c-w><c-l>
|
|
nnoremap <leader>j <c-w><c-j>
|
|
nnoremap <leader>k <c-w><c-k>
|
|
|
|
" <leader>c to close pane
|
|
nnoremap <leader>c <c-w>q
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Keymaps
|
|
|
|
" <leader><leader> to open FZF files
|
|
map <leader><leader> :Files<CR>
|
|
|
|
" <c-r> to open registers
|
|
map <c-r> :registers<CR>
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Keymaps: Text bubbling (http://vimcasts.org/episodes/bubbling-text/)
|
|
|
|
" Bubble single lines
|
|
nmap <c-k> ddkP
|
|
nmap <c-j> ddp
|
|
|
|
" Bubble multiple lines
|
|
vmap <c-k> xkP`[V`]
|
|
vmap <c-j> xp`[V`]
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Keymaps: Movement keys
|
|
|
|
" Navigate according to displayed lines, not physical lines
|
|
nnoremap j gj
|
|
nnoremap k gk
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Keymaps: Date and Time stamps
|
|
|
|
imap <F2> <C-R>=strftime("%Y-%m-%d %H:%M:%S")<CR>
|
|
imap <F3> <C-R>=strftime("%Y-%m-%d %a")<CR>
|
|
imap <F4> <C-R>=strftime("%H:%M")<CR>
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Keymaps: Autoclosing
|
|
" Autoclose brackets, parens...etc
|
|
" from: https://stackoverflow.com/a/34992101
|
|
inoremap " ""<left>
|
|
inoremap ' ''<left>
|
|
inoremap ( ()<left>
|
|
inoremap [ []<left>
|
|
inoremap { {}<left>
|
|
inoremap {<CR> {<CR>}<ESC>O
|
|
inoremap {;<CR> {<CR>};<ESC>O
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Spellcheck
|
|
|
|
" Toggle spell check highlights with <F10>
|
|
nnoremap <F10> :setlocal spell! spelllang=en_us<CR>
|
|
|
|
" auto-complete spelling suggestions with <ctrl-p>
|
|
set complete+=kspell
|
|
|
|
" ==> Spellcheck: only certain file types
|
|
" https://robots.thoughtbot.com/vim-spell-checking
|
|
|
|
" turn off for files with no extension
|
|
autocmd BufRead,BufNewFile * setlocal nospell
|
|
|
|
" turn off for files with any extension
|
|
autocmd BufRead,BufNewFile *.* setlocal nospell
|
|
|
|
" turn on for markdown files
|
|
autocmd BufRead,BufNewFile *.md setlocal spell
|
|
|
|
" turn on for text files
|
|
autocmd BufRead,BufNewFile *.txt setlocal spell
|
|
|
|
" ==> Spellcheck Colors
|
|
" I hate spellcheck's default colors
|
|
" (http://stackoverflow.com/questions/6008921/how-do-i-change-the-highlight-style-in-vim-spellcheck)
|
|
" Vim Colors: (http://alvinalexander.com/linux/vi-vim-editor-color-scheme-syntax)
|
|
hi clear SpellBad
|
|
hi clear SpellCap
|
|
hi clear SpellErrors
|
|
hi clear SpellLocal
|
|
hi clear SpellRare
|
|
hi SpellBad cterm=underline ctermbg=black ctermfg=red
|
|
hi SpellCap cterm=underline ctermbg=black ctermfg=red
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Templates: markdown documents (.md)
|
|
|
|
autocmd BufNewFile *.md so $HOME/.vim/templates/md
|
|
autocmd BufNewFile *.md %s/title/\=expand('%:t:r')/g
|
|
autocmd BufNewFile *.md exe "g/^- Created :.*/s//- Created : " .strftime("%Y-%m-%d")
|
|
autocmd BufNewFile *.md exe "normal Go"
|
|
autocmd BufWritePre,filewritepre *.md execute "normal ma"
|
|
autocmd BufWritePre,filewritepre *.md exe "g/^- Updated :.*/s//- Updated : " .strftime("%Y-%m-%d %H:%M")
|
|
autocmd bufWritePost,filewritepost *.md execute "normal `a"
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Templates: shell scripts (.sh)
|
|
|
|
autocmd BufNewFile *.sh so $HOME/.vim/templates/sh
|
|
autocmd BufNewFile *.sh %s/FILE:.*/\='FILE: '.expand('%:t:r')/e
|
|
autocmd BufNewFile *.sh exe "g/CREATED:.*/s//CREATED: " .strftime("%c")
|
|
autocmd BufNewFile *.sh exe "normal Go"
|
|
autocmd BufWritePre,filewritepre *.sh execute "normal ma"
|
|
autocmd BufWritePre,filewritepre *.sh exe "g/UPDATED:.*/s//UPDATED: " .strftime("%c")
|
|
autocmd bufWritePost,filewritepost *.sh execute "normal `a"
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> Snippets
|
|
" Pasting pre-made things
|
|
|
|
" section banner
|
|
nnoremap ,ban :-1read $HOME/.vim/templates/banner<CR>jA
|
|
|
|
" section begin/end
|
|
nnoremap ,begend :-1read $HOME/.vim/templates/begend<CR>jA
|
|
|
|
" section shell script header
|
|
"nnoremap ,sh :-1read $HOME/.vim/templates/sh<CR>jA
|
|
|
|
" section readinglist header
|
|
nnoremap ,rl :0read $HOME/.vim/templates/readinglist<CR> <bar> :1<CR>dd $
|
|
|
|
" section markdown file header
|
|
nnoremap ,md :0read $HOME/.vim/templates/md<CR> <bar> :1<CR>dd <bar> :%s/title/\=expand('%:t:r')/g<CR>
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> NetrwTreeListing readonly fix (https://vi.stackexchange.com/a/13012)
|
|
" Per default, netrw leaves unmodified buffers open. This autocommand
|
|
" deletes netrw's buffer once it's hidden (using ':q', for example)
|
|
|
|
autocmd FileType netrw setl bufhidden=delete
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> yaml stuff (https://lornajane.net/posts/2018/vim-settings-for-working-with-yaml)
|
|
"
|
|
"autocmd BufNewFile,BufReadPost *.{yaml,yml} set filetype=yaml
|
|
"autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
|
|
|
|
" ---------------------------------------------------------------------------------------------------------------------
|
|
" ==> VimWiki
|
|
" Use MarkDown
|
|
" Default directory
|
|
"let g:vimwiki_list = [{'path': '$HOME/repos/thevimwiki/', 'syntax': 'markdown', 'ext': '.md'}]
|
|
"let g:vimwiki_global_ext = 0
|
|
"let g:vimwiki_autowriteall = 1
|
|
"au FileType vimwiki setlocal shiftwidth=6 tabstop=6 noexpandtab
|
|
|