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.
Or I can just NOT waste my life and my sanity trying to remember all that BS and just use a mouse and a GUI editor. I have no need to feel like a hackerman.
Use what you prefer, that’s a big part of what makes linux great. I get not wanting to go through the learning curve.
That being said, vim is pretty amazing to use, and super efficient, especially with some nice nvim plugins and customization.
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.
I agree that remembering all these commands is a hassle, and so do nvim devs. that’s why they recommend not to learn the commands1. these will become your second habit if used enough number of times. just like
Ctrl+c/v
.1: from
:Tutor
in nvim:also, even if you don’t want to use a terminal-based editor, I’d recommended you to give this talk from Bram Moolenaar(creator of vim) a watch. not the whole talk, just a few first minutes. you can even use YouTube chapters to skim through.
have a nice day :)
Here is an alternative Piped link(s):
this talk from Bram Moolenaar
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I’m open-source; check me out at GitHub.
The good thing about vim or Emacs is that when you know the shortcuts they are so much faster to use than mouse and menu editors (though Emacs has a menu, and supports mouse, which smooths the learning curve)
Or you can get the best of both worlds and use VSCode with the Neovim plugin! All the benefits of a GUI, but with vim keybinds for the editing!