Advanced Motions
Change
c
is a powerful motion. You use it just like d
but at the end of the
motion you are ejected from NORMAL
and into INSERT
.
So if you wished to delete a word and then type in a new word, c
is a great
habit to form.
Lets see the difference
// dd this line // cc this line
Horizontal Movement
Lets learn about!: _
, 0
, $
, D
, C
, S
, f
, ,
, ;
, t
, F
, and T
// How would we move around on the line with "contents" if (true) { contents conTenTs contenTS }
Vertical Movement
Core movement
Rely on relative jumps. Get good at them.
If you get NeoVim, try VimBeGood
{ and }
We know about search. That is a vertical movement, but its really specific.
First lets talk {
and }
ContiguousCode ContiguousCode ContiguousCode ContiguousCode ContiguousCode ContiguousCode ContiguousCode
ContiguousCode ContiguousCode ContiguousCode ContiguousCode ContiguousCode ContiguousCode ContiguousCode
Benefits? Class chat
This next one is a bit odd
Ctrl+u/d
So lets do another type of navigation.
Try pressing <C-d>
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Benefits? Class chat
[m / ]m and [M / ]M
This will move by "function". It works pretty well in c languages.
Move your cusor to this line and press ]m
. Try moving back and forth and try
the uppercase version as well.
if (foo) { some content some content some content some content function bar() { some other content some other content some other content some other content } function baz() { other content other content other content other content } }
Benefits?
%
Ok,.... soo this isn't a pure vertical motion. It actually is a pair jumper
if (true) { content const a = [ content, content, content, ]
"content"
content
content
}
Lets combine it with a motion. Delete the const a =...
statement.
Get zany...
Lets look at the following statement, what are some ways you can delete the contents of the if statement?
if (true) { line1 line2 line3 line4 line5 }
I was hoping to hear f{V%D
. That is just so sexy. d4j
is ok. Relative
jump, well done.. 5dd
meh. I would glad hand like a politician with dd dd
dd dd dd
. Just say mean things behind your back.
So lets try again.. but I spiced it up.
if (true) { line1 // Some distance line2 line3
line4
line5
}
First, place your cursor in the if statement. Where ever you want. Type di{
i = inside
Class Discussion
What other letter do you think you could try other than i
?
.
.
.
.
.
.
.
use <C-d>
to go down...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
// TODO: make a meme -- aliens..
Yes, a
is the other. I have never heard a great reason why, but just deal
with it.
so lets try again. try da{
if (true) { line1 // Some distance line2 line3
line4
line5
}
well shoot...
Class Discussion
Lets solve this together
if (true) { line1 // Some distance line2 line3
line4
line5
}
. . . . . . . . . .
For those that couldn't wait or got the answer. va{Vd
Use YOUR SUPER POWERS
lets redo the previous exercise except copy from one if statement and override the next if statement. How would we go about this?
if (true) { line1 // Some distance line2 line3
line4
line5
}
if (true) { replace_me_1 // Some distance replace_me_2 replace_me_3
replace_me_4
replace_me_5
}