News for hackers. Stuff that matters.
Re:Learn Vim (2021) by bee_rider on Friday February 24, 2023 @10:03PM (#34933398)
I dunno, I never sat down to learn vim, just used it every day for a couple years. I’m not one of those wizards who is, like, answering stack overflow questions or writing wiki articles, but I get the job done. Is it necessary to learn Vim? Seems like a chore.

Is the text editor really a bottleneck for anyone? I find that no matter how slow I type, I need to spend more time thinking of what to type anyway, if I’m doing anything interesting.

Re:Learn Vim (2021) by tambourine_man on Friday February 24, 2023 @10:25PM (#34933523)
Many years ago, decades actually, I used TextEdit + services shortcuts to filter text through grep, sed, awk. I found even syntax highlighting a distraction.

Then I saw someone using Vim. I was instantly hocked. The sheer speed of everything happening in the screen, I needed to learn that. And so I did and it’s been an amazing ride.

It’s a pain at the beginning, the amount of time I invested in my .vimrc will probably never payoff, mathematically speaking. But the joy and delight you get from using it everyday, the freedom and efficiency is just addictive.

It’s not for everyone, I was raised on the Mac paradigm, where “modes are evil”, so it was a step learning curve. But few programs have brought me this much joy and excitement over the years.

Re:Learn Vim (2021) by blindhippo on Friday February 24, 2023 @10:27PM (#34933539)
It’s not a bottleneck for anyone.

Some people just like playing with tools. They do it for loads of reasons, but end of the day it’s basically a hobby tangentially related to software development.

I torment a friend of mine who talks all the time about VIM and their most recent config/workflow. But end of day, he’s happy and having fun while being productive.

Re:Learn Vim (2021) by scooble on Saturday February 25, 2023 @03:09AM (#34934864)
I feel that your last point is underappreciated. I enjoy my work more if I enjoy using my tools, and I enjoy using vim.
Re:Learn Vim (2021) by X6S1x6Okd1st on Friday February 24, 2023 @10:23PM (#34933514)
I similarly have mostly not learned vim, but every now (usually on fridays) I spend a bit of time seeing if there's an easier way to do something. My recent learning was :quickfix.

I normally build in a terminal anyways so this was a pretty nice little speedup for iterating on static analysis results or a build problem.

Re:Learn Vim (2021) by antisceptic on Friday February 24, 2023 @11:15PM (#34933835)
I don't understand this attitude. It's clearly more conducive to solving problems to be able to move around our environment more quickly. It's extremely useful (compared to a beginner who only knows insert and write quit) to understand the different vim modalities as well as a few commands to jump around a file or to perform regex or to call an external command.

When you're not proficient with the necessary tools, you're interrupting your flow with what you consider mundane. That you consider text editors mundane is more reason to move as much of that process into muscle memory as possible, not less!

Why are we pretending like mastery of our tools is unimportant? I hear this sort of opinion most eagerly expressed by engineers who in fact are quite handy with vim! Is this some new kind of flex where we're all pretending to take a purely academic approach to programming instead of becoming proficient with the tools of our trade?

Re:Learn Vim (2021) by cod1r on Friday February 24, 2023 @11:21PM (#34933855)
I feel like at a certain point of efficiency there are diminishing returns. A good analogy is typing speed. You don't need to have 200 wpm to be productive. Everybody adapts to how efficient they need to be at what they do. Vim is not a requirement for being productive. If it was, it would be the most popular editor. I also don't think the person you are replying to is saying that it isn't important to "master" your tools. I think they are just saying the editor that you use isn't the most important thing and I agree with that sentiment.
Re:Learn Vim (2021) by archarios on Saturday February 25, 2023 @02:09AM (#34934589)
VS Code with vim keybindings is extremely popular. If you don't know how to use vim, you just don't realize how much of a time/effort saver it is. I can't imagine not having wrist pain if I had to use the mouse every time I wanted to move my cursor around for more than a few characters/lines. Trying to not use vim feels like going back to the stone age whenever I can't use it. I like to use vim bindings even when I'm editing english.
Re:Learn Vim (2021) by scotty79 on Saturday February 25, 2023 @07:21AM (#34936114)
Ctrl+G + line number

Ctrl+F + what you are looking for

PgUp PgDown plus visual scan

Home, End, arrows (plus potentially control) for pinpointing the exact spot. Shift for block marking.

Ctrl+C (or X), Ctrl+V for moving stuff around.

No reason to touch mouse or learn cryptic shortcuts.

Re:Learn Vim (2021) by blackbear_ on Saturday February 25, 2023 @08:58AM (#34936712)
Only after learning vim you realize how clumsy and slow this is.
Re:Learn Vim (2021) by tmtvl on Saturday February 25, 2023 @11:29AM (#34937870)
I used vim for 5 years, afterwards I switched over to Emacs, and I couldn't disagree with you more. What's clumsy and slow is having to switch between insert mode, normal mode, and visual mode hundreds of times while working rather than just using modifier keys for special actions.
Re:Learn Vim (2021) by maleldil on Saturday February 25, 2023 @11:52AM (#34938092)
If you're entering normal mode for one or two commands at a time, that could be problem. However, if you're fast at entering normal (i.e. use jj, fd, Caps Lock as Esc, etc.), that's not a meaningful overhead.

On the other hand, having to constantly hold Control/Alt, including long chords (e.g. with prefix + count), feels much worse for me. I use Emacs keybinds on the terminal (outside of vim), but I can't imagine having to constantly press modifiers. It's not as comfortable as switching to a mode where those actions are explictly first-class.

Re:Learn Vim (2021) by Scarbutt on Saturday February 25, 2023 @12:07PM (#34938241)
The difference in manipulating text in emacs vs vscode is day and night though.
Re:Learn Vim (2021) by jamal-kumar on Saturday February 25, 2023 @11:30AM (#34937883)
vim equivalents:

20g line number

/ find what you are looking for

same for pgup and pgdown

i think what you're describing sounds a bit like visual mode which is just v

d and p for cut and paste if moving stuff around needs to be done (dd for whole line, 5dd for 5 lines, v and then j a few times in visual mode before d or y for yank (copy), etc...)

Note how you don't have to strain your pinky to hit ctrl for any of these?

Re:Learn Vim (2021) by dmitriid on Monday February 27, 2023 @02:37AM (#34953989)
> Note how you don't have to strain your pinky to hit ctrl for any of these?

Note how insanely context-dependent all these are? How it's completely different commands for what is essentially the same operation?

Keys can be remapped (I have CapsLock mapped to Ctrl).

Re:Learn Vim (2021) by jamal-kumar on Monday February 27, 2023 @11:18AM (#34958175)
Yeah I got mine remapped to esc

It's just a different modality mine just exists a little closer to where my fingertips chill on the home row

Re:Learn Vim (2021) by noloblo on Saturday February 25, 2023 @07:50AM (#34936265)
Electron makes it too slow neovim and sublime are snappier it's not even funny
Re:Learn Vim (2021) by zamnos on Saturday February 25, 2023 @03:00AM (#34934828)
You don't need to hit 200 wpm but I haven't seen too many programmers who hunt-and-pecks at the keyboard and can't touch type. Even on a Qwerty keyboard you should be able to get high double digits, if not hit/exceed 100 wpm. The two sites I like for practice are:

https://monkeytype.com/

https://play.typeracer.com/

Re:Learn Vim (2021) by aquariusDue on Saturday February 25, 2023 @04:12AM (#34935165)
Typing fast for sport is fun, that I understand. But it's really weird (to me at least) how most developers say that measuring lines of code as a performance metric is an awful idea, and then there are others that more or less kinda shame people for not being good or great typists.

Am I crazy? Isn't it conflicting? Maybe those two groups don't overlap at all? Then do great typists believe measuring lines of code to be a good idea?

And being proficient at using your code editor doesn't require or exclude being fast at typing. Between the two I personally would chose mastery of vim/emacs or some other IDE over having a typing speed faster than 80 WPM. Sure, both would be great, but if I have to choose one I know which I prefer.

Full disclosure: I type on a QWERTY layout at an average of 65 WPM.

One thing I'd add is that some stuff like Home Row Mods, Caps Lock as ESC and enhancements like that seem to me like a larger productivity booster than the jump from 70 WPM to 100 WPM. But even so I might be wrong on that because I personally haven't experienced writing faster than 70 something WPM at my best.

Anyway, rant over and I apologize if I come off as rough. It's just something that's been nagging at the back of my mind and I still don't know how to properly put it into words.

Re:Learn Vim (2021) by zamnos on Saturday February 25, 2023 @04:32AM (#34935265)
I don't see how they are related at all! Even the worst programmer can see that if we were to judge by LoC that they could add frivolous lines to juke the stats. LoC is stupid and I don't see how LoC is relevant to the conversation at hand. I do think that every programmer's had that stroke of inspiration where they can't type fast enough to get the code out of their head though

As far as typing speed, the difference between 10 wpm and 40 wpm is far greater than 70 wpm and 100 wpm. You don't have to hit 100 wpm to be a good programmer, but I have a hard time believing you can be one hunting and pecking at 10 wpm. (With exception made for the blind.)

Re:Learn Vim (2021) by roundandround on Saturday February 25, 2023 @07:55AM (#34936300)
Sure typing speed utility drops off pretty quickly but if it is a bit lower or makes just a part of your brain stop coding and think about more physical matters that should be in muscle memory then I think it has an effect on your ability to write a flow of code. (I saw this a great deal with regional keyboard layouts.)

Its hard to say if what you program will ultimately be better or worse as being used to micro interruptions can mean more diligence as much as they can mean forgetting an important caveat. But generally I think it means you are progressing at a slower rate toward an integrated group of skills.

For editors and IDEs it can be quite similar for refactoring, debugging and analysis of the code base. The worse you are at using them or the more indirect your proximity to the exact code base of the version you are working with, the more you rely on building/maintaining mental models which has its benefits and dangers.

I think its very hard to say anything is right or wrong. I do think that the question of where you expect to be in terms of needing each skill as your mastery of others grows is the question.

Re:Learn Vim (2021) by dxdm on Saturday February 25, 2023 @08:51AM (#34936649)
> that measuring lines of code as a performance metric is an awful idea, and then there are others that more or less kinda shame people for not being good or great typists

I'm not on board with shaming people, nor do I think that lightning speed typing is needed. However, one I want to type my lines of code, no matter how few they might be, it's about translating thoughts into code as easily as possible. It helps not having to bother with the details of typing, but the typing more or less taking care of itself. Keeps the zone and the focus on the code, and not on the keys.

Re:Learn Vim (2021) by b0afc375b5 on Saturday February 25, 2023 @04:24AM (#34935223)
Also shoutout to https://www.keybr.com

I used this to learn one hand typing when I was bored.

Re:Learn Vim (2021) by scotty79 on Saturday February 25, 2023 @07:25AM (#34936131)
Touch typing seem like a useless skill to me. I use keyboard more for navigation than actual typing. I read many times more code than I write.

And when I write I just need to see the keyboard with the corner of my eye and my fingers just find the right keys as I'm pecking, purely through muscle memory that I've gained with zero effort just by years of experience.

Re:Learn Vim (2021) by HAL9000Ti on Saturday February 25, 2023 @09:22AM (#34936868)
What do you think Linus Torvalds' typing speed is? https://youtu.be/S5S9LIT-hdc?t=3
Re:Learn Vim (2021) by kamikazechaser on Saturday February 25, 2023 @09:44AM (#34937037)
Low 50 if we go by the video.

He might obviously be in the 80+ range irl.

Re:Learn Vim (2021) by MonkeyClub on Sunday February 26, 2023 @05:49AM (#34944584)
He’s also looking at the keyboard, so maybe he’s unfamiliar with it. Perhaps when shooting the video they thought, hey, we need that cool clicky sound, and had him use a mechanical keyboard.

But in all, he types fast enough to write Linux.

Typing speed is important for typists. For programmers, I’d say that even a 50-80 wpm rate is adequate for getting your thoughts down on the file and off to the compiler.

Re:Learn Vim (2021) by soitgoes511 on Sunday February 26, 2023 @08:09AM (#34945241)
I have to switch back and forth between french (azerty) and english (qwerty) many times a day. My typing speed has regressed. But I manage just fine without hitting 200 wpm. How does one practice the constant switiching?
Re:Learn Vim (2021) by btschaegg on Saturday February 25, 2023 @05:18AM (#34935484)
I'm in two minds about this. Yes, wpm aren't everything (see the other discussion in this thread) and the same goes for the full range of your editor's functionality.

On the other hand, tools like Vim, Kakoune and Helix shouldn't be treated like your average Java IDE, for example, which shifts the line of what I'd say is reasonable learning investment. What you're dealing with there is a programming language for text manipulation. If you're fluid enough in it, you open your mind for solutions you'd never have considered before. I'd say you'd need at least intermediate Vim skills and should know macros until that effect kicks in.

I have quite some anecdotes about e.g. creating integration tests where my colleagues wouldn't test something properly just because doing so would involve 10 minutes of drudge work in their simplistic editors, instead opting for "deploy & pray" when the task was totally doable in a couple of seconds with a Vim macro. I find that at least in this regard (as for all programming languages), Benjamin Lee Whorf's quote certainly holds true: "Language shapes the way we think and determines what we can think about."

That's why I also think GP had a point. I would probably be much more in your line of thought if we were only talking about the usual contestants like refactoring snippets etc. here, although even having them handy will already influence how many of us work with our code.

Edit: As another analogy, I feel that modal editing has about the same effect on thinking as switching from roman numerals to arabic ones. The reason why it hasn't completely caught on is just that it's less intuitive and text manipulation is not as fundamentally important as calculations for our civilization.

Re:Learn Vim (2021) by dmitriid on Saturday February 25, 2023 @08:38AM (#34936562)
> would involve 10 minutes of drudge work in their simplistic editors, instead opting for "deploy & pray" when the task was totally doable in a couple of seconds with a Vim macro.

I really very much doubt this. Sounds like an application of rose-tinted glasses and wishful thinking to some one-off task that then is extrapolated to all tasks.

Re:Learn Vim (2021) by btschaegg on Saturday February 25, 2023 @09:19AM (#34936854)
Hey, I didn't say I do this every day. But I've had enough of these conversations that I can assure you that this low a bar is needed for some people to skip important jobs. If your doubt applies to the usefulness of knowing the system, I don't really know what to tell you -- if you can't take someone's word for it, I don't think anything less than you experiencing it yourself would convince you, anyway.

As for one-off tasks: Yes, that's what Vim bindings are good for. Just like AWK-Scripts are great for throw-away scripts. Being able to perform simple one-off tasks quickly is, incidentally, a skill I find to be far too rare even in programmers. I mean, I would've thought at least us techies see the benefit in knowing how to teach the computer to do the menial tasks for us.

Re:Learn Vim (2021) by dmitriid on Saturday February 25, 2023 @09:53AM (#34937100)
> But I've had enough of these conversations that I can assure you that this low a bar is needed for some people to skip important jobs. If your doubt applies to the usefulness of knowing the system

No. My doubt extends to "omg vim is so amazing that these tedious tasks take seconds unlike in these primitive text editors".

Because my experience at work has been consistently the exact opposite: vim users routinely take longer time for most tasks precisely because it's a rather primitive text editor, and not a code assist tool.

Re:Learn Vim (2021) by btschaegg on Saturday February 25, 2023 @10:05AM (#34937176)
Well, I'm not really sure if we're talking about the same thing. If you're talking about language integration, I've got no quarrel with that (see my earlier comment). The experiences I was referring to are more along the lines of text manipulation in general, not "rename class", "extract method" and the like. If you're talking about features like that, I'd readily agree with you: Trying to do the same thing with Vim macros is just picking the wrong tool for the job.

I won't beleive your assertion, however, that this invalidates the benefits of learning Vim bindings (especially since respective emulation layers are at least passable in pretty much any editor or IDE worth its salt).

If you're talking about normal minute-to-minute text handling and creation of text files without language assist (scripts, cucumber tests, any programming task not blessed by your IDE's refactoring integration) on the other hand, we're at the point where I have trouble believing you.

Re:Learn Vim (2021) by dmitriid on Saturday February 25, 2023 @11:04AM (#34937634)
> If you're talking about language integration, I've got no quarrel with that

I am. Because we are talking about these mythical Java programmers who couldn't do something that Vim would have done in seconds

> I won't beleive your assertion, however, that this invalidates the benefits of learning Vim bindings

And the reason to learn them is because there's a fairy tale of some programmers not doing the job that we're led to believe could be solved in seconds in vim.

> If you're talking about normal minute-to-minute text handling and creation of text files

Are we? Let me remind you: "I have quite some anecdotes about e.g. creating integration tests where my colleagues wouldn't test something properly just because doing so would involve 10 minutes of drudge work in their simplistic editors, instead opting for "deploy & pray" when the task was totally doable in a couple of seconds with a Vim macro."

Oh look. We're literally talking about programming.

> we're at the point where I have trouble believing you.

Let's start with your fairy-tales before we come to believing or disbelieving what I wrote.

Re:Learn Vim (2021) by btschaegg on Saturday February 25, 2023 @12:02PM (#34938188)
Ah, so we're arguing in bad faith. In this case, I won't try to keep some semblance of a useful discussion going. For your interest, most of our integration tests are written in a cucumber dialect and contain very verbose "business-y" messages passed in and out of the system under test.

But then, I'd guess from your tone that this won't stop you from misreading another comment of mine and accusing me of lying, so I'll just wish you a nice weekend instead.

Re:Learn Vim (2021) by dmitriid on Saturday February 25, 2023 @02:05PM (#34939414)
> Ah, so we're arguing in bad faith.

Yes and no. My very first reply pointed out exactly what I found incredible in your story.

If we're sticking to anecdotal data, over 22 years as a programmer I've never seen those amazing feats of vim voodoo you're talking about.

> But then, I'd guess from your tone that this won't stop you from misreading another comment of mine and accusing me of lying

Really? Misreading? Go and read mu very first comment, will you?

Re:Learn Vim (2021) by MrJohz on Saturday February 25, 2023 @05:25PM (#34941058)
I get what you mean, but "minute-to-minute text handling" for me is pretty much always covered by my IDE's refactoring integration. Like, in the last few weeks, I've written a whole load of Python, Rust, and Typescript, where the IDE covers pretty much all my needs, and then maybe in total a day or so of fiddling with Dockerfiles and config files? None of which were really long enough or complicated enough that I needed anything complicated in terms of editing techniques, most of my time was spent waiting for builds to run and then trying something else out.

So yeah, you're probably right that Vim techniques are far better when you're editing those sorts of files, but those really do make up the tiniest fraction of my time, and everything else is covered by IDE refactoring tools. And if I had the choice, I would always rather have the better IDE tooling than the improved text editing, so this doesn't really sell me on the whole thing.

I would like to try Vim-mode for VSCode at some point, because I can imagine that being a kind of "best of both worlds" thing, but I've not really got round to it yet.

Re:Learn Vim (2021) by sanderjd on Saturday February 25, 2023 @12:22AM (#34934141)
I wrote a comment agreeing with your parent comment, but this probably applies to me:

> I hear this sort of opinion most eagerly expressed by engineers who in fact are quite handy with vim!

But to me, that makes me think that you should wonder whether there's something to that. For me, you're right, I did get really handy with vim at one point. After I had been using it to a very basic level for two or three years, I felt kind of sheepish and guilty and endeavored to learn it properly. So I bought into doing it "right" for awhile, wrote a bunch of custom script to customize it, the whole shebang. And my conclusion after that was that it wasn't really worth it. I went back to just using the basic stuff. This is also, importantly, supported in every IDE's keybindings, so I can use modal navigation and editing anywhere without needing to customize anything, which is pretty great.

Re:Learn Vim (2021) by croh on Saturday February 25, 2023 @01:16AM (#34934345)
It is not about only Vim as editor but Vim as keybindings too. Nowdays, most of all modern IDEs support Vim keybindings along well integrated IDE features.
Re:Learn Vim (2021) by archarios on Saturday February 25, 2023 @02:10AM (#34934594)
Even a lot of web-based IDE type things have VIM bindings available!
Re:Learn Vim (2021) by BeFlatXIII on Saturday February 25, 2023 @09:47AM (#34937061)
…and Mac OS X has Emacs-like bindings. We live in a world of abundance.
Re:Learn Vim (2021) by dmitriid on Saturday February 25, 2023 @08:36AM (#34936544)
> It's clearly more conducive to solving problems to be able to move around our environment more quickly.

Then vim ain't it.

My "vim-empowered" colleagues spend significantly more time trying to find symbols, related configs and tests, function definitions and interface implementations than I do. Because their hodge-podge collection of vim plugins and extensions rarely amounts to anything more than a full-text search across the whole project.

But sure, you can count the number of lines where you need to go and then the number of characters/words you need to move in the line and code it in 3 characters. By the time you've done that I've clicked there with the mouse, found the definitions and done project-wide refactoring.

Re:Learn Vim (2021) by bee_rider on Saturday February 25, 2023 @12:32PM (#34938468)
I’m definitely not going to try and endorse intentional incompetence.

I think it is just not so tricky in the first place. If you start out with “you can use hjkl for directions, and y for copy, d for delete, these can be combined with directions and prepended with numbers; remember the modes, and :w and :q” vim is already as good as most others editors. Then I’d just start using it, rather than trying to learn from the top.

My filter for when I should learn a new feature is when it solves a task I find repetitive and annoying (or I will make a post on Hackernews that says learning Vim is useless, to get a list of features that people actually use day to day). Since we all have different idiosyncrasies, this filter will be different from person to person, so I don’t really get the idea of a guide.

That said, I’m just describing what worked for me; if someone wants a guide they should go for it, we all learn differently after all.

Re:Learn Vim (2021) by sedawk on Tuesday February 28, 2023 @01:08PM (#34972641)
> My filter for when I should learn a new feature is when it solves a task I find repetitive and annoying

There! You said it so well... that's the #0 reason why I go RTFM'ing, because most likely my problem fits a pattern someone already encountered and figured a solution for. Or nobody did and I put together a less annoying workflow to deal with it.

Sometimes the effort is worth it, but often it is just fun trying out new things/techniques.

Re:Learn Vim (2021) by blep-arsh on Saturday February 25, 2023 @02:00PM (#34939379)
This is true for tools in general but I've managed to master vim to the point I can be somewhat productive yet it never feels quite ergonomic. Moreover, I think vim-like UI is holding everyone back nowadays. Learning all the intricacies of vim feels like an exercise in brute-forcing a deliberately user-hostile design.

For example, is it really still OK to have little to no visual feedback when entering commands with range/count prefixes, or to have to fall back to custom commands and configs in order to search for strings containing "/"? Or have commands with tiny edit distance between them do radically different things (e.g. "w! " and "w !")? Vim's modal editing implementation also can't handle non-Latin keyboard layouts so I find myself switching keyboard layouts all the time (e.g. normal mode->insert mode->layout switch->type some text->layout switch->normal mode).

Re:Learn Vim (2021) by lycopodiopsida on Sunday February 26, 2023 @02:34AM (#34943801)
> Vim's modal editing implementation also can't handle non-Latin keyboard layouts

This issue is solved by langmap.

Re:Learn Vim (2021) by blep-arsh on Friday March 03, 2023 @11:09PM (#35018079)
It really isn't. I've spent a lot of time trying to tune langmap/keymap and looking into other options but the result is mostly unsatisfactory. Some of the issues: only translates the first letter of the command; doesn't support :commands; isn't expressive enough to remap punctuation. Vim needs to be keyboard layout-aware in order to support non-Latin keyboards. It also needs to know whether the current input state is expecting text or a command (e.g. typing ":s/" from the normal mode should always be parsed using the Latin layout but the currently active input language should be used following the "/").
Re:Learn Vim (2021) by wooque on Sunday February 26, 2023 @05:06AM (#34944397)
Best programmers I know don't use vim. If you feel bottleneck with your text editor you are working on wrong problems.
Re:Learn Vim (2021) by racked on Monday February 27, 2023 @02:51AM (#34954070)
If you're forced to work in the terminal, vim's great. But to get it to do something approximating an IDE, is it worth the time to tweak configs/plugins and memorize hotkeys, rather than just using a _real_ IDE?

Besides that, I just find the whole method of navigating (skipping words, skipping an X amount of lines) counterintuitive. It's nothing I can get used to, I will always miss the precision of just taking the mouse and getting the cursor exactly where I want it in one sweep and click.

Re:Learn Vim (2021) by hodgesrm on Friday February 24, 2023 @11:56PM (#34934033)
I'm insatiably interested in most technology but learned vi and vim commands largely through typos.
Re:Learn Vim (2021) by sanderjd on Saturday February 25, 2023 @12:15AM (#34934121)
Yeah I think vim style modal editing is really useful, but honestly I get about 70% of the value from doing it "wrong"; using a fast key repeat and holding down hjkl, using visual mode a lot, etc.

It really doesn't need to be this mystical uber-hacker thing to be useful.

Re:Learn Vim (2021) by bambataa on Saturday February 25, 2023 @02:58AM (#34934821)
I do the same and agree, though I’m trying to push myself to be a little more sophisticated. The beauty of doing it that way is that it takes no thought.

I want to select from here to just after that letter P. With hjkl and visual mode I’m already halfway there. Whenever I try something clever I always find myself thinking “is that the end of a block? Or maybe I should cut directly to P but oh there’s another one on the line above so it’s the second, need to amend” etc etc etc.

Re:Learn Vim (2021) by sanderjd on Saturday February 25, 2023 @08:34AM (#34936533)
Yeah I guess the next like 25% of the value I get from vim comes from "df(" and "ct)" type commands.

Also "dd" and "p" a lot to move lines around and "J" to consolidate them.

So maybe I do use a pretty large amount of functionality pretty frequently :)

I've been thinking maybe that other comment nailed it and most of us who downplay how useful it is to really learn vim have just already done that and forgotten that it was really useful.

Re:Learn Vim (2021) by cess11 on Saturday February 25, 2023 @01:31AM (#34934422)
What vim can do that emacs often is a little too slow for and IDE:s can't is to have finished even quite complicated incisions and changes to your text before you've become conscious that you asked it to do the thing.

This means it can help keep out intrusions about editor maneuvering from your mind at work.

Some people see no value to this and fill their vim bundle with plugins that slow everything down a lot, but some of us really enjoy just surfing the high source and watching our thinking materialise on the screen seemingly effortlessly and immediately.

I use IntelliJ all day every day too, but it's mainly for admin and control stuff and certain types of refactors it can handle better. It's to my code editing as gitk is to my version control. It's where I run the tests, all the plugins, can get docs prerendered, things like that.

It's not where I can quickly navigate the code base, jumping immediately from file to file as fast as a fuzzy hint can get me, and then within the file as fast as Space+string can get me. You might have a keyboard layout with a forward slash easily available, mine doesn't so in normal mode space is /. Navigating in vim can be hjkl w b and so on, sure. But it can also be search. Just say the place and poof, you're there. It's wrong but very similar to where you want to go? n for next or try to name a new place.

This doesn't work in IntelliJ and it's a little off in emacs. I mean you can certainly technically do it but it's slow. There's waiting and the application twitches when it tries to imitate the vim way. Pretty much all finding tasks can be powered by fzf and ripgrep, and unlike IDE:s vim just does the thing when you tell it to. There's is no wait and then a dialog, there is none of 'ok, understand but Ide competent, knows many things, need more info before can do the thing' that tools like IntelliJ and Visual Studio do.

You also want jk to be Esc for sure. Esc is far away and CapsLock is for Control.

Re:Learn Vim (2021) by pama on Saturday February 25, 2023 @10:07AM (#34937186)
I agree with all except that Emacs is a bit too slow or a little off for these tasks. Emacs is rather easy to extend and modify to make exactly fit your task if you want to. Out of the box search is decent and very easy to make better than fzf. Ripgrep is cool and when used within Emacs you can also edit the search results and save them back to all files at once if you want to.
Re:Learn Vim (2021) by julesnp on Saturday February 25, 2023 @11:14AM (#34937728)
If you already have Caps Lock remapped to Control, why not just use Ctrl-[ to get back to normal mode?

Ctrl-[ is the same keycode as escape in terminals, and it's much easier to reach. For me, remapping jk in insert mode results in lag after typing 'j'.

Re:Learn Vim (2021) by maleldil on Saturday February 25, 2023 @01:44PM (#34939246)
> remapping jk in insert mode results in lag after typing 'j'

It only creates lag if you actually want to type 'jk'. Otherwise, you keep typing like normal, and it doesn't matter. You should be able to config the delay, too. I use `fd`, and I can count the number I've noticed it.

Re:Learn Vim (2021) by pynappo on Saturday February 25, 2023 @11:19PM (#34942999)
This issue is only cosmetic as the other commenter explained. vim won't insert the character until you indicate you're not invoking the keymap (either by waiting or by typing other characters).

If you want a plugin that makes it so that the j appears immediately regardless of whether you're trying to invoke the keymap or not, you can use something like https://github.com/nvim-zh/better-escape.vim

Re:Learn Vim (2021) by cess11 on Sunday February 26, 2023 @12:51AM (#34943418)
Keyboard layout, it would actually be Ctrl+Alt Gr+8.

That little lag on the j doesn't matter, when you notice you're already a few keys ahead anyway.

Re:Learn Vim (2021) by julesnp on Thursday March 02, 2023 @04:24PM (#35002292)
Ah, I hadn't thought about international keyboard layouts, yes, that sounds like it'd be a pain to type.
Re:Learn Vim (2021) by vdm on Saturday February 25, 2023 @05:51PM (#34941281)
you had me at

> 'ok, understand but Ide competent, knows many things, need more info before can do the thing'

Re:Learn Vim (2021) by stevekemp on Saturday February 25, 2023 @01:35AM (#34934443)
In the past I was mostly the same, but then I realized that I was doing myself a disservice by not fully knowing my tools.

Every month or two I'd read a manpage for something and really experiment with using all the facilities - most of them wouldn't stick, but every now and again some would.

Just pick something like "less" or "bash", read the manpage, and try using something you've not done before. It's very helpful.

For Vim I went through the tutorial a few times a long time ago, and that really helps. (For twenty years I used emacs for "everything", and vim solely for email, via mutt and later my own client.)

Re:Learn Vim (2021) by _glass on Saturday February 25, 2023 @03:38AM (#34934993)
You are right and wrong. I paired with a lot of juniors, and especially in the beginning stage of your career it is important to write as fast as your thoughts are. And in the same way, to be able to jump directly to the place where you want to change something. I belong to the Emacs tribe, and macros were really so impressive while doing my Masters for a lot of people, mass-changing classes definition through "programming" without really thinking. Still, mastery in macros impressed people and saved projects through really fast iterations, it's faster than Excel or Python. It's that a lot of times, you have a thought and want to execute on it, seeing the result immediately. What I don't like about Emacs and Vim is the lack of great debugger support. I would love a world where unit testing, functional data structures and static typing obliterate debugging, but we're not there yet. What I encountered is, that actually real mastery of tools made or broke projects. The 80/20 rule is not what I observed in reality. It is really long tails all the way.
Re:Learn Vim (2021) by the_gipsy on Saturday February 25, 2023 @04:47AM (#34935340)
Bottleneck, yes but who cares. Your code or work won't be any better.

It just removes a lot of frustration, that's the thing for me. Working less on fiddling with text is focusing more on the conceptual level. Again, I'm not claiming the output is better, I'm just happier doing it.

Re:Learn Vim (2021) by citrin_ru on Saturday February 25, 2023 @05:23AM (#34935510)
> I find that no matter how slow I type, I need to spend more time thinking of what to type anyway

It true that thinking takes more time than typing/editing even you type slow and don't use any hotkeys for editing, but I have a feeling that the less time/effort I spent on typing/editing the less my thinking is interrupted.

With some practice one can use quite a few vim features relying on 'muscle memory' to spend less time/effort on editing and concentrate on what matters - thinking.

Re:Learn Vim (2021) by 127 on Saturday February 25, 2023 @06:48AM (#34935906)
I tried it. It's good for editing system configs on a Linux system through SSH. That's about it. A lot of people are trying to fit a square peg into a round hole. People also want to appear hip and cool, "hackery". Boring and well known is like oil to the average programmers water.
Re:Learn Vim (2021) by BossingAround on Saturday February 25, 2023 @07:37AM (#34936193)
I love editing configs and fiddling around with a system over SSH with vim. Then, I have to do the main part of my job and put the changes into a YAML file for Ansible automation, which I do in VSCode :)
Re:Learn Vim (2021) by nonima on Saturday February 25, 2023 @07:18AM (#34936101)
>I need to spend more time thinking of what to type anyway

Do you think everything through and then implement it? I do most of my thinking as I type.

Re:Learn Vim (2021) by magpi3 on Saturday February 25, 2023 @08:37AM (#34936547)
> Is it necessary to learn Vim?

Though I no longer program, I am still a huge VIM enthusiast, but no it is not necessary to use VIM. I just love it because it made me more efficient, but at times I think that writing code really really fast might actually be a bug and not a feature.

For editing code it's amazing though. People looking over my shoulder used to think I was a wizard.