this post was submitted on 10 Dec 2023
688 points (95.5% liked)

linuxmemes

20880 readers
9 users here now

I use Arch btw


Sister communities:

Community rules

  1. Follow the site-wide rules and code of conduct
  2. Be civil
  3. Post Linux-related content
  4. No recent reposts

Please report posts and comments that break these rules!

founded 1 year ago
MODERATORS
 

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:

  1. 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 :))

  2. 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.

  3. want to quickly paste another file into current one? do :r filename. it'll paste its contents below your cursor.

  4. or maybe you want to paste results of a command? do :r !ls *.png.

vim is my ~ sweet ~ now. make it yours too.

you are viewing a single comment's thread
view the rest of the comments
[–] Hexarei 4 points 11 months ago

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.