Skip to main content

Vim: More Vim Tidbits

I reread "vimtutor" for the first time in years. I learned a few things:
e
"e" is a motion that means "to the end of the word". "ce" is useful.

/searchterm<enter>nN
When searching, "n" to search forward, "N" to go backwards. Start with "?" to aways go backwards. I had forgotten about "N".

:#,#s/old/new/g
Do a search and replace only between two line numbers.

:%s/old/new/gc
Do a search and replace with prompts.

:r !shellcommand
Execute a shell command and insert the results at the cursor.

R
This is over-write mode.

partial-command^D<tab>
Show possible command completions, then tab to complete.

evim
gvim in "easy" mode.
In the Vim tutorial, there's a mention of "$VIMRUNTIME/vimrc_example.vim" which I had never seen before. This helped me to improve my own .vimrc:
" These are general settings.
colorscheme torte
set autoindent
set guifont=Monospace\ 9
set hlsearch
set incsearch
set ruler
set showcmd

" Allow backspacing over everything in insert mode.
set backspace=indent,eol,start

" "T" toggles the taglist for ctags.
map T :TlistToggle<CR>

" 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.
syntax on
filetype plugin indent on

" Put these in an autocmd group, so that we can delete them easily.
augroup vimrc
au!
autocmd FileType css setlocal sw=4 sts=4 et
autocmd FileType html setlocal sw=2 sts=2 et
autocmd FileType java setlocal sw=4 sts=4 et
autocmd FileType javascript setlocal sw=4 sts=4 et
autocmd FileType mason setlocal sw=2 sts=2 et
autocmd FileType ocaml setlocal sw=2 sts=2 et
autocmd FileType php setlocal sw=2 sts=2 et
autocmd FileType perl setlocal sw=4 sts=4 et
autocmd FileType python setlocal sw=4 sts=4 et tw=72
autocmd FileType scheme setlocal sw=2 sts=2 et
autocmd FileType sql setlocal et
autocmd FileType htmlcheetah setlocal sw=2 sts=2 et
autocmd FileType text setlocal sw=2 sts=2 et tw=79
augroup END
Now that I know how to turn on intelligent indentation *and* still control it on a per-language basis, I'm even happier :)

Comments

I've been using Vim for over 10 years and didn't know about the 'N' on searches. Thanks!
illume said…
Wonderful! Thanks for the tips.

I got two things from this set of tips that will really help me. Two things that have been bugging me for ages that I always do.

The highlight search... which used to be on with vim 6.x, also the shell command insert.

I use the shell command insert now for quickly inserting the date into my log files that I keep for every project. Now no more typing into the shell, and copy/pasting it.

:r !date

Thanks again!
wam said…
You said Start with "?" to aways go backwards. Actually, if you start a query with "?", then go on to the next match with 'n' you will continue to search backwards; however, if you go to next search result with 'N', you will search backwards from you search's initial direction, thus searching forwards.

As far as using :r !shellcommand, I personally use !!shellcommand which replaces current line with the shell command's output.

Also, a good alternative to R for replacing text (e.g. "write over mode") is c[motion/distance] to change only the specified amount of text. For example, to change the current line 'cc' To change just 3 words 'c3w' To change text to a pattern 'c/pattern'
Anonymous said…
set guifont=Bitstream\ Vera\ Sans\ Mono\ 14
Anonymous said…
That rocks. There were a few tips here I didn't know. I think I need to put "vim tutorial" on my list of things to do... I bet there are a few more tips I still need to learn. =)

Glen