230 lines
9.2 KiB
VimL
230 lines
9.2 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=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 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
|
|
|
|
" ----------------------------------------------------------------------------------------------------
|
|
" ==> 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 '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
|
|
|
|
let s:python_version=3
|
|
echomsg 'Using python'.s:python_version
|
|
set completeopt=menuone,noinsert,noselect
|
|
set shortmess+=c " Turn off completion messages
|
|
|
|
" ----------------------------------------------------------------------------------------------------
|
|
" ==> 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
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" ===> Keymaps: Buffers
|
|
|
|
" <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 "+
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" ===> Keymaps: With ripgrep and FZF
|
|
|
|
" <leader> p to open files
|
|
map <Leader>p :Files<CR>
|
|
" search buffers
|
|
nmap ; :Buffers<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: More sane movement keys
|
|
|
|
nnoremap j gj
|
|
nnoremap k gk
|
|
" -----------------------------------------------------------------------------------------------------
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" ===> Keymaps: Date and Time stamps
|
|
|
|
imap <F3> <C-R>=strftime("%Y-%m-%d %a")<CR>
|
|
imap <F4> <C-R>=strftime("%H:%M")<CR>
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" ===> 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)
|
|
|
|
set spell spelllang=en_us
|
|
set spellfile=$HOME/Documents/en.utf-8.add
|
|
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=cyan
|
|
hi SpellErrors cterm=underline,bold ctermfg=cyan
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" ===> 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
|
|
autocmd BufRead,BufNewFile *.mkd setlocal spell
|
|
" turn on for text files
|
|
autocmd BufRead,BufNewFile *.txt setlocal spell
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" => Templates
|
|
" Doing special things with certain filetypes
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" ==> Templates: 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"
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" ==> Templates: 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"
|
|
|
|
" -----------------------------------------------------------------------------------------------------
|
|
" ==> Templates: 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"
|
|
|