--- format: rst toc: no ... ============ It's vim! ============ Typical .vimrc ------------------ Here's what a typical ``.vimrc`` looks like for me:: if has('syntax') && (&t_Co > 2) syntax on endif set history=50 set wildmode=list:longest,full set showmode set showcmd set smartcase set shiftwidth=4 set tabstop=4 set shiftround set expandtab set autoindent autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except, finally,def,class Commands ------------- Search and replace globally:: :%s/before/after/g Tricks ------------- I often want to pull a particular gnarly line or two from another file; here's the command I use to grab three lines of context around 'phrase':: :r!grep -A 3 'phrase' ../otherfile.txt Pasting a lot of text with insert mode if very slow because vim redraws the terminal for every single character entered (as you would want if you were actually typing. To paste in the contents of the X11 clipboard you want to use:: "*P (aka quote, star, uppercase-P) in regular mode. This also solves the autotabbing problem without ":set paste"! You need to have "+xterm_clipboard" in your ``vim --version`` output for this to work; the ``vim-gtk`` package on newer Ubuntus has been compiled with this flag (?). Sometimes you really need tab characters instead of space indendation (eg, when editing Makefiles). To use tabs when editing a file use:: :set noexpandtab If you accidently opened a file you can't write to, you can write out as root using:: :w !sudo tee % Search for trailing whitespace, or just strip it all:: /\s\+$ :%s/\s\+$// Shell Sessions ------------------- (discovered via http://www.ktaylor.name/2009/11/vim-screen-lisp-programming-environment.html) The emacs embeded interpreter mode is very nice for interactively programming with languages like scheme and python. A similar effect can be achieved with the `ScreenShell plugin `_ and the following bindings: vmap :ScreenSend nmap vip nmap :ScreenSend `Slimv `_ is a more elaborate alternative (SLIME for vim). Multi-Tab Setup -------------------- TODO: document my current multi-window configuration, how to re-scale, etc. ``Ctrl-W =`` equalizes window sizes (``Ctrl-W`` is the vierport meta sequence). Links to more... ------------------ - `vim anti-patterns `_