41 points

I refuse to see how vim and emacs is worth learning. I only use it because that’s the only option when editing server files. Beyond this, I couldn’t imagine coding in these environments from scratch.

permalink
report
reply
22 points

I learned vim in college when I needed to edit files over ssh. It’s incredibly impressive as far as cli editors go, but I just don’t see how it’s more productive than a well set up ide with hotkeys.

permalink
report
parent
reply
1 point

Most of the productivity comes from the motions; Being able to jump around the text incredibly fast, combining motions with actions and repeats, it’s unparalleled in the sheer speed. I can delete an entire function with the same basic pattern Id use to delete a word.

daf -> Delete the current function my cursor is on daw -> Delete the current word d3af -> Delete the next three functions

Stuff like that, but with everything

permalink
report
parent
reply
2 points

it’s just reliable. especially with remote work, everything is “over ssh”, and you can create a very consistent environment with only a few config files

the amount of AI you can get into these IDEs is impressive, though. probably the only reason I’d ever make the switch

permalink
report
parent
reply
20 points

I barely know Vim, I’m an Emacs guy. Every time I pair with a colleague using an IDE, I find myself having to exercise great restraint, and not complain about how slow and fussy everything they do is. When I’ve worked with skilled vimmers, I have to admit that they invoke the deep magic nearly as efficiently as I do. Hotkeys? Pshaw, child’s play.

permalink
report
parent
reply
44 points

The biggest benefit of (neo)vim is the motions.

Honestly if you don’t use vim motions in your ide of choice, you’re missing out big time. Being able to do things like “Delete everything inside these parentheses”. di( or “wrap this line and the two lines below in a pair of {}” ys2j{ , or “swap this parameter with the next one” cxia]a. with a single shortcut is game changing.

Even just being able to repeat an action a number of times is ridiculously useful. I use relative line numbers, so I can see how many lines away a target is and just go “I need to move down 17 lines” and hit 17j.

Absolutely insane how much quicker it is too do stuff with vim motions than ctrl-shift-arrows and the like.

permalink
report
parent
reply
42 points

Honestly those things just don’t sound like common enough actions to be worth shaving 0.5 seconds off. How often do you know exactly how many lines to move a line by? And how often do you even need to move a line that far?

I still don’t buy it.

permalink
report
parent
reply
2 points

Not “move the current line of code”, but instead “jump the cursor a number of lines”

permalink
report
parent
reply
18 points

Relative lines means each line except the one your cursor is on is relative to your current line. Like this:

5 5k jumps here

4

3

2

1

6 your cursor is here

1

2

3

4

5

6

7

8 8j jumps here

The main reason I like it is I don’t like mouse ergonomics. Keeping my hands on the keyboard just feels better

permalink
report
parent
reply
3 points
*

Feel it’s worth noting that ys[motion][symbol] is a plugin (vim-surround or nvim-surround at your option) and most IDEs therefore don’t support it

Also as for plugins, Tim Pope’s vim-argumentative is another one I love. “Swap this parameter with the next one” is >, and “swap this parameter with the previous” is <,

permalink
report
parent
reply
3 points

Ah right, I forget that that one is from vim-surround. Though I know some ides do support somewhat custom vim-configs!

I didn’t know about argumentative, my swapping is powered by Tree-Sitter

permalink
report
parent
reply
5 points

For me that’s not how it works. there is no way to escape mouse. People use Jira, Figma, Charles, lots of different software that just doesn’t have support for Vim like keys.

Vim is good at editing a single file at a time. In my case I do like 95% reading and 5% editing. Most of the time there are bugs to fix, in a day I might read 20-30 files and change 5 lines in 5 different files.

now add one more detail. None of my coworkers know Vim so when I ask for help I need to make sure I turn Vim shortcuts otherwise they won’t be able to help.

you can go on GitHub on any repo and press . you will get vscode in your browser. Did same with my server and after that I just never want to look at Vim. If I have to use cli then I will install micro editor

permalink
report
parent
reply
10 points
*
Deleted by creator
permalink
report
parent
reply
7 points

Honestly if you don’t use vim motions in your ide of choice, you’re missing out big time. Being able to do things like “Delete everything inside these parentheses”. di( or “wrap this line and the two lines below in a pair of {}” ys2j{ , or “swap this parameter with the next one” cxia]a. with a single shortcut is game changing.

I read things like this and feel like I do a different type of coding than everyone else does. I’m not generating code at this speed.

permalink
report
parent
reply
0 points

I blame my autism

permalink
report
parent
reply
4 points

Yeah exactly this, the main bottleneck when writing code is either reading the existing code or thinking about how I want to implement some logic, not how I move my cursor and writing the code itself.

permalink
report
parent
reply
7 points
*

Being able to do things like “Delete everything inside these parentheses”. di( or “wrap this line and the two lines below in a pair of {}” ys2j{ , or “swap this parameter with the next one” cxia]a. with a single shortcut is game changing.

Those are handy, but most IDEs make at least the second two easy to do without reaching for the mouse (not sure about the first one), and for most people the other conveniences offered by IDEs are pretty attractive. I do use vim when I’m working in the terminal though, because it’s solid and handles large files better than anything else I know.

permalink
report
parent
reply
4 points

I have most of the features of an IDE in my neovim config; name a feature and there’s almost certainly a plugin for it!

Those are just a few small examples. One of my favorite things that vim enables for me is working with text objects. Things like functions, variables, classes, conditionals, paramters… Etc. Any action works with any text object - Want to jump to the next function in the file? Copy everything inside of a conditional? Cut everything up to (but not including) the nearest capital D on the line? Delete just the word your cursor is in the middle of (and one of the spaces around it)? Delete the current line and the N lines below it?

The motions make editing code incredibly fast, and I still have modern features like variable completion, copilot, intellisense, ‘jump to definition’, “hover” information, fuzzy search in project… Name a feature. I highly recommend giving it a closer look for stuff like that.

permalink
report
parent
reply
21 points

I only use it because that’s the only option when editing server files.

suggestion 1: use nano. Unlike vi(m) and emacs, it’s meant for humans, all the command shortcuts you can execute are listed at the bottom.

suggestion 2: browse the servers in question via your file explorer (sftp://user@server or just sftp://server) of choice or WinSCP if you’re on windows, open whatever file with your local graphical text editor of choice.

permalink
report
parent
reply
2 points

My hardcore old IT dudes mocked me once like, “why install Nano? Vim is right there.”

And I had to explain to them that I don’t live in the terminal.

They didn’t install Nano and I spent 5x longer trying to get the settings correct in Vim.

permalink
report
parent
reply
3 points

Cause it cool 😎

permalink
report
parent
reply
4 points

I refuse to see how vim and emacs is worth learning.

Interesting choice of words. You aren’t unable to see…you refuse to. Why would you refuse knowledge?

permalink
report
parent
reply
5 points

Because I’ve followed tutorials and watched plenty of videos on vim and it’s not worth the steep learning curve compared to the gui text editors I’m familiar with.

permalink
report
parent
reply
12 points

Nano is perfectly fine for me.

But I know the basics of vim if I need to use it.

permalink
report
parent
reply
6 points

I have a cheatsheet of all the necessary vim shortcuts!

:q!

permalink
report
parent
reply
1 point

:q looks like a person which jaw hit the desk. Which adequately described me when I found out how to exit vim.

permalink
report
parent
reply
15 points

By the way, for editing server files consider nano. It’s also widely available, has simpler shortcuts and displays them on the screen. It’s obviously not powerful like vim, but a good match when you just need to edit a config file.

permalink
report
parent
reply
-18 points

Nano is just as fiddly as vim and way less powerful when you actually figure out what you’re doing though?

Ie a completely redundant piece of software that has no place being pre-installed anywhere

permalink
report
parent
reply
18 points

how is it just as fiddly as vim? it’s the only one that’s even half intuitive

permalink
report
parent
reply
24 points

Go watch a dev who is competent with vim/emacs and you will feel like a 7 year old on a tablet. I didn’t give neovim a try until I was thoroughly embarrassed with my ability as a professional text editor (software dev).

Is it the motions you don’t like or the editor itself? After 3 days with the motions I could never go back.

permalink
report
parent
reply
7 points

There is absolutely nothing I do in an IDE frequently enough to memorize a bunch of arcane commands, especially in 3 days. Regex solves any mass-operations. For everything else the bottleneck is how long it takes to reason about code, not how quickly I can manipulate it.

I will say that if I keep getting jobs where I have to use an IDE on a remote VM on AWS, I might prefer SSH/Vim to that bullshit. The frequency with which IntelliJ locks up all four of those virtual hamster wheel powered CPUs requiring a full restart is basically daily and sometimes multiple times a day.

permalink
report
parent
reply
3 points
*

Lol I like your writing. The amount of headless boxes I work on has definitely contributed to my desire to get proficient at vim. Now I feel confident when I have to edit some text on a server, rather than hoping the server has nano and the file isn’t too big.

And that 3 days was how long it took until I was moving faster in neovim than vscode after 4 years of use. Though it’s still perfectly valid to use vim motions in any editor you want. Theres a reason most every editor has vim motions.

permalink
report
parent
reply
4 points

There is absolutely nothing I do in an IDE frequently enough to memorize a bunch of arcane commands, especially in 3 days. Regex solves any mass-operations.

Yeah, don’t memorize a bunch of arcane commands. Use regex instead!

permalink
report
parent
reply
7 points

Regex solves any mass-operations

No it doesn’t not after you’ve used LSP-enabled identifier renaming. But that’s the thing: Emacs, vim, helix, all have LSP integration, they’re actual code editors they aren’t lacking any feature that you’d expect from an IDE.

permalink
report
parent
reply
17 points

Are there any videos of this sort of editing, because honestly every single person I’ve watched use Vim has just been like “oh wait that’s the wrong thing… hold on.” constantly. You’re going to say “they aren’t competent” but that’s kind of the point - approximately nobody is competent in Vim because it isn’t worth learning.

Even so, I’d be interested if there are any videos of pros doing real editing (not “look what I can do”) on YouTube. Anyone know of any?

permalink
report
parent
reply
5 points

The Primeagon and Rene Rebe come to mind. Tsoding uses emacs and flys around. I’m still new to neovim and can say the speed at which I can transfer my ideas into the editor is significantly higher.

approximately nobody is competent in Vim because it isn’t worth learning

Come on, you really think its a giant conspiracy from elitists lying about their experience? You think thousands of developers are handicapping themselves for bragging rights?

permalink
report
parent
reply
15 points

Jon Gjengset on Youtube is doing live coding where he uses neovim quite well. And you’ll learn about Rust while you’re at it.

permalink
report
parent
reply
13 points

Is it the motions you don’t like or the editor itself?

I like mouse more.

and only thing bottlenecking my work right now is me not my tools.

permalink
report
parent
reply
7 points

I personally die a little every time I need to take my fingers off the keyboard and reach for the mouse.

permalink
report
parent
reply
8 points

That’s probably what the wife was thinking I bet.

permalink
report
parent
reply
106 points

“See if you just learn these 87 simple keyboard shortcuts, you won’t need to simply drag with the mouse and cut and paste at all!”

permalink
report
reply
2 points

if your wife wasn’t vi-impressed, maybe she already is vi-improved ;-)

permalink
report
reply
2 points

Switch to emacs

permalink
report
reply
3 points

immediate divorce /s

permalink
report
reply

Programmer Humor

!programmer_humor@programming.dev

Create post

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

  • Keep content in english
  • No advertisements
  • Posts must be related to programming or programmer topics

Community stats

  • 5.2K

    Monthly active users

  • 1K

    Posts

  • 38K

    Comments