Hacking Vim 7.2
“Ready-to-use hacks with solutions for common situations encountered by users of the Vim editor”
Packt publishing, 2010
I have been a Vim user almost since the first time I tried the editor at my university 8 years ago. Initially I was intrigued by the mere rumor of an editor that was so complicated that simply quitting it took special knowledge, but little by little I discovered its features and today it is my favorite editor. In the later years of university I worked as a systems administrator and in my current job I also administer a bunch of Linux servers beside my geophysical work. For both system administration and geophysical work with scripting and heavy text processing and I can’t imagine any other editor which could fulfill my needs as Vim does.
Vim is in my eyes the most important tool I known, but also one of the most complex. Vim is notorious for the steep learning curve and even though I consider my self beyond the first plateau I fully aware that there vast areas I haven’t explored yet. Having this in mind I have been looking for a book that could help me learn new tricks to boost my productivity. This is when I was contacted by Packt publishing to review Hacking Vim 7.2 – a 244 page book from April 2010.
The intended audience
In the preface of the book it is stated that the intended audience of the book is intermediate to experienced Vim users and considering the subtitle “Ready-to-use hacks with solutions for common situations encountered by users of the Vim editor” I was lead to believe is a book for those that had been around block and need hands-on examples of production boosters. In my mind I expected it to be a kind of cookbook with small recipes for distinct problems. This is most likely because I have just read the excellent “PHP phrasebook” by Christian Wenz and “Python Phrasebook” by Brad Dayley which both does a great job in this genre of ready-to-use books oriented to more experienced users. The reason I find these books so great are that they acknowledge that the reader is intermediate to experienced and heads straight for the recipes leaving the basics behind. After having read “Having Vim 7.2” I am not as convinced that “Hacking Vim 7.2” succeeded as well in this genre as it dwells too much at the basics in my opinion, but I will return to this later.
A short review of the chapters
The book is divided into 7 chapters and two appendixes:
- 1. Getting started with Vim
- 2. Personalizing Vim
- 3. Better navigation
- 4. Production boosters
- 5. Advanced formatting
- 6. Basic Vim scripting
- 7. Extended Vim scripting
- Appendix A: Vim can do everything
- Appendix B: Vim configuration alternatives
The first chapter starts of with a historical insight to Vim and while this can be interesting it seems a bit out of focus for this “ready-to-use hacks with solutions” book. I did not really feel very exited after having read this chapter, but luckily this was followed by the excellent second chapter “Personalizing Vim”. This second chapter dives head first into actual Vim hacking with a bunch of well described small hacks to the standard setup including color highlighting, gvim menu hacking and font changing. This chapter definitely fulfilled my expectation to what this a book like this should be, despite the fact that it dealt a little more with the graphical gvim than I am interested in.
The third chapter is called “Better navigation” and while it contained some useful bits, it also went unnecessary details with very basic elements already covered by vimtutor, which I assume that all “intermediate to experienced” users would be familiar with. This is quite vivid in example 1: “Finding the next occurrences of a word” where a full page is used on describing the standard search function. The chapter does however cover most subjects to be expected in a navigation chapter, so for the users who are completely new to Vim navigation it is a good introduction, but it reminds more of a introductory textbook than a “ready-to-use- hacks” book.
Chapter four: “Production boosters” was the chapter I had been looking the most forward to reading after having seen the table of contents. The chapter contains a number of hacks that I found quite useful, such as a excellent walk through example of the usage of omnicompletion: The author goes into details with a real life scenario and uses a function written in vim to accomplish the text editing and I learn alot from reading it. Another example is the coverage of the netrw feature in Vim which enables editing files directly over ssh or ftp. Writing a command as the following will edit the file test.txt on the remoteserver.com over the encrypted ssh:
tjansson@nobel:~$ vim scp://email@example.com/test.txt
if ssh-keys are not used vim will then ask for the password and retrieve the file, when the file is written it is then uploaded again. This make editing files on a web server very fast and for often accessed files a shell alias would make this very efficient.
Personally this is how I prefer a book like this to be – inspiring me to try out new hacks own my own.
The fifth chapter goes through formatting of both code and text in various ways and although it had some useful tips there wasn’t really something I was very exited about. The sixth chapter about basic vim scripting was really surprisingly basic. The chapter is a very basic introduction to scripting and anyone with a background in any programming language would for instance not find the sections on “for loops” or “while loops” terrible interesting. At this point in the book I again got a bit confused about the intended audience: On one hand this is a great slow introduction to scripting and general programming, but when considering the subtitle of the book I would have expected a more direct approach with examples of useful scripts and tips to hack these.
The final and seventh chapter extends the scripting basics with what I believe was a more appropriate level for the claimed level of the reader. Here good practices and debugging of scripts is described, as wells as short descriptions on how to script in external languages such python, perl and ruby.
In line with the style of the first chapter appendix A does not really cover any ready-to-use hacks, but is instead more a list of what I would call fun-facts. I did not know that you could play Nibbles, Sokoban or Tetris inside Vim, but on the other hand I didn’t really care either. The most interesting section in this appendix covered using Vim as an IDE (Integrated Development Environment), but most of the tips were quite shallow as they deferred actual usage instructions to online sources and scripts. The final appendix called “Vim configuration alternatives” is quite good, but should perhaps have been included in the second chapter as it is quite short, but very relevant.
My overall impression is that the layout leaves some room for improvement. Often examples start in the middle of the text and there is no typographical indicators showing that a example is starting. This makes the book hard to use as a reference, since I often look for the examples when I need implement a hack. Furthermore, there is a number of small tips boxes spread out through the book, but they do not have titles and this makes it more tedious to find that special box with the good tip without reading through them all. Finally the book is available both in a ebook and a printed version, but the printed book is in black and white, which makes the color screenshots on page 142 and the syntax highlighted script on page 193 a bit hard to comprehend.
As the reader might have figured by now I am not completely thrilled about this book. I think it at times misses the intended audience and prioritize some less important element of Vim on behalf of more ready-to-use hacks. I would have loved if the pages spent on games within Vim was instead used on covering Vim as an IDE in detail or perhaps skipping the very basic scripting elements in chapter six in favor of a section on the LaTeX-suite for Vim. In summary: I could have imagined this book be more concise, but I do appreciate the good chapters as “4. Production boosters” or “2. Personalizing Vim” – both have undoubtedly made me a better Vim user.
The book can be bought directly from the publisher on their web page: www.packtpub.com/hacking-vim-7-2/book.
If you are interested in what else I have written about Vim these are my most popular articles:
Using latexmk, vim spell checking and vim latex-suite
Using par to reformat paragraphs in vim
Vim tips and tricks