Mission vim possible

Post on 17-Jul-2015

283 views 3 download

Tags:

transcript

Mission Vim-Possibleby Sam Gottfried

History of Vim

"In the beginning, there was ed. And ed begat ex; and ex begat vi; and vi begat vim."

What is Vim?

● Vim is a highly customizable, highly efficient text editor

● Vim has several modes○ Normal ○ Insert○ Visual○ Ex mode

Normal Mode

Normal Mode is the default mode in Vim.

You should spend most of your time in normal mode.

Text Objects

a = a/ani = inside

aw -> a wordaW -> a WORD

as -> a sentence

ap -> a paragraph

More Text Objects

a( -> a pair of parenthesis

a{ -> a pair of {braces}

a[ -> a pair of [brackets]

a< -> a pair of <angle brackets>

at -> a pair of XML tags

More Text Objects

a" -> a pair of "quotes"a' -> a pair of 'quotes'

Examples:da" -> delete a pair of quotesci" -> change everything between the quotesyap -> yank a paragraph

Motions

words vs WORDSdef foo(a,b)

word: [def][foo][(][a][,][b][)]WORD: [def][foo(a,b)]

w -> next word e -> end of wordW -> next WORD E -> end of WORD

b-> beginning of current wordB -> beginning of current WORD

More Motions

f -> find a character F -> find a character (reverse)

t -> go to just before a characterT -> go to just after a character (reverse)

; -> next match (for f/F/t/T), -> previous match (for f/F/t/T)

More Motions

/ -> search forward? -> search backwardsn -> next match (current direction)N -> previous match (current direction)

* -> search for word under the cursor# -> search backwards for word under the cursor

Operator

y -> yankd -> deletec -> change

p -> paste (after)P -> paste (before)

Operator + motion = actiondw -> delete to the next word

Line-wise operations

dd -> delete a linecc -> change a lineyy -> yank a line (copy)

>> -> shift right<< -> shift left== -> auto indent

Counts

Most motions take a count3w -> move ahead 3 words5s -> move ahead 3 sentences

These can be combined with actions3dw -> delete a word 3 times (or d3w)5dd -> delete 5 lines2yy -> yank 2 lines

Undo/Redo

Act, Repeat, Reverse

. -> repeat a changeu -> undo a change

- Chunk your Undos- Compose repeatable changes- Don't count if you can repeat

Insert Mode

Entering Insert Modei -> insert to the left of the cursora -> insert to the right of the cursor (append)c -> change (usually combined with a motion)

I -> Insert at the beginning of the current lineA -> Append to the end of the current linecc -> change the current line

Visual Mode

v -> character-wise Visual modeV -> line-wise Visual mode<C-v> -> block-wise Visual modegv -> re-selects last visual selection

You can switch between these without going into normal mode

Ex mode

: -> enter Ex commandQ -> enter Ex mode (:visual to get out)

:[range]d[elete] -> deletes specified lines:[range]y[ank] -> yanks specified lines:[line]put -> puts the yanked lines under the current line

Ex Mode Examples

:5 -> go to line 5:5p -> print line 5:$ -> go to last line:2,5p -> print lines 2-5:% -> the whole document:. -> the current line

Registers

Use registers with yanks and deletesIncrease your clipboard size to 27!

"[register][count]action text object

example:"ayiw => Yank current word into register a"ap => Paste from register a

Macros

Record a sequence of changes and then play them back

q{register} -> record a macro into a registerqa -> start recording a macro into register a

Press q again to stop the recording@{register} -> playback the macro in {register}

Linewise Motions

0 -> go to beginning of a line^ -> first non-whitespace character of a line

$ -> end of line

Macro Tips

Macros can be done in series

Macros can also be done in parallel

Macros are useful with counts (Dot command doesn't accept counts)

Plugins

Tim Pope's Pathogen - Plugin Managergithub.com/tpope/vim-pathogen

Vim-Railsgithub.com/tpope/vim-rails

Ruby-Testgithub.com/janx/vim-rubytest

More Plugins

NERDTree -> File tree explorergithub.com/scrooloose/nerdtree

Fugitive -> Git from within Vimgithub.com/tpope/vim-fugitive

Greplace -> Project search and replacegithub.com/skwp/greplace.vim

More Plugins

Ack.vim -> Search project with Ackgithub.com/mileszs/ack.vim

Ultisnips -> Textmate-like snippetsgithub.com/SirVer/ultisnips

Ctrlp -> Fuzzy find filesgithub.com/kien/ctrlp.vim

More Plugins

Supertab -> Easier autocompletegithub.com/ervandew/supertab

Vimrc

Configuration for Vim

Resources

vimtutor

:help <topic>

Practical Vim (from pragmatic bookshelf)

Vimcasts (http://vimcasts.org)

Sam Gottfried

sgottfried@cyrusinnovation.com

github.com/sgottfried

Twitter: @sam_gottfried