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'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.
(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.
(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.
10 types.
~60 total avaialable.
A myraid of ways to fill them up!
Though too long to fit into this talk, you can fill up these registers in a HUGE number of ways.
Word
(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.
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.
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.
Vim was designed to be extensible.
The community has created thousands of plugins for, well, anything.
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.
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>
Title | Link |
---|---|
Prose | https://asciinema.org/a/BX9I39TocUVTyse9pNZAW9XFj |
Refactor | https://asciinema.org/a/CK5hPUpNWfytbPpc3HQkHMNbw |
Git Cycle | https://asciinema.org/a/zdMNuuqN36nsMVwrYPgSvDhFs |