My current reference sheet I have a bunch of commands on that I’m trying to memorize or reference frequently.
I started using
vimwiki to keep track of things I learn while I'm coding. I can quickly open it, and jot something down or reference a previous note. This is super useful because it's in my terminal with vim, tmux, and friends.
Not sure how I'm going to use this log going forward now. I love how helpful it's been, but don't want to duplicate knowledge in two places.
I've used folds sparingly so far because I didn't really know how to use them. Earlier today, I had to edit a really large JSON file and it was a pain to navigate so I decided I should try out folding it.
All I had to do was add
set foldmethod=syntax to my vimrc and I was off! I previously installed
vim-polyglot so it was an extra bonus that it brings in syntax files on-demand to help with folding.
One of the side effects of how I use Vim is a lot of buffers are opened. I'll make some edits, then switch to a new file, keeping the buffer open, either in the background or foreground.
Once they start piling up, it's a paid to open the buffer list, navigate to each buffer, and close them all. I thought there had to be other people with this problem and found a plugin that takes care of it for me.
close-buffers.vim give me the ability to interactively select buffers to close, close all hidden buffers, and several other options.
I just used my first Vim macro!
I knew they were super powerful, but I was avoiding them because the seemed like something hardcore Vim users used. I don't think I'm hardcore (yet). I've only used Vim for a month and a half!
Anyway, I was working in Patreon's code base and had to internationalize a bunch of strings so I recorded a macro to change
'some string' into
qd ysa'( i__ q
Now whenever I call
@d, I save a few seconds.
My vimrc was getting disorganized after tinkering with it over the past month so I organized it into sections: Plug General, Appearance, Key Mappings, Leader Commands, Plugins, Coc, Autocommands, Commands, and Functions.
These sections are pretty self-explanatory, except I separated out "Coc" into it's own section out of "Plugins" because it has a bunch of extra configuration.
I also added a
foldmethod comment (" vim:foldmethod=marker) so all the sections are collapsed when I open up my vimrc to change something.
The thing I like about it that
vim-yoink doesn't have is it allows you to view the entire clipboard with the
YRShow command (I mapped to
<Leader>y) and select one of the yanks to paste.
I use Alfred's built in clipboard history manager to cycle through different things I've copied, but it didn't work well with Vim. Formatting was messed up and my system clipboard picked up some Vim operators I didn't care about (mostly
I could have spent more time configuring, but for now I decided to go with
vim-yoink, which "automatically maintain[s] a history of yanks that you can choose between when pasting." It even works with the system clipboard!
When I was writing a blog post in Vim, I wanted to turn on spellcheck and change a few other settings so I learned that I could use an autocommand to apply settings based on the open file type.
autocmd FileType markdown setlocal signcolumn=no spell textwidth=80 colorcolumn=+1
I found myself wanting a way to run things on the command line while using Vim so I decided to try out tmux. Like Vim, I had come across tmux before, but never found it that useful.
Now, I almost exclusively run Vim in tmux. With the
vim-tmux-navigator plugin, you can quickly jump between Vim splits and tmux panes too.
Typically I will use two tmux panes. One on the left running Vim and one on the right for executing build scripts or tests. It's nice coding and seeing the results nearby.
Vim has a powerful ecosystem of plugins that do almost anything. I wanted to carefully approach installing plugins when I first started so I didn't end up with too many. My goal was to make Vim a little more like the IDEs I'd grown used to since I started programming.
With that in mind, I installed a plugin manager,
vim-plug, and added a few to try out. By far the most useful plugin is
coc.vim. I mentioned
coc before in the output on snippets a couple days ago. It also powers my autocomplete, formatting, etc.
Not all Vim plugins adds functionality. My color scheme is also a plugin! I'm using
jellybeans. Vim is infinitely configurable and you can often find a plugin to help make a task easier or faster.
The first day I started using Vim, I configured a bunch of basic settings that are mostly unchanged today.
They are the foundation of my vimrc. Simple things like showing line numbers (
set number) and the current mode (
set showmode), and converting tabs to spaces (
I also disabled the arrow keys to force me to use
hjkl for everything. Here's what my vimrc looked like back then.
In the last output, I said the next few would focus on documenting everything I learned before I signed up for Futureland. I lied. I'm learning too much, too quickly. Instead they will be a mix of previous learning and new stuff.
Now for some new stuff. Snippets. coc.vim, the ["Intellisense engine"] I'm using, includes an extension for code snippets. I’ve always wanted to use snippets to speed up development (by reducing the amount of code I need to write) but never wanted to invest time in building up a repository of them.
I'm a month or so into learning Vim so thought I would start documenting the journey. It's a shame I didn't start recording from the beginning — since I learned a lot — but here we are now. Over the next few days, I'll catch Futureland up to speed, using my Git commit history. Today, I thought I would talk more about the motivation for learning Vim and how I got started.
Vim is a text editor for efficiently creating or changing text. It's popped up every so often since I started programming, but I always dismissed it. After feeling bored with VS Code and seeing a coworker use Vim. I decided I would explore making the switch. I could try it for a week and retreat to the comfort of VS Code if it wasn't for me.
I wish I started learning Vim 10 years ago! There are not many things I can say that about.