Episode: 1734
Title: HPR1734: Vim Hints 003
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr1734/hpr1734.mp3
Transcribed: 2025-10-18 08:23:51

---

This is HPR episode 1,734 entitled Vim Hints 3 and is part of the series Vim Hints.
It is hosted by Dave Morris' and is about 26 minutes long.
The summary is Hints and Tips for Vim users Part 3.
This episode of HPR is brought to you by an honesthost.com.
Get 15% discount on all shared hosting with the offer code
HPR 15. That's HPR 15.
Better web hosting that's honest and fair at An Honesthost.com.
Hello everyone, this is Dave Morris and today I've got Vim Hints number 3 and this being
the third show in a series we can now create a series on HPR for it.
In this episode I want to look at moving around in the file that you're editing.
I also want to add a few more things to the configuration file that we started
constructing in the last episode.
Moving around is one of the very powerful things you can do in Vim and we'll
see in future shows how you can link this with other actions.
Some of the basic things you can do to move around, we've already seen some extent.
All of these movements are done in normal mode.
That is the mode you're in when you first start up Vim.
You've got the LKJ and H keys that we looked at before.
These are the mid row of your keyboard.
L means go right, unfortunately, it always confuses me.
JNK are down and up and H is move left.
Somebody said remember the sequence by thinking of the J as a downward pointing arrow
and that should anchor the group.
I don't know if you would find that useful.
I find it slightly useful, it helps me.
I tend to use the cursor keys myself and of course the cursor keys are the
alternative to these movements.
But today we've also got a few more that we're adding to this group
and that is the first one is the dollar key.
If you press the dollar key it moves your cursor to the end of the line
and that's the end meaning the last character on the line.
So some editors, at least in the midst of time, would assume that your line was
80 characters along with position U2 the 80th character.
But if the line in your editor is only 10 characters long then
there is no 80th column so as far as VIMT Concerned
so it would position you to the 10th character.
The alternative to the dollar key is the end key
and the one in the keypad with the home page up page down in Sir Delete.
So the next one is to move to the start of the line
that is character one and that's the zero key
and the alternative to that is the home key.
Now sometimes you might want to move, there might be some spaces at the start of
the line, you might want to move to the first non space character
winding non tab character if that's the case.
And the up arrow or circumflex will do that.
I call it up arrow I suppose it's not really that at all
but it's an ingrained habit. People used to refer to it that way back in the day.
The minus and plus keys are the last two in this group.
Minus key moves up one line and positions the cursor on the first
non blank character. The plus key moves down one line
which is you can think of them as decrementing and incrementing the line
number moves down to the first non blank character.
Now in the notes I've pointed out that when you're writing these things down
you can refer to them as sort of meta symbols
the characters I'm talking about and this is what's done in the VIM
documentation. So a less than sign a U and a P capital U P
a greater than sign means the up key the cursor up key.
So there's a lot of them that are documented in this way.
The only real reason that I'm mentioning them is because that's what I'm using
now from now on in my notes and also it's what the
the documentation uses and it will be of relevance when you come to
build up your own key sequences which VIM is very very very configurable
and you can build your own key sequences to do a
manner of things. The only other thing to say about this really is that
if you want to talk about these keys in conjunction with
shift or control that is hold the shift key down and press this key or hold the
control key down and press it then you put an S for shift
inside these angle brackets as I call them
or a C for control. Okay I don't want to spend too long on that it's not
that important it's really a documentation thing rather than a
podcast thing. So these movements don't seem to be very exciting
many other editors will let you move up down left right etc
but VIM has got the added feature that you can put a number on the front of
each of the commands so if you typed one zero
L then it that what that means is do the L command 10 times
which means move 10 characters to the right. You could also type in one zero
and then press the the right arrow key the right cursor control key
and that would do the same thing and the same goes for all of the other
characters looked at 10h 10 left key 10k or 10
followed by the up cursor key. The only ones in the group we've looked at
that don't take account are the zero or the home
command because it doesn't make a lot of sense to go to the start of the line
multiple times I guess and the circumflex similarly similar argument.
So these things are nice you can whiz around lines and between lines and
this sort of thing pretty easily in VIM and we'll look at
in future shows lots of other things that let you move around
according to many other features of your file. We're going to start on
some of these I suppose you could call them sort of object movements
you're moving in relation to certain objects within the
within the file. We'll look at word related movements.
Now there are a group of commands in VIM which let you move the cursor in relation
to words in the text but then we reach a slight difficulty
difficulty in terms of description really. I think if you read the show notes
you'll find that this is pretty clear but it's not an easy thing to
talk about in a podcast because we need to define what a word is and
there are in VIM there are two definitions and it refers to them in the
documentation as lowercase word WRRD and uppercase word
they mean two different things now how on earth can I
without saying uppercase lowcase all the time it gets a little confusing
it's not easy to talk about so what I'm going to do is just talk them about
them as word objects and what I think I need to do is to try and describe
why VIM is seeing these two different things. Now I've put the definition from
the VIM documentation into the notes to try and clarify this but
really in essence if you're moving by the lowercase form of the
word the simple word object then you're moving in a way that
you would expect to move so if you have say a word which is
enclosed in quotes then and your cursor is on the first
quote and you want to move to a word well the word is
that thing that's inside the quotes then if you move again
the word is the closing quote so it's stopping everything which is
which can be defined as a word or a word boundary but if you're looking at the
other word object the one that's written down is an uppercase word
then it would skip right over the punctuation and the criterion for
starting end of a word is whether they're separated by
white space white space being that generic term that means space tab
end of line so the the ones in lowercase that the reason these these two
definitions are in uppercase because the commands are in uppercase will come
on to them in a moment and the lowercase ones move
in relation to what you'd expect to happen in terms of
moving from one element of the text
delimited element of the text to the next whereas the the uppercase thing
is moves in relation to the boundaries between
white space all right I think I've just proved that it is hard to explain this
so the the commands that we're we're going to look at here are
w e and b now w just talk about the lowercase one
moment it moves forward to the start of a word
lowercase e moves forward to the end of a word
lowercase b moves backwards to the start of a word
so you see you can jump around a line pretty effectively just using lowercase
versions of w e and b I think you need to experiment with these things
yourself to see how they work it's really quite difficult to explain
if you use the uppercase version uppercase w
uppercase e and uppercase b they do the same
general things just that they stop on different boundaries
I do have an example in the notes where i took a
a line out of my log file i just plugged in my
mp3 player came up on dev sdh and i got an error message in
log file which talks about the fact that the the mp3 player is a
fat file system and it's moaning about aspects of this
i used it because it had hyphons and brackets and colon and comma and stuff
in it and i thought it would be a useful thing to
you demonstrate commands and movements on i made a little diagram of
where the cursor would be after certain movements
and i used the circumflex to point up to the
the line in question i don't know how useful that is
i find it a little difficult to read because the circumflex is not very
obvious character if i need better glasses i don't know
but i also wrote it out in text as as clearly as i could
i'm not going to read this because i don't think it's a
it's a fantastically useful thing to read out on a podcast
so the thing i haven't said is that of course all of these movement
commands can be preceded by a numeric count so five w
means go five words forward and five b means go five backwards and so on
my examples use counts and of course the other the other factor
that i haven't mentioned is that or the two two forms of w and the two
forms of b both have counterparts using the cursor keys
so shift right is the same as lower case w control right is the same as
uppercase w shift left is the same as lower case b
and control left is the same as uppercase b the ease don't have anything
in the way of cursor controls so i guess that's yeah it's
personally i tend not to use the cursor keys for these types of
movements i would be using the w e and b
and out of a band and the the cursor keys so really i should teach myself to
use the h j k business so i think i've said before
okay that's that's all i'm going to say about movement
today i hope it's pretty clear both the way i've expressed it and also the
the notes any feedback on this side of pre-shed because
this is i know a difficult area since we're using audio only here
and i plan only to use audio now we're going to move on to looking at the
configuration file so in the last episode
i told you about the command set compatible set back up
set undo dear to point to a directory and set undo files which on the
the persistent undo feature today we're going to look at a few more things
and the first one is adding a ruler a ruler is a is a display at the bottom
the screen that gives you information about stuff
and you enable it with the command in your config file set
space ruler that's s-e-t space i-u-l-e-r and this causes the line and column
number of the cursor position to be shown at the bottom right of the screen
the two numbers are separated by commas
and if there's enough room then the relative position
the cursor in the in the text is not so much the cursor actually the displayed
text because you you've got to view into a larger
thing through a window effectively and that's shown
so if your the file you're looking at is
positioned so that the top of the file is visible then the word top is appears
in the ruler if it's positioned so that the last line is visible then
b-o-t bottom is is written in the ruler
and if you can see both the top and the bottom because it's just a small
file then all a-w-l is is in the ruler
and if you've got a much bigger file and you're somewhere else in it
then a percentage number will be put to the to the right of the ruler
now the set ruler command can be abbreviated to s-e- space
I think I would discourage you from doing that unless you really want to
because you're going to get very confused by all these abbreviations if you're
not careful I certainly am so you might be clever than me but I don't know
I prefer to use the full form anyway you can switch the ruler off
if for some reason you you want to to disable that
then set no ruler will switch it off there's not much point in having that in
your config file so remember these are commands so you can in normal
mode you can press the colon key and then type the
command so colon set space no ruler will switch off the ruler
temporarily so sorry about the noises off I'm sitting in my kitchen
with the door open and you can hear the ambient sounds outside maybe
don't know one thing is and it will probably be getting on to this later
you can customize the ruler change its layout the layer I mentioned is the default
the other thing I found when researching so I haven't quite appreciated before
is that a number of Linux distributions set this option for you
when you install them it comes with system wide config which sets various things
I run Debian Testing and there's a set
ruler definition I found in one of the the config files provided in the
package I put the path in case you're interested in the notes what I
want really that I think it's a good idea to set this in your config file
because you then have a config file that you could move elsewhere
possibly to a system that doesn't preset this for you so now we've got we've
got the ruler but the ruler doesn't look particularly
nice it's just sitting on the bottom line and that line's also used for
entering commands and things so there's another feature which is a status line
and normally when you're running VIM in its very default mode the whole
windows available to you except the last lines we just mentioned
and in there you'll get messages and you'll get that's where you put your
commands but you can open this up a bit using the command set
last status now if you set that to equal to set last
state status equals to then it will produce a
another line over the top of that command line
which is in inverse color usually black white and black actually I think
though again you can configure that change colors and all tools
so fancy things the status lines got the the name of the file being
edited in it and if you've enabled a ruler that's where the ruler will go
and that's actually quite a nice layer that's what would be my default
there's a picture in the in the notes which shows what that looks like
the only thing is that in the original days of the eye
when it was developed on hardware terminals which were 24 lines by 80
columns then taking away two lines at the bottom might have been a bad idea
but today we will have enormous monitors we can
create terminals virtual terminals of any old size we like pretty much
then I don't think it's a big deal the command can be abbreviated I won't
go into what it is it's in the notes
and you can switch it off with set space last status equals zero
final command that I'm going to add this time is the set show mode command
which shows what mode you're in you remember
vims a modal editor with many modes some of which we've
yet to look at and it doesn't tell you which mode you're in
by default setting this option show mode will
give you information about the mode you're in if you go into insert mode for
example and various other modes
now in my case again Debian testing has set this for me
but I still like to put it in my config file I've said in the notes that
with show mode enabled and when you're going to insert mode you get a little
message at the bottom of the screen that indicates you're in insert mode
you can switch this off set no show mode if you want to
you could do that temporarily during an editing session if you wanted to
the final point about the config file is to
point out that you can put you can interspersed blank lines
in your in your config file and that's often a good thing because it makes
things more readable you can and you can also group
related commands together and you can also add comments and a comment is
a comment character think that opens a comment is is a
double quote character a double quote is usually put in the first column
and then you would type a comment after it so in the notes there's a
screenshot as I mentioned before showing in fact me editing the notes
in markdown format and it's got a ruler it's got a status line
and I think it's the point which I just opened the file up so
there's a little message at the bottom that reports the file name
it's length and the number of characters so which is at that point somewhat
longer than the maximum it's even longer now
so that's it really in terms of the content this week
I wanted to just mention at the end that I've
going to the habit putting a summary at the end of these these notes
hopefully so you can go and have a quick look at
the commands we've covered and there's one there for
the various movement commands we've looked at
and there's also a list of the contents of the configuration
file that I have constructed for this this particular show
with all the commands we had before and the new ones with blank lines and with
comments so I hope you'll find that that is helpful
and that I've just got links in the end there pointing to the previous two
shows and I'll try and continue to do that so you can hop around between
shows if you ever want to refer back to anything
but hopefully once we've got it set up as a series you can also walk through
the series I'm hoping other people might like to
contribute to the the VIM series at some point in the future as well
which would be nice so that's the end of it that's all from me
speak to you again soon bye-bye
you've been listening to Hacker Public Radio at Hacker Public Radio.org
we are a community podcast network that releases shows every weekday
Monday through Friday today's show like all our shows was contributed by an HBR
listener like yourself if you ever thought of recording a podcast
then click on our contributing to find out how easy it really is
Hacker Public Radio was founded by the digital dog pound and the infonomican
computer club and is part of the binary revolution at binwreff.com
if you have comments on today's show please email the host directly leave a comment on the website
or record a follow-up episode yourself unless otherwise status
today's show is released on the creative comments
attribution share a light 3.0 license
