Vim Gawd
AKA "Understanding How Modal Editing Works"
A super-quick primer into Vim, its ecosystem and how I use it for everyday activities.
Hi. I'm Jacky.
I work for Lyft as a Software Developer.
I document my life at jacky.wtf.
I enjoy reading, cooking and Twitter.
Vim - a primer
Vim's a modal editor (first and foremost) designed to help its users write with intention in mind.
It uses modes, registers, and buffers to achieve this goal. Most of us use only 2 modes, about 3 registers and dozens (if not hundreds) of buffers at a time.
modes
(not the SQL tool)
Modes are the wrapping layer of how one interacts with text blocks in Vim.
There's quite a few of them. They're split into basic and additional categories.
Basic MODES
- Normal
- Visual
- Select
- Insert
- Command Line
- Ex / Super Command Line
- Terminal (neovim)
VARIANT MODES
- Operator Mode
- Virtual Replace
- Insert Normal
- Insert Visual
- Insert Select
registers
(kinda like a NS?)
Registers are places to hold text that can be used for, well, anything.
There's a lot of them. Nearly sixty. You could end up using all of them in one session. Usually not.
all
the
"
10 types.
~60 total avaialable.
A myraid of ways to fill them up!
MYRIAD of fILLINGS
Though too long to fit into this talk, you can fill up these registers in a HUGE number of ways.
Word
buffers
(forget everything you know)
Buffers represent a file's contents as well as other bits of metadata pertaining to that file.
Some buffers aren't real. Other hidden.
HIDDEN
Hidden buffers are ones that have text that's abandondable. In short, if you make a buffer's mode hidden, Vim doesn't care about persisting its contents.
This is how NERDTree, Tagbar and the ilk keep those buffers from being saved to disk.
Inactive
One of the three states of a buffer, this is whenever a buffer isn't hidden but also isn't currently being displayed in a window. However, Vim does care about the contents - modified buffers will cause a warning when you try to exit.
CHANGE + MOTION
Think of motion and change as a lexical thing.
So if you want to... | ... then you hit |
---|---|
delete a word | dw |
swap lines | ddkkp |
keep the middle but delete other lines | d1jGd2kZZ |
write something on the next line | o |
Each letter corresponds to an change or motion.
Together, they can be considered macros.
Anything you do can be recorded as a macro.
But that's outside of the scope of this talk.
Something Warshan Shire would say.
Plugins
Vim was designed to be extensible.
The community has created thousands of plugins for, well, anything.
- pathogen
- neobundle
- vundle
- vim-plug
CURATE your environment
Using plugins can further the abilities of Vim. A lot of notable plugins authors like tpope, Shuogo and june-gunn work to make Vim more usable of an editor and overall tool for developers and editors alike.
IMPACT
Treat code like you're weaving it
Vim allows mnemonic actions that allow for tight weaving of repetitive behaviors and text manipulation.
It does have a learning curve. But Vim is for anyone who's willing. <C-c> <C-x>
(Not so Live) Demos
Title | Link |
---|---|
Prose | https://asciinema.org/a/BX9I39TocUVTyse9pNZAW9XFj |
Refactor | https://asciinema.org/a/CK5hPUpNWfytbPpc3HQkHMNbw |
Git Cycle | https://asciinema.org/a/zdMNuuqN36nsMVwrYPgSvDhFs |
FIN
Vim Gawd
By Jacky Alciné