From 8ae9c465242c5e379877a15832043113021d714e Mon Sep 17 00:00:00 2001 From: Adam Hovorka Date: Mon, 4 Sep 2017 13:42:23 -0600 Subject: Switch from stowsh to dotbot --- base/vimrc | 239 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 239 insertions(+) create mode 100644 base/vimrc (limited to 'base/vimrc') diff --git a/base/vimrc b/base/vimrc new file mode 100644 index 0000000..3a4b16a --- /dev/null +++ b/base/vimrc @@ -0,0 +1,239 @@ +set nocompatible +set encoding=utf-8 + +set modelines=0 " for security + +set mouse="" +set backspace=indent,eol,start + +au FocusLost * :wa + +" Leader ====---- +nnoremap ,, , +let mapleader="," +nnoremap ; ; +nnoremap ; : + +" Highlighting ====---- +syntax on +filetype plugin indent on + +set t_Co=256 " force enable 256-color mode. +if &t_Co >= 256 || has("gui_running") + let base16colorspace=256 + colorscheme base16-default-dark +endif +if &t_Co > 2 || has("gui_running") + syntax on +endif + +" Indentation ====---- +set shiftwidth=2 +set tabstop=2 +set expandtab +set shiftround " use multiple of shiftwidth with '<' and '>' +set autoindent +set copyindent " copy the previous line's indentation + +xnoremap < >gv + +" Search ====---- +set incsearch +set hlsearch +set wrapscan +set ignorecase " ignore case when searching +set smartcase " ignore case if search pattern is all lowercase, + " case-sensitive otherwise + +nnoremap :noh + +" Case insensitive +nmap * /\<=expand('')\> +nmap # ?\<=expand('')\> + +set showmatch +nnoremap % +vnoremap % + +" Screen ====---- +"set nowrap +set wrap +"set textwidth=79 +"set formatoptions=tqrn1 +set colorcolumn=85 +set ruler +set number +set relativenumber +set laststatus=2 +set shortmess=aoOstTWAI +set cursorline +"set showmode +set showcmd +set title " change the terminal's title +set scrolloff=3 + +set visualbell " don't beep +set noerrorbells " don't beep + +set list +set listchars=tab:»\ ,extends:›,precedes:‹,nbsp:·,trail:· +"autocmd filetype html,xml set listchars-=tab:>. + +set wildmenu +set wildmode=longest:full,full +set wildignore=*.swp,*.bak,*.pyc,*.class + +set ttyfast + +hi ColorColumn ctermbg=18 +hi Folded ctermbg=0 ctermfg=12 + +" Stop using arrow keys ====---- +noremap +noremap +noremap +noremap + +" nnoremap j gj +" nnoremap k gk + +" Splits ====---- +nnoremap w vl +nnoremap h +nnoremap j +nnoremap k +nnoremap l + +" History ====---- +set history=1000 " remember more commands and search history +set undolevels=1000 " use many muchos levels of undo + +if !isdirectory($HOME."/.vim") + call mkdir($HOME."/.vim", "", 0770) +endif +if !isdirectory($HOME."/.vim/undo-dir") + call mkdir($HOME."/.vim/undo-dir", "", 0700) +endif +set undodir=~/.vim/undo-dir +set undofile +" !!!! ADD THIS TO CRONTAB +" 43 0 * * 3 find /home/adam/.vim/undo-dir -type f -mtime +90 -delete + +set nobackup +set noswapfile " Note: swap helps large files. + +" Custom mappings ====---- + +" Quickly edit/reload the vimrc file +nnoremap ve :tabe $MYVIMRC +nnoremap vs :so $MYVIMRC + +nnoremap :set invpaste paste? +set pastetoggle= + +nnoremap W :%s/\s\+$//:let @/='' +nnoremap ft Vatzf +nnoremap S ?{jV/^\s*\}?$k:sort:noh +nnoremap q gqip +nnoremap vp V`] +nnoremap h :syntax sync fromstart +nnoremap l :nohlsearch:diffupdate:syntax sync fromstart +nnoremap [ :put! =repeat(nr2char(10), v:count1)'[ +nnoremap ] :put =repeat(nr2char(10), v:count1) + +noremap y "*y +noremap yy "*Y +noremap p :set paste:put *:set nopaste + +noremap + :s/^\s*/&\/\//:noh +noremap - :s/^\(\s*\)\/\//\1/:noh + +vnoremap Q gq +nnoremap Q gqap + +cnoremap w!! w !sudo tee % >/dev/null + +" helper function to toggle hex mode +function! ToggleHex() + " hex mode should be considered a read-only operation + " save values for modified and read-only for restoration later, + " and clear the read-only flag for now + let l:modified=&mod + let l:oldreadonly=&readonly + let &readonly=0 + let l:oldmodifiable=&modifiable + let &modifiable=1 + if !exists("b:editHex") || !b:editHex + " save old options + let b:oldft=&ft + let b:oldbin=&bin + " set new options + setlocal binary " make sure it overrides any textwidth, etc. + let &ft="xxd" + " set status + let b:editHex=1 + " switch to hex editor + %!xxd + else + " restore old options + let &ft=b:oldft + if !b:oldbin + setlocal nobinary + endif + " set status + let b:editHex=0 + " return to normal editing + %!xxd -r + endif + " restore values for modified and read only state + let &mod=l:modified + let &readonly=l:oldreadonly + let &modifiable=l:oldmodifiable +endfunction + +command! -bar Hexmode call ToggleHex() +nnoremap H :Hexmode + +function! NumberToggle() + if(&relativenumber == 1) + set norelativenumber + else + set relativenumber + endif +endfunc + +nnoremap N :call NumberToggle() +"autocmd InsertEnter * :set norelativenumber +"autocmd InsertLeave * :set relativenumber + +" Custom functions ====---- + +if filereadable(expand("~/.vimrc.local")) + source ~/.vimrc.local +endif + +function! SetLocalOptions(fname) + let dirname = fnamemodify(a:fname, ":p:h") + while "/" != dirname + let lvimrc = dirname . "/.vimrc.local" + if filereadable(lvimrc) + execute "source " . lvimrc + break + endif + let dirname = fnamemodify(dirname, ":p:h:h") + endwhile +endfunction + +au BufNewFile,BufRead * call SetLocalOptions(bufname("%")) + + +" To move elsewhere ====---- +au BufNewFile,BufRead *.less set filetype=less +autocmd! BufWritePost $MYVIMRC source $MYVIMRC +packadd! matchit +cnoremap +cnoremap +autocmd! BufRead,BufNewFile *.md set filetype=markdown +autocmd! BufRead,BufNewFile *.md set spell +vnoremap p "_dP -- cgit v1.2.3-70-g09d2