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 do ls
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.
Honestly I felt the same way for a long time, until I decided to just learn the motions. Now I couldn't go back.
The combination of actions and motions makes it incredibly fast to edit code - Imagine you have a strong in double quotes that you want to change the double quotes to single quotes. There's a plugin called vim-surround that combines with the basic motions and with my cursor before or within the strong, I can just type
cs"'
and it's done.Want to copy everything within a pair of parentheses?
yi)
... So many things like that.Even for editing things like HTML, `cst delete surrounding tag. That will remove the tag around some content without changing the content.
(Neo)vim is incredibly important to my workflow these days and it feels like I write and edit code at the speed of thought.