Advanced

Vim Mastery

There's a reason why, after decades, countless developers still prefer Vim as their code editor of choice. That many people can't be wrong, right? In this series, I'll teach you how to master the most flexible editor on the planet.

Start Series

Share this series on:

  • 01

    Episode 1 Run Time 2:33

    Hello, Vim Free

    Are you intrigued by all those fancy Vim tricks? Are you considering a switch, but are overwhelmed by the steep learning curve? If so, why don't you come along with me, and I'll show you everything I know about this incredible editor.
  • 02

    Episode 2 Run Time 12:20

    Finding Your Way Around Free

    Let's begin by reviewing the absolute basics. With Vim, how do we save a file, or quit the editor, or edit a new file? How do we set configuration values?
  • 03

    Episode 3 Run Time 15:04

    Mappings and Commands

    Let's get back into it. In this lesson, we'll review addition configuration, custom mappings, and auto commands. Don't forget: you won't learn this properly, unless you work along!

    View the.vimrc for this episode.

  • 04

    Episode 4 Run Time 5:35

    A Prettier Vim

    Before we dig into the intricacies of Vim, let's take a moment to focus on visuals. Can we at least set up a better color scheme and font? Sure, we can. And what about those ugly scrollbars in MacVim?
  • 05

    Episode 5 Run Time 4:34

    Optimizing Window Splits

    A neat feature of Vim is its ability to create any arrangement of split windows. In this episode, you'll learn how this works, and will then move on to configuring their default keybindings, accordingly.

    View our .vimrc file, as of this episode's completion.

  • 06

    Episode 6 Run Time 10:07

    Vundle and Better File Browsing

    You'll frequently need to browse your project's file structure, so it's important that we build a good workflow. In this lesson, we'll first learn how to improve Vim's default netrw file browser with Tim Pope's excellent Vinegar.vim. Next, for a more traditional experience, we'll pull in NERDTree. As you'll find, when we use Vundle for dependency management, downloading and installing any plugin is a cinch!
  • 07

    Episode 7 Run Time 6:08

    Faster Browsing with CtrlP

    We'll next pull in the popular CtrlP plugin, which allows you to rapidly switch from file to file.

    Here's our .vimrc file so far.

  • 08

    Episode 8 Run Time 7:17

    Configuration Tweaks

    Before we move ahead to working with c-tags, let's first make a handful of configuration tweaks. First, we'll fix a conflict between NERDTree and netrw. Next, we'll enable fancy symbols for our Fira Code font. And finally, we'll finish up by improving MacVim's awkward tabs, and switching our Ctrl + P keyboard shortcut over to the more familiar Command + P.
  • 09

    Episode 9 Run Time 9:28

    Browse Like a Pro With Ctags

    Imagine that you need to find a particular method in your project. The traditional way is to hunt around the project tree in your sidebar, find the file, click on it, and scroll the page until you find the method. Ehh, we can do way better than that. In this lesson, you'll learn how to instantly browse to any symbol in your project. It's lightning fast!

    View our .vimrc file so far.

  • 10

    Episode 10 Run Time 5:01

    Custom Highlighting

    We have a theme we like, but what if we need to tweak a few visuals? Let me show you the basic process in this lesson.
  • 11

    Episode 11 Run Time 9:08

    Site-Wide Search and Replace

    An immediate pitfall for new Vim users is how to perform site-wide searches and replacements. In this lesson, I'll demonstrate my exact approach - using Ag.vim and Greplace.vim.
  • 12

    Episode 12 Run Time 5:04

    PeepOpen

    Let's switch back to how we browse files. It's crucial that you find a workflow you enjoy. Another option you have is a GUI app, called PeepOpen. If you enjoy the Sublime-Text form of "Command + p", you might find that you prefer this option.
  • 13

    Episode 13 Run Time 5:24

    Laravel-Specific Mappings

    As you write code in Vim, try to keep a mental record of all the tasks that take longer than you'd like. Even an extra two seconds adds up, trust me. In this lesson, I'll show you a handful of mappings that you might consider, when working in a Laravel app.
  • 14

    Episode 14 Run Time 6:33

    Managing Snippets

    When you need to create code snippets in Vim, SnipMate will do the job quite nicely. I'll show you how it works.

    View the .vimrc file for this series so far on GitHub.

  • 15

    Episode 15 Run Time 3:19

    Surrounding Text

    Tim Pope's excellent Surround plugin is a stable in every Vim user's tool belt. Need to quickly change single quotes to double quotes? Or do you want to instantly delete a surrounding HTML tag, or update it to a new one all together? With this plugin, it's all a cinch.
  • 16

    Episode 16 Run Time 6:54

    PHP Optimizations

    In this episode, we'll focus on three different PHP optimizations. We'll begin by updating our syntax file. Next, we'll add support for automatically adding use imports to any class. Finally, we'll add a mapping that allows us to instantly sort use statements by length.
  • 17

    Episode 17 Run Time 10:30

    Auto-Completions

    We've yet to figure out how to handle auto-completion. As such, in this episode, we'll take a first step. The goal is to type a sequence of characters, hit "tab", and then see all relevant results from nearby buffers. As always though, throughout the video, we'll discuss a number of other helpful Vim tricks.

    View our .vimrc file, as of this episode.

  • 18

    Episode 18 Run Time 4:32

    Automatic PSR-2 Formatting

    Let's set up php-cs-fixer, so that we may type a simple keystroke and instantly format any PHP class, according to the PSR-2 convention.
  • 19

    Episode 19 Run Time 9:56

    Marks

    Vim marks offer you a way to instantly return to any location in your project, simply by typing a keystroke. I think you'll like it!
  • 20

    Episode 20 Run Time 5:17

    Tabs, Indents, and Spaces

    Unfortunately, when it comes to managing tabs, indents, and spacing, well - Vim can get pretty confusing. That's okay; learn how to configure them once, and then feel free to expel all this junk from your brain.
  • 21

    Episode 21 Run Time 6:29

    Fun With Macros

    A macro is nothing more than a recording that can be played back at any time. An excellent candidate for a macro is any piece of workflow that you find yourself repeating over and over. As an example, in this video, we'll record a macro to take a constructor argument, and then automatically initialize and assign it, as a property.
  • 22

    Episode 22 Run Time 6:14

    PHP Documentor and Ultisnips

    Are you manually writing out your doc-blocks in Vim? Annoying, right? Luckily, there's a much simpler way. In this episode, we'll pull in the PHP Documentor plugin, while also fetching UltiSnips, which is similar (even a replacement) to SnipMate.

    View our .vimrc file for the series so far on GitHub.