set nocompatible set modelines=0 " for security set encoding=utf-8 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 " enable 256-color mode. if &t_Co >= 256 || has("gui_running") "colorscheme mustang "colorscheme desert " set colorscheme endif if &t_Co > 2 || has("gui_running") " switch syntax highlighting on, when the terminal has colors 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 " 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 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:>.,trail:.,extends:#,nbsp:. "autocmd filetype html,xml set listchars-=tab:>. set wildmenu set wildmode=longest:full,full set wildignore=*.swp,*.bak,*.pyc,*.class set ttyfast hi Folded ctermbg=0 ctermfg=12 " Stop using arrow keys ====---- nnoremap nnoremap nnoremap nnoremap inoremap inoremap inoremap inoremap " 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 ev :e $MYVIMRC nnoremap sv :so $MYVIMRC set pastetoggle= nnoremap W :%s/\s\+$//:let @/='' nnoremap ft Vatzf nnoremap S ?{jV/^\s*\}?$k:sort:noh nnoremap q gqip nnoremap v V`] nnoremap s :syntax sync fromstart 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 number else set relativenumber endif endfunc nnoremap N :call NumberToggle() autocmd InsertEnter * :set number autocmd InsertLeave * :set relativenumber " To move elsewhere ====---- au BufNewFile,BufRead *.less set filetype=less