If you've read up to this point and completed all the examples and exercises you now have a pretty solid grasp of the basics of Vimscript. Don't worry though, there's still plenty left to learn!
Here are a few ideas of topics to look into if you're hungry for more.
In this book we added syntax highlighting for Potion files. The other side of the coin is the creation of custom color schemes that define what color to display each syntax element.
Color schemes in Vim are fairly straightforward, if a bit repetitive, to make.
:help highlight to learn the basics. You may want to take a look at some
of the built-in color schemes to see how they structure their files.
If you're up for a challenge, take a look at the source of my own Bad Wolf
color scheme to see how I've used Vimscript to make the definition and
maintenance much easier for myself. Pay attention to the "palette" dictionary
HL function that dynamically builds the
Many plugins allow the user to interact with them through key mappings and
function calls, but some prefer to create Ex commands instead. For example, the
Fugitive plugin creates commands like
:Gdiff and leaves it up
to the user to decide how to call them.
Commands like this are created with the
:command command. Read
user-commands to learn how to make your own. You should know enough Vimscript
by now that reading Vim's documentation is sufficient for learning about new
In this book I've kind of glossed over how Vim decides which files to load by
saying "just use Pathogen". Now that you know a decent amount of Vimscript you
:help runtimepath and check out Pathogen's source
code to find out what's really happening under the hood.
Vim offers a number of different ways to complete text (read
ins-completion for an overview). Most are fairly simple, but the most powerful
of them is "omnicomplete" which lets you call a custom Vimscript function to
determine completions in just about any way you could possibly think of.
When you're ready to dive into the rabbit hole of omnicompletion you can start
:help omnifunc and
:help compl-omni and follow the trail from there.
In our Potion plugin we created some mappings to compile and run our Potion files. Vim offers much deeper support for interacting with compilers, including parsing compile errors and providing a nice list that lets you jump to the line of each error.
If you're interested in this you can dive in by reading through
quickfix.txt in its entirety. However, I will warn you now that
is not for the faint of heart!
This book has focused on Vimscript, but Vim also offers interfaces in several other languages, like Python, Ruby, and Lua. This means you can script Vim in a different language if you don't like Vimscript.
It's still good to know Vimscript for editing your
~/.vimrc, and for
understanding the API Vim presents in each language. But using an alternate
language can be a great way to escape from the cruftiness of Vimscript,
especially for large plugins.
If you want to learn more about scripting Vim in a particular language, check out the help documents for it:
As a final parting note, here's a list of Vim help topics that are especially useful, informative, interesting, or just plain fun (in no particular order):
Go write a Vim plugin for something you've always wanted and share it with the world!