Somewhere in 2000, I got infected with the ViM virus :) By accident, I started ViM in a terminal and did not know how to actually quit the program. The only way I knew how to get my terminal back was to switch to another terminal, login and kill the ViM process....
This first experience might have been a bit negative, but I am pretty sure it is the experience that pretty much everybody will have had (or will have) with ViM :)
I did hear some good stories about ViM, so decided to give it another try after my previous experience and got me a book to learn some more about this editor. From that moment on, I was hooked on the editor and it is the one editor I would use all the time :)
Even after 17 years, I am still learning new things about ViM that blow my mind. After learning some of these new functions, sometimes really wondering how I ever was working without these functions, or how much time they could have saved me!
Today, this feature is the different completion functions that ViM provides:
- Word completion
- Line completion
- Filename completion
The word completion (ctrl-p
and ctrl-n
) I have been using a lot already. The other two were new to me :)
Line completion
Recently, for a specific type of task, I had to often copy one of the previous lines. Of course, there are more ways to achieve this and one approach is to set a marker at the current cursor position (e.g. m a
), go to the line you need to copy, yank this line (with y y
), go back to the marked cursor position (with ` a
) and paste the yanked line.
Turns out that there is a much better way in ViM for this, namely the line completion feature. To complete your current line based on other lines in your file, you do the following:
- Enter the beginning of your line and stay in insert mode
- Press
ctrl-x
. This will show you a message in the status line about the ^X mode. - Now press
ctrl-l
. This will tell ViM that you want to use the Line completion mode. - Use
ctrl-p
andctrl-n
to scroll through the possibilities
In your terminal, you will see the following:
Filename completion
Very often when creating some help or manual for something, I need to refer to specific files. Often I remember the filename, but sometimes I want to be sure (was the file in CamelCase, or was it with underscores, or was there a space somewhere...)
My solution till now was straightforward: open another terminal, go to the directory holding the file and check :) Turns out, there is another easy way in ViM also, namely filename completion.
This works as follows:
- Type the beginning of the file or path
- Press
ctrl-x
. This will show you a message in the status line about the ^X mode. - Now press
ctrl-f
. This will tell ViM that you want to use the filename completion mode. - Use
ctrl-p
andctrl-n
to scroll through different files
In your terminal, you will see the following:
Besides these two main functions, you can also do the completion based on dictionary or thesaurus by using a differetn control combination after the initial ctrl-x
.
Although these features have been in ViM for quite some time now, I never found them before. Makes me wonder, what other features are there for me to still discover... :)
Do you have any great ViM features that have made your life easier, let me know in a comment!