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

linuxmemes

20880 readers
10 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
[–] [email protected] 58 points 11 months ago* (last edited 11 months ago) (4 children)

I love vim, but it wasn't always like this. When I was a Linux newbie one of the things that irritated me most is that tutorials aimed at beginners told readers to use vim, without explaining how to maneuver it. People, if you write tutorials aimed at beginners please use nano, even if it's not your preferred text editor.

[–] [email protected] 14 points 11 months ago (4 children)

The first time I opened vim (it was probably just vi at the time) I couldn't exit it and had to shut down the computer by holding down the power button (!) to regain control of the machine. It took a while before I tried it again. Ultimately nano felt like it was for kids and emacs felt like an even worse option than vi so I memorized a few sequences, eg :q!, :wq, how to enter the insert mode and how to exit it and simple edit commands like dd and x and this gave me enough proficiency to get by.

Most all the terminal commands require prior study before they become easy to use. Its because Unix was created by engineers rather than by ui/ux design professionals.

[–] [email protected] 13 points 11 months ago* (last edited 11 months ago) (1 children)

In Linux terminals, you probably could have pressed Alt+F2 or Ctrl+Alt+F2 (F2 could be other F-keys) and log in on a second terminal to recover (by reading the manual or killing it). Also, if bash already had job control back then Ctrl+Z would have suspended vi/vim to the background.

I'm writing this, so people try it and maybe remember it, if they get stuck in some program. Doesn't have to be vi. Maybe you just launched a long dd command and don't want to end it, but want to look something up. These hints may help then.

[–] [email protected] 14 points 11 months ago (2 children)

Help, how do I exit vi?

Ctrl+Alt+F2
sudo killall vim

Hmmm.... never thought about that, honestly, but it makes sense

[–] [email protected] 2 points 11 months ago (1 children)

Sudo not even needed unless you were running vim as root

[–] [email protected] 1 points 11 months ago

Yeah, but in case I’m on a server, I’m going to free all the other trapped users, too! (Although I’d probably just terminate the ssh session then)

[–] [email protected] 2 points 11 months ago (1 children)

sudo killall vim

Just make sure you are using a GNU system.

[–] thejodie 2 points 11 months ago

Luckily it shouldn't do anything but error out on Unix boxes, as vim is not a valid process signal and their version of killall expects a signal argument (or just -)

[–] [email protected] 4 points 11 months ago

It’s because Unix was created by engineers rather than by ui/ux design professionals.

This is somewhat disingenuous. Unix terminal is one of the most ergonomic tools out there. It is not “designed by engineers”, it is engineered for a purpose with user training in mind.

Ergonomics is engineering. UI/UX design is engineering. UX designer that doesn’t apply engineering method is called an artist.

[–] [email protected] 2 points 11 months ago (1 children)

And yet having a sane --help string is enough to get someone going. No need to gatekeep.

[–] [email protected] 1 points 11 months ago
[–] [email protected] 1 points 11 months ago

"tldr [command]" helps a lot more than --help without the verbosity of man. Just fyi.

[–] [email protected] 6 points 11 months ago

i agree with your request. vim used to scare me first.

as a side note: one of the reasons I believe as to why vscode grew in popularity was due to it lowering the barrier to just open up the editor and use it right away(with plugin system and a nice GUI). it is something vim by default doesn't do.

[–] [email protected] 5 points 11 months ago (1 children)

What’s wrong with nano? I love nano. As a general thing I love Linux programs that are terminal based but also have a decent UI. Neomutt comes to mind for email.

[–] [email protected] 4 points 11 months ago

There’s nothing wrong with nano, it’s a simple text editor while vim is much more versatile and aimed towards that are already accustomed to terminal software.

[–] [email protected] 3 points 11 months ago

This 👆👆👆.