as I’m going through the process of learning vim, I’m discovering newfound powers. one of them being to execute commands from vim itself.
below examples might better explain some of them:
-
want to see what files are in current directory? enter command mode(by typing
:
) and follow it by a bang(!
). then dols
like you’d do in a terminal and press enter. this is not limited to just ls. you can enter any command that you can enter in terminal. for example::! uname --operating-system
(which will output GNU/Linux :)) -
so you want to quickly save just a certain part of your file into another file? just select everything you need by entering visual mode(
v
) and do:w filename
(actual command you’ll see would be'<,'>:w filename
). verify it using 1.(i.e.,:! cat filename
. -
want to quickly paste another file into current one? do
:r filename
. it’ll paste its contents below your cursor. -
or maybe you want to paste results of a command? do
:r !ls *.png
.
vim is my ~
sweet ~
now. make it yours too.
On one hand, yes. On the other hand, you don’t need all the keybinds, just remember the useful ones!
Want to delete a single word? Esc to enter command mode, d i w to delete the word you’re on, I to begin typing again.
Everything between two of any char, usually parenthesis or quotes? Same process but d i {char} so something like “what are (you doing senpai)” can be made “what are ()” with just a few very quick keystrokes.
Delete to end of line? D.
Copy a whole line? yy (or Y for the rest of the line after cursor). Any time you do dd to delete a full line (or D for the rest of the line, or any other delete action) the contents are also copied so you can paste them again somewhere else.
Can you do anything with vim that you can’t do with a GUI + moise? Technically no - but with vim you can do things significantly faster. There is an initial learning curve to get used to basic keybinds and the 2 modes, but it’s well worth it, and not using the mouse is intoxicatingly faster and more fun.
I highly recommend doom emacs over vanilla vim- all the power of emacs, but with vim keybinds and a lot of other QOL features. There isn’t much that isn’t already built into vanilla emacs, much less doom emacs, and even less that can’t be added with some packages that you can install from in the app. Web browser? Eww, and you even can use your vim keybinds in it. Doesn’t render everything great graphics wise, but it’s perfect for looking up documentation if you’re lazy. Email? Built in baby. Git? Magit. Notes? Embrace the one true note format, org files and org-roam. File explorer? Dired right in baby. Terminal? Space + o + {t, T} for a terminal in its own buffer for all your terminal pleasures.
I also always install neovim as a backup, it was my favorite vim client for a while. It’s useful to be able to use it for basic editing if I’m already trolling around in a terminal such as quick edits to docker-compose files before rerunning them