vim/vimrc

241 lines
7.0 KiB
VimL

" __ ___ ____ __ _ _
" \ \ / (_)_ __ ___ | _ \ ___ / _| __ _ _ _| | |_ ___
" \ \ / /| | '_ ` _ \ | | | |/ _ \ |_ / _` | | | | | __/ __|
" \ V / | | | | | | | | |_| | __/ _| (_| | |_| | | |_\__ \
" \_/ |_|_| |_| |_| |____/ \___|_| \__,_|\__,_|_|\__|___/
" Default Vim options. Some have been modified.
" These used to be loaded through 'source $VIMRUNTIME/defaults.vim'
" Use Vim settings, rather than Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
" Avoid side effects when it was already reset.
if &compatible
set nocompatible
endif
" When the +eval feature is missing, the set command above will be skipped.
" Use a trick to reset compatible only when the +eval feature is missing.
silent! while 0
set nocompatible
silent! endwhile
" Allow backspacing over everything in insert mode.
set backspace=indent,eol,start
set history=200 " keep 200 lines of command line history
set ruler " show the cursor position all the time
set showcmd " display incomplete commands
set wildmenu " display completion matches in a status line
set ttimeout " time out for key codes
set ttimeoutlen=100 " wait up to 100ms after Esc for special key
" Show @@@ in the last line if it is truncated.
set display=truncate
" Show a few lines of context around the cursor. Note that this makes the
" text scroll if you mouse-click near the start or end of the window.
set scrolloff=5
" Do incremental searching when it's possible to timeout.
if has('reltime')
set incsearch
endif
" Do not recognize octal numbers for Ctrl-A and Ctrl-X, most users find it
" confusing.
set nrformats-=octal
" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries.
if has('win32')
set guioptions-=t
endif
" Don't use Ex mode, use Q for formatting.
" Revert with ":unmap Q".
map Q gq
" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo,
" so that you can undo CTRL-U after inserting a line break.
" Revert with ":iunmap <C-U>".
inoremap <C-U> <C-G>u<C-U>
" In many terminal emulators the mouse works just fine. By enabling it you
" can position the cursor, Visually select and scroll with the mouse.
" Only xterm can grab the mouse events when using the shift key, for other
" terminals use ":", select text and press Esc.
if has('mouse')
if &term =~ 'xterm'
set mouse=a
else
set mouse=nvi
endif
endif
" Switch syntax highlighting on when the terminal has colors or when using the
" GUI (which always has colors).
if &t_Co > 2 || has("gui_running")
" Revert with ":syntax off".
syntax on
" I like highlighting strings inside C comments.
" Revert with ":unlet c_comment_strings".
let c_comment_strings=1
endif
" Only do this part when Vim was compiled with the +eval feature.
if 1
" Enable file type detection.
" Use the default filetype settings, so that mail gets 'tw' set to 72,
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
" Revert with ":filetype off".
filetype plugin indent on
" Put these in an autocmd group, so that you can revert them with:
" ":augroup vimStartup | au! | augroup END"
augroup vimStartup
au!
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid, when inside an event handler
" (happens when dropping a file on gvim) and for a commit message (it's
" likely a different one than last time).
autocmd BufReadPost *
\ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
\ | exe "normal! g`\""
\ | endif
augroup END
endif
" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made.
" Only define it when not defined already.
" Revert with: ":delcommand DiffOrig".
if !exists(":DiffOrig")
command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis
\ | wincmd p | diffthis
endif
if has('langmap') && exists('+langremap')
" Prevent that the langmap option applies to characters that result from a
" mapping. If set (default), this may break plugins (but it's backward
" compatible).
set nolangremap
endif
if has("vms")
set nobackup " do not keep a backup file, use versions instead
else
set backup " keep a backup file (restore to previous version)
if has('persistent_undo')
set undofile " keep an undo file (undo changes after closing)
endif
endif
if &t_Co > 2 || has("gui_running")
" Switch on highlighting the last used search pattern.
set hlsearch
endif
" Put these in an autocmd group, so that we can delete them easily.
"augroup vimrcEx
" au!
" For all text files set 'textwidth' to 78 characters.
" autocmd FileType text setlocal textwidth=78
"augroup END
" _ _ _ _ _ _
" / \ __| | __| | ___ __| | | (_)_ __ ___ ___
" / _ \ / _` |/ _` |/ _ \/ _` | | | | '_ \ / _ \/ __|
" / ___ \ (_| | (_| | __/ (_| | | | | | | | __/\__ \
" /_/ \_\__,_|\__,_|\___|\__,_| |_|_|_| |_|\___||___/
" All text below is not from the default vimrc.
" Enable syntax highlighting if the terminal supports color
if &t_Co > 1
syntax enable
colorscheme atom-dark
" Clear 'background color erase' value to prevent
" terminal background bleed.
set t_ut=
endif
" Enable line numbers in the left margin
set number
set numberwidth=4
" Enable relative line numbers
"set relativenumber
" Display invisible characters.
" Show tabs as '<--->', and trailing spaces as '·'
set list
set listchars=tab:<->,trail
" Don't clutter directories with swap files.
" Save them in /tmp instead.
set backupdir=/tmp//,.
set directory=/tmp//,.
set undodir=/tmp//,.
" _ __ __ __ _
" | |/ /___ _ _ | \/ | __ _ _ __ _ __ (_)_ __ __ _ ___
" | ' // _ \ | | | | |\/| |/ _` | '_ \| '_ \| | '_ \ / _` / __|
" | . \ __/ |_| | | | | | (_| | |_) | |_) | | | | | (_| \__ \
" |_|\_\___|\__, | |_| |_|\__,_| .__/| .__/|_|_| |_|\__, |___/
" |___/ |_| |_| |___/
" Custom keybinds and commands
" jh to escape in insert mode, 'cuz esc is hard to reach.
inoremap jh <Esc>
" Map F5 to clear all trailing whitespace in normal mode.
" the _s variable is used to preserve the search pattern register.
nnoremap <silent> <F5> :let _s=@/ <Bar> :%s/\s\+$//e <Bar> :let @/=_s <Bar> :nohl <Bar> :unlet _s <CR>
" Map Ctrl-k to toggle invisibles in normal mode
nnoremap <C-k> :set list! <CR>
" A command that makes figlet titles
command -nargs=1 F :r !figlet <q-args><CR>
command -nargs=1 Ff :r !figlet -f small <q-args><CR>
" ____ _ _
" | _ \| |_ _ __ _(_)_ __ ___
" | |_) | | | | |/ _` | | '_ \/ __|
" | __/| | |_| | (_| | | | | \__ \
" |_| |_|\__,_|\__, |_|_| |_|___/
" |___/
" The matchit plugin makes the % command work better, but it is not backwards
" compatible.
" The ! means the package won't be loaded right away but when plugins are
" loaded during initialization.
if has('syntax') && has('eval')
packadd! matchit
endif
nmap <F2> <Plug>ToggleHexHighlight