Book Image

Mastering Vim

By : Ruslan Osipov
Book Image

Mastering Vim

By: Ruslan Osipov

Overview of this book

Vim is a ubiquitous text editor that can be used for all programming languages. It has an extensive plugin system and integrates with many tools. Vim offers an extensible and customizable development environment for programmers, making it one of the most popular text editors in the world. Mastering Vim begins with explaining how the Vim editor will help you build applications efficiently. With the fundamentals of Vim, you will be taken through the Vim philosophy. As you make your way through the chapters, you will learn about advanced movement, text operations, and how Vim can be used as a Python (or any other language for that matter) IDE. The book will then cover essential tasks, such as refactoring, debugging, building, testing, and working with a version control system, as well as plugin configuration and management. In the concluding chapters, you will be introduced to additional mindset guidelines, learn to personalize your Vim experience, and go above and beyond with Vimscript. By the end of this book, you will be sufficiently confident to make Vim (or its fork, Neovim) your first choice when writing applications in Python and other programming languages.
Table of Contents (12 chapters)

Navigating the code base with tags

A common task when navigating code bases is trying to figure out where certain methods are defined, and looking for occurrences of a certain method.

Vim has a built-in feature that allows you to navigate to the definition of a variable in the same file. With the cursor over a word, press gd to go to the declaration of the variable. For instance, open animal_farm.py and position your cursor at the beginning of make_animal on line 26. Press gd, and your cursor will jump to line 13, where the function is defined:

gd will look for a local variable declaration first. There's also gD, which will look for a global declaration (starting at the beginning of at the file instead of the beginning of the current scope).

This feature is not syntax aware, as out-of-the-box Vim does not know how your code is structured semantically. However, Vim supports...