212 lines
9.5 KiB
VimL
212 lines
9.5 KiB
VimL
set nocompatible " be iMproved, required
|
|
set number " turn on line numbers
|
|
set relativenumber " lines are numbered relative to current line
|
|
set scrolloff=8 " number of lines to keep above and below the cursor
|
|
set noerrorbells visualbell t_vb= " no sound on errors
|
|
autocmd! bufwritepost .vimrc source ~/.vimrc " When vimrc is edited, reload it
|
|
|
|
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
|
|
|
|
|
|
" ----------------------------------------------------------------------------------------------------
|
|
" From Vim Zero: https://www.oliversherouse.com/2017/08/21/vim_zero.html
|
|
" General
|
|
let mapleader = ','
|
|
|
|
set hidden " Allow background buffers without saving
|
|
set spell spelllang=en_us
|
|
set splitright " Split to right by default
|
|
|
|
" Text Wrapping
|
|
set textwidth=119
|
|
set colorcolumn=120
|
|
set nowrap
|
|
|
|
" Search and Substitute
|
|
set gdefault " use global flag by default in s: commands
|
|
set hlsearch " highlight searches
|
|
set ignorecase
|
|
set smartcase " don't ignore capitals in searches
|
|
nnoremap <leader><space> :nohls <enter>
|
|
|
|
" Tabs
|
|
set tabstop=4
|
|
set softtabstop=4
|
|
set shiftwidth=4
|
|
set expandtab
|
|
|
|
" Mappings
|
|
" <ctrl>-H to move to previous buffer
|
|
nnoremap <C-H> :bp <enter>
|
|
" <ctrl>-L to move to next buffer
|
|
nnoremap <C-L> :bn <enter>
|
|
" comma-w to save buffer
|
|
nnoremap <Leader>w :w <enter>
|
|
" comma-q to quit buffer
|
|
nnoremap <Leader>q :bd <enter>
|
|
" bring up the copy buffer
|
|
noremap <Leader>x "+
|
|
|
|
" With ripgrep and FZF
|
|
" <leader> p to open files
|
|
map <Leader>p :Files<CR>
|
|
" search buffers
|
|
nmap ; :Buffers<CR>
|
|
|
|
" Plugins
|
|
|
|
"" Installation with VimPlug
|
|
if has("win32")
|
|
call plug#begin('~/vimfiles/plugged')
|
|
else
|
|
call plug#begin('~/.vim/plugged')
|
|
endif
|
|
|
|
""" Basics
|
|
Plug 'tpope/vim-sensible'
|
|
Plug 'sheerun/vim-polyglot'
|
|
Plug 'flazz/vim-colorschemes'
|
|
|
|
""" General Functionality
|
|
Plug 'lifepillar/vim-mucomplete'
|
|
Plug 'scrooloose/syntastic'
|
|
Plug 'tpope/vim-commentary'
|
|
|
|
""" Particular Functionality
|
|
Plug 'vim-pandoc/vim-pandoc-syntax'
|
|
Plug 'godlygeek/tabular'
|
|
|
|
""" Command Line Fuzzy Finder - https://github.com/junegunn/fzf
|
|
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
|
|
Plug 'junegunn/fzf.vim'
|
|
|
|
call plug#end()
|
|
|
|
|
|
"" Colors
|
|
"set termguicolors
|
|
colorscheme slate
|
|
|
|
"" Autocompletion
|
|
set completeopt=menuone,noinsert,noselect
|
|
set shortmess+=c " Turn off completion messages
|
|
|
|
inoremap <expr> <c-e> mucomplete#popup_exit("\<c-e>")
|
|
inoremap <expr> <c-y> mucomplete#popup_exit("\<c-y>")
|
|
inoremap <expr> <cr> mucomplete#popup_exit("\<cr>")
|
|
|
|
let g:mucomplete#enable_auto_at_startup = 1
|
|
|
|
"" Pandoc
|
|
augroup pandoc_syntax
|
|
au! BufNewFile,BufFilePre,BufRead *.md set filetype=markdown.pandoc
|
|
au! BufNewFile,BufFilePre,BufRead *.markdown set filetype=markdown.pandoc
|
|
augroup END
|
|
|
|
let g:pandoc#syntax#conceal#use = 0
|
|
let g:pandoc#syntax#codeblocks#embeds#langs = ['python', 'vim', 'make', 'bash=sh', 'html', 'css', 'scss', 'javascript']
|
|
" ----------------------------------------------------------------------------------------------------
|
|
|
|
" ----------------------------------------------------------------------------------------------------
|
|
" => 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+=[%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: Doing more things at once
|
|
" -----------------------------------------------------------------------------------------------------
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" ===> 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`]
|
|
" -----------------------------------------------------------------------------------------------------
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" ===> More sane movement keys
|
|
nnoremap j gj
|
|
nnoremap k gk
|
|
" -----------------------------------------------------------------------------------------------------
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" ===> Spellcheck
|
|
" Horrible colors! I hate spellchecker's red highlight, so I changed it
|
|
" (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,bold ctermfg=Red
|
|
hi SpellCap cterm=underline,bold ctermfg=Red
|
|
hi SpellErrors cterm=underline,bold ctermfg=Red
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" ===> Spell check 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
|
|
autocmd BufRead,BufNewFile *.mkd setlocal spell
|
|
autocmd BufRead,BufNewFile *.markdown setlocal spell
|
|
" turn on for text files
|
|
autocmd BufRead,BufNewFile *.txt setlocal spell
|
|
" -----------------------------------------------------------------------------------------------------
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" => Templates
|
|
" Doing special things with certain filetypes
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" shell scripts (.sh) ------------------------------------------------
|
|
autocmd BufNewFile *.sh so $HOME/.vim/templates/sh
|
|
autocmd BufNewFile *.sh %s/FILE:.*/\='FILE: '.expand('%')/e
|
|
autocmd BufNewFile *.sh exe "g/AUTHOR:.*/s//AUTHOR: C Hawley"
|
|
autocmd BufNewFile *.sh exe "g/CREATED:.*/s//CREATED: " .strftime("%c")
|
|
autocmd BufWritePre,filewritepre *.sh execute "normal ma"
|
|
autocmd BufWritePre,filewritepre *.sh exe "g/REVISION:.*/s//REVISION: " .strftime("%c")
|
|
autocmd bufWritePost,filewritepost *.sh execute "normal `a"
|
|
" python scripts (.py) ------------------------------------------------
|
|
autocmd BufNewFile *.py so $HOME/.vim/templates/py
|
|
autocmd BufNewFile *.py %s/FILE:.*/\='FILE: '.expand('%')/e
|
|
autocmd BufNewFile *.py exe "g/AUTHOR:.*/s//AUTHOR: C Hawley"
|
|
autocmd BufNewFile *.py exe "g/CREATED:.*/s//CREATED: " .strftime("%c")
|
|
autocmd BufWritePre,filewritepre *.py execute "normal ma"
|
|
autocmd BufWritePre,filewritepre *.py exe "g/REVISION:.*/s//REVISION: " .strftime("%c")
|
|
autocmd bufWritePost,filewritepost *.py execute "normal `a"
|
|
" markdown documents (.md,*.mkd) -------------------------------------
|
|
autocmd BufNewFile *.md,*.mkd so $HOME/.vim/templates/md
|
|
autocmd BufNewFile *.md,*.mkd exe "g/Created:.*/s//Created: " .strftime("%c")
|
|
autocmd BufWritePre,filewritepre *.md,*.mkd execute "normal ma"
|
|
autocmd BufWritePre,filewritepre *.md,*.mkd exe "g/Updated:.*/s//Updated: " .strftime("%c")
|
|
autocmd bufWritePost,filewritepost *.md,*.mkd execute "normal `a"
|
|
" markdown documents (.markdown - jekyll blog) -----------------------
|
|
autocmd BufNewFile *.markdown so $HOME/.vim/templates/markdown
|
|
autocmd BufNewFile *.markdown exe "g/date:.*/s//date: " .strftime("%c")
|
|
autocmd BufWritePre,filewritepre *.markdown execute "normal ma"
|
|
autocmd BufWritePre,filewritepre *.markdown exe "g/Updated:.*/s//Updated: " .strftime("%c")
|
|
autocmd bufWritePost,filewritepost *.markdown execute "normal `a"
|
|
|