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