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.
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.
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?
Yes I understood that. My point is how often do you know you need to move a line exactly 17 lines? Do you count them? Clearly much slower than doing it interactively by holding down ctrl-shift-down for a bit.
I just look at the line number. If the code I want to edit is 17 lines up there’s a 17 next to it. My ide window looks like my comment. Normally an ide would look like this
Line numbers are absolute, not relative (normally anyway; I think some editors allow showing relative line numbers). Anyway I think holding down (page) up/down is going to be just as fast.
There are both modes for absolute and relative line numbers in vim. Holding up/down might be intuitive nd easy to remember, but saving 1 second everytime you need to do this can add up pretty fast
I can’t tell if you’re trolling; Page up and page down are different from “I need to jump 10 lines down” with 10j. Or 11 lines with 11j. Or “Delete the line I’m on and the six below it” with d6j.
They’re not significantly different. Maybe it takes you 1s and me 2s. Not worth the effort of learning. Especially because Vim comes with significant downsides compared to full IDEs that will make you slower overall.
You can’t have a full integrated debug session with a watch window, locals (with an expandable tree for objects), stack, breakpoint list all visible at once. I.e. something comparable to this.
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.
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.
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
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 <,
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.
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.
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
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
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.
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.
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.
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.
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.
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.
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
Yes I understood that. My point is how often do you know you need to move a line exactly 17 lines? Do you count them? Clearly much slower than doing it interactively by holding down ctrl-shift-down for a bit.
I just look at the line number. If the code I want to edit is 17 lines up there’s a 17 next to it. My ide window looks like my comment. Normally an ide would look like this
1
2
3
4
5
6
7
8
9
10
11
Thoose are line numbers in IDE. You don’t count them, you see them
Line numbers are absolute, not relative (normally anyway; I think some editors allow showing relative line numbers). Anyway I think holding down (page) up/down is going to be just as fast.
There are both modes for absolute and relative line numbers in vim. Holding up/down might be intuitive nd easy to remember, but saving 1 second everytime you need to do this can add up pretty fast
Not “move the current line of code”, but instead “jump the cursor a number of lines”
Oh so like page up/down then? Not exactly showing the raw power of Vim when you can use an existing key press! 😄
I can’t tell if you’re trolling; Page up and page down are different from “I need to jump 10 lines down” with
10j
. Or 11 lines with11j
. Or “Delete the line I’m on and the six below it” withd6j
.They’re not significantly different. Maybe it takes you 1s and me 2s. Not worth the effort of learning. Especially because Vim comes with significant downsides compared to full IDEs that will make you slower overall.
Name a downside, I’ll tell you how you’re probably wrong
You can’t have a full integrated debug session with a watch window, locals (with an expandable tree for objects), stack, breakpoint list all visible at once. I.e. something comparable to this.
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.
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.
That does sound pretty good, and all without an IDE that hangs several times a day too. I haven’t really taken advantage of vim’s power.
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 installmicro
editordeleted by creator
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 itAlso 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<,
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
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.
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.
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
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 ondaw
-> Delete the current wordd3af
-> Delete the next three functionsStuff like that, but with everything
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 justsftp://server
) of choice or WinSCP if you’re on windows, open whatever file with your local graphical text editor of choice.Nano is perfectly fine for me.
But I know the basics of vim if I need to use it.
I have a cheatsheet of all the necessary vim shortcuts!
:q!
Interesting choice of words. You aren’t unable to see…you refuse to. Why would you refuse knowledge?
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.
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.
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
how is it just as fiddly as vim? it’s the only one that’s even half intuitive