rhacer,

This relationship can be saved as long as the guy’s wife does not start expressing an interest in Emacs. That would, of course, put an end to the relationship, but if she’s one of those “Notepad is all I need” types, there is hope this can be worked through.

victorz,

Maybe she already evolved past vim to kakoune. 😎

Jumuta,

and evolved past kakoune to helix

victorz,

I actually went, emacs -> vim -> helix -> kakoune.

Hexarei,
@Hexarei@programming.dev avatar

I went helix -> vim -> emacs -> kakoune -> neovim, super interesting to see how people’s experiences differ

victorz,

You made me look up helix again after a few years and it’s gotten pretty sick actually. I might main it for a while to see how it fairs. It’s fairly similar to kakoune of course, but it’ll take a while to get all the modes into my muscle memory. The similar actions are in different modes and there are many more modes in helix as far as I can tell. But it’s cool, looking forward to experimenting.

0x01,

Guy shoulda tried emacs instead, wife is probably an elitist

tiredofsametab,

As someone who's been a software developer for over a decade and in IT even longer, I still don't use vi/vim for anything other than when crontabs have it set as the editor.

SpaceNoodle,

alias vi=nano

PureTryOut,
@PureTryOut@lemmy.kde.social avatar

export EDITOR=nano.

But (neo)vim is amazing so there is no need to do that.

SpaceNoodle,

I transfer all my files over to a Windows machine and edit them in Notepad

ryannathans, (edited )

Based nano user

From my .zshrc (typing this on mobile so cope if it’s wrong)


<span style="color:#323232;">case "$OSTYPE" in
</span><span style="color:#323232;">  linux*)
</span><span style="color:#323232;">    export EDITOR=nano
</span><span style="color:#323232;">  ;;
</span><span style="color:#323232;">  freebsd*)
</span><span style="color:#323232;">    export EDITOR=ee
</span><span style="color:#323232;">  ;;
</span>
lil,
@lil@lemy.lol avatar

I guess shell languages can’t do this:


<span style="color:#323232;">export EDITOR=case "$OSTYPE" in
</span><span style="color:#323232;">  linux*)
</span><span style="color:#323232;">    nano
</span><span style="color:#323232;">  ;;
</span><span style="color:#323232;">  freebsd*)
</span><span style="color:#323232;">    ee
</span><span style="color:#323232;">  ;;
</span>
ryannathans, (edited )

That would be too smart. Smells like kotlin’s when

SpaceNoodle,

Put backticks around the entire case statement, and you can.

tiredofsametab,

You can set your default editor (maybe in .bashrc or .bash_profile? I forget), but I'm far too lazy.

Hexarei,
@Hexarei@programming.dev avatar

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 r 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

oce,
@oce@jlai.lu avatar

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

Those tasks are a very small part of work time, so most people don’t feel the need to optimize it.

Hexarei,
@Hexarei@programming.dev avatar

As a software dev, they’re significant parts of what I do

oce,
@oce@jlai.lu avatar

Are you one of those rare developers who spend most of their day actually coding?

Hexarei,
@Hexarei@programming.dev avatar

Yes, absolutely. And I refuse to let my day be anything else! :-)

tiredofsametab,

That's really neat, but I don't think I do that often enough to really make the performance hit of learning a whole new thing and memorizing keyboard shortcuts and commands worth it. I don't find myself refactoring code a ton, especially after moving to a more TDD-like model.

Hexarei,
@Hexarei@programming.dev avatar

It’s less about refactoring and more about navigation of your code while editing. Ever wanted to delete a single word? daw deletes the word your cursor is currently in. How about "copy everything up to (but not including) the nearest “D” on the current line? yfD.

The whole point is that editing code in the middle of writing it, not just refactoring it, is immensely faster.

trxxruraxvr,

Only if you use a qwerty keyboard, otherwise it’s just annoying as shit

sik0fewl,

You might’ve moved around too quickly. Stick to motion in the home row to start - hjkl. There are several ways to enter insert mode but DO NOT attempt it before she’s familiar with the basic motions.

PainInTheAES,

Hey at least you showed her your vim and not your nano or micro

ebits21,
@ebits21@lemmy.ca avatar

:q!

pivot_root, (edited )

ZZ

Edit: Has nobody actually tried doing this before downvoting? It saves and quits :/

SpaceNoodle,

Switch to emacs

victorz,

Would’ve loved to see which community they posted to. RelationshipAdvice?

Starkstruck,

immediate divorce /s

XTL,

Realising that your partner doesn’t care about you after 10+ years can indeed be hard.

ArmoredThirteen,

Can confirm, am getting divorced after 12 years

Iapar,

“Muuhuum, vim is wrecking havoc on relationships again!”

FiskFisk33,

make several limes with the number 0
visual mode mark them and do g ctrl a

gets 'em every time!

RecluseRamble,

Maybe she just wasn’t impressed by your noob skills and is having doubts herself?

blindsight,

My jaw literally dropped reading that.

I think it’s time to go outside.

PhlubbaDubba,

Show her you know how to exit vim and she’ll instantly be naked and on the bed

BlushedPotatoPlayers,

Have you tried tiny macros with q and @? Syntax highlighting? Z-folds? Or turn vi into a hex editor with :%!xxd ?

If that doesn’t work, try :divorce

pineapplelover,

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.

ICastFist,
@ICastFist@programming.dev avatar

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.

Potatos_are_not_friends,

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.

kuberoot,

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.

1rre,

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

geophysicist,

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

1rre, (edited )

I just find the saving mechanism frustrating to use compared to vim’s as an entry level user, and now as a mid-skilled user I dislike how featureless nano is - when I was first learning how to use the terminal I hated having to edit anything as I was pretty much force-fed nano with no alternative provided, but on finding vim and remembering literally 3 things (:w, :q and i) everything became so much easier, but I definitely do have an extra bitter taste left about not being told about something much easier to use which irked me when I saw someone preaching how amazing nano is

I also really don’t get the hate for vim when remembering 3 things gives you as much/more functionality as nano and is a starting point for so much more functionality - intuitive doesn’t mean featureless and don’t try and pretend nano’s shortcuts are the same as 99% of other editors (text or otherwise), in fact they’re totally different, making it less intuitive

barsoap, (edited )

Where “intuitive” means “shows important shortcuts on the bottom of the screen”.

It’s sufficient as a basic text editor, in the sense that it allows me to edit configuration.nix to include helix (a couple of years ago, nvim) without having to learn it because the commands to save and quit are, as said, displayed on the bottom of the screen. That’s about the extent of nano’s feature set, anyway, it’s a text editor, and a simple one as that, doesn’t even try to be a code editor.

When it comes to actually being intuitive though I vastly prefer the old DOS-style editors. The editor that shipped with it, as well as the likes of Turbo Pascal. “Press and release alt to get to the menu bar” type of interface: It allows you to have an at least half-way adequate feature set without requiring people to learn shortcuts. If Turbo Pascal displayed all its functions and their shortcuts at the bottom it’d take up more than half of the screen.

Really, “intuitive” when it comes to UI generally means “dumbed down, featureless”. Once a program actually has features things quickly become complicated and it’s counter-productive to keep things usable for users which aren’t willing to set at least a modicum amount of time aside to learn the very basics. The Blender Fundamentals series is what two hours of video. Text editors can get away with less as the feature set isn’t as broad but you should be willing to go through at least half of of the tutorial which is going to take 15 minutes or so, both for vimtutor and hx --tutor.

YIj54yALOJxEsY20eU,

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.

FizzyOrange,

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?

YIj54yALOJxEsY20eU,

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?

madkarlsson,

Not op but yes, I actually do. Dev for about 20 years, and the vast majority showing vim/emacs struggle when presenting. Could be presentation jitters ofc but the answer to:

You think thousands of developers are handicapping themselves for bragging rights?

Yes, yes I do. Thousands is not all, but they are definitively in the thousands

FizzyOrange, (edited )

you really think its a giant conspiracy from elitists lying about their experience

Pretty much, yes.

You think thousands of developers are handicapping themselves for bragging rights?

Absolutely. That’s completely normal human behaviour.

Gobbel2000,
@Gobbel2000@programming.dev avatar

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.

FizzyOrange,

Thanks, I’ll watch some.

alexdeathway,
@alexdeathway@programming.dev avatar

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.

YIj54yALOJxEsY20eU,

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

MagicShel,

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.

barsoap,

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.

MagicShel,

I can write regex to replace variable names in a matter of seconds despite not needing to do it very often, but I can also use regex to turn a list of data exported to csv into SQL. Or take a list of variable names and turn them into method stubs (or even full methods if they are small and consistent enough).

I don’t even need to think about LSP-enabled identifier renaming. It would be handy if I find myself having to use Vim - I’m not denigrating Vim. Those features are all great if it’s your IDE. But for example I had to look up what that even means because it’s nothing I need to know in any other IDE. And that’s really my point.

Vim has tons of power. The thing it’s really lacking is discoverability. You have to know how to do everything before you can do it. Meanwhile in IntelliJ or VSCode I just find the menu and if I want to be super quick, next to the menu item is the keyboard shortcut which makes it super easy to learn how to do a thing faster while still being able to do the thing. But with vim I have to change to a completely different context and open a browser and Google how to do a thing.

That’s the only problem I have with vim - it takes a huge and consistent investment to get as fast with it as I am with any other IDE out of the gate. Maybe I could eventually even get faster, but could I ever recoup that time investment? It doesn’t seem like it to me since my tools are so rarely the thing slowing me down.

Again, I’ve no doubt vim is great once you learn it thoroughly. Nothing against vim or those who use it. Should the need arise, I’ll put in the effort. But until then I’m just using it for tweaking config files and bash scripts.

barsoap,

I can write regex to replace variable names in a matter of seconds despite not needing to do it very often

You can write a regex to replace a string in a matter of seconds. And so can I. What neither of us can do is write it such that the replacement is limited to the identifier we want to rename (because pumping lemma), that needs syntax if not semantics-aware editing and that’s exactly what LSP is for.

You’re using a screwdriver as a hammer. Does it work, sure, is it advisable? Even if you don’t have a hammer it might be easier and quicker to drive to the hardware store and buy one, depending on the particular nail you’re dealing with.

Meanwhile in IntelliJ or VSCode I just find the menu and if I want to be super quick, next to the menu item is the keyboard shortcut

Helix: <space>? opens function search, enter “rename”, “rename symbol” will be the first hit and it’ll also tell you that it’s bound to <space>r.

Blender: F3 instead of <space>r. Get out of here with clicking through menus. I have no idea where to find recalculate normals in the menus and I don’t care. “face” in edit mode, probably. Nope, just checked: Edit mode, mesh->normals->recalculate [inside, outside]. Kinda makes sense while normals are a property of faces you can’t calculate them without reference to a mesh as you wouldn’t be able to tell outside from inside, only stuff like “face camera”.

This isn’t so much about gui or not gui thing, both IntelliJ and VSCode come from the windows school of GUI design which says “discoverable without a manual, hotkeys are available for power users”. Blender, OTOH, follows the UNIX philosophy of “RTFM, start working like a pro from the beginning it’s worth it, the interface is just a suggestion, adjust it to your workflow”.

Maybe I could eventually even get faster, but could I ever recoup that time investment?

How would you know without giving them an honest spin? Personally I wouldn’t recommend vim, btw, lots of hysterical raisins and inconsistencies to be found there and configuration is a PITA which wouldn’t even be that bad if the out of the box experience was good. Helix cleans up both the command language and the whole configuration shebang (just make sure that LSP servers are installed and you’re good to go) while definitely sticking to the vi/blender style of interface design.

MagicShel, (edited )

First I want to say this is a great comment overall. I appreciate it. But a couple notes:

What neither of us can do is write it such that the replacement is limited to the identifier we want to rename

\Widentifier\W - harder to navigate markdown than write the pattern. This would also catch references to the identifier in comments as well, though if the identifier isn’t a unique word it might take a little repair, but that’s rarely the case in Java where the convention is expressive identifiers.

UNIX philosophy of "RTFM, start working like a pro from the beginning […]

That only works for small manuals. Take Git for example, because that’s something I often use the CLI for. There are a huge number of things to learn out of the gate and you can’t just RTFM and you’re good to go. And it’s really not particularly big or complex. Something as simple as cherrypicking - well first I need to log to see the commit ids. Oh not just log but --pretty-something so I can just see the commit ids. Off to Google shit to remind me how to do another thing I only do every few weeks. Compare that to a GUI where I can just right-click cherry-pick. This absolutely kills my productivity because I do so much different shit, I can’t possibly remember everything that I barely use.

How would you know without giving them an honest spin?

I only have so many hours in the day to experiment. And I do, but the “cost” here is pretty high and the opportunity for return is low. We’re talking about things I might do a couple of times a month.

Now it’s possible I’m an idiot and I’m just slower or dumber than folks who like vim. It’s also possible my roles have been really fucked up and I don’t get to focus enough to get good at stuff that ought to be its own niche. All I can say is I’ve stuck my toe into the water and it’s fucking cold. Currently I’m probably 85% GUI and 15% CLI and other keyboard-centric tools. I just use whichever is the most expedient.

I wrote a one line bash script to start my vpn because I couldn’t remember each little keystroke but I can remember start-vpn.

Once again, I appreciate your comment. Upvoted. I don’t know what helix is. Blender I know but isn’t really a business software writing tool so I have maybe 20 hours playing around with it total. I’ll look into LSP on my PC, but I might just forget I have it by the time I try to figure out what to do with it.

barsoap,

Take Git for example,

Git is simple in its operations, but utterly complex in the stuff you might need to do because the operations aren’t mathematically clean. Things like git rerere should plainly not exist because states which require using it should be impossible to reach. And the likes of vim, or pre-2.8 blender, kinda ended up there as they grew organically, the more you tack on the more likely it is that different things don’t work well with each other. Which is why I recommended helix: It’s a clean-slate redesign. E.g. helix’ command language is consistently <selection><action> while vim is all over the place, you end up learning things by rote instead of really exploiting the combinatorics. On the VCS side darcs is sane in principle but it’s patch theory didn’t really have efficiency in mind and there’s a very nasty complexity explosion you can run into, pijul fixes all that: It has both a vastly superior interface without surprises (such as patches not being associative) and it’s fast.

We’re talking about things I might do a couple of times a month.

The most striking difference between the likes of VSCode and Helix are not things that you do once a month, but stuff that you do all the times: Navigating and basic editing. Within the first couple of pages of going through the tutorial you’ll know if navigating with hjklwWbB etc. is a thing that would save you time, whether it’s worth making the interface modal, having to type i (or various other options) before actually writing text. I certainly still haven’t really gotten my head around Helix’ multiple cursors because I don’t need it that often but VSCode wouldn’t be any faster at those kind of things, either.

I’ll look into LSP on my PC, but I might just forget I have it by the time I try to figure out what to do with it.

Language Server Protocol. Actually started out on VSCode, it’s how language integration works: The compiler writers (or whoever) provide functionality such as “give me docs for a certain identifier”, “rename this identifier” etc. and the editor/IDE simply offers those options, display the docs in-line, etc. It quickly caught on everywhere, 20 years ago you certainly wouldn’t have seen me advocate writing Java in vim because the likes of Eclipse were just way better at wrangling the language, but the times of those language-specific functions not being available in good ole code editors are over.

MagicShel,

Tell you what. As I’ve just ended a contract and have some time to work on my side project while I job hunt, I’ll give it a shot for the rest of this month and report back.

barsoap,

Blog post! Blog post!

MagicShel, (edited )

Probably no one but you will find this there. Which is good because this is just an extremely raw first draft. I’m not asking for answers from you here. If part of my experience is “go find random people on Lemmy to help” that doesn’t seem useful. But I want to share this experience which was about 90 minutes of my day, and also see how compatible the markdown here is with Joplin, which is my note-taking tool of choice. I don’t know if I can stick with this man. I haven’t even opened Vim yet.


I took on a challenge in a Lemmy comment to use Vim for a month. To give some context for this experience, let’s start off with the relevant details of who I am.

  • I’m a Java developer with 25 years of experience
  • I use Ubuntu as my daily driver. I no longer have a windows computer (except as an old SSD I could swap to in an emergency), not even as a VM.
  • While this might make me sound like a seasoned Linux pro, it’s more the case that everything I need to do on a computer is now performed in a browser or a handful of applications. Maven, Tomcat, and Git are probably the only CLI applications I use, and Tomcat only rarely because I don’t often do that kind of development for my side projects.
  • I know basic linux navigation. Most everything else requires a little googling.
  • I know how to exit Vim, go into insert mode, and I know how to delete 1 (dd) line or mulitple lines (dn). I know nothing else. Not even how to copy/paste.
  • I like learning new things, but self-directed learning is frequently aggravating. Fortunately I also enjoy ranting about frustrations and bizarre rituals that must be performed without understanding.

So one of the first things it was suggested I would need is LSP. I don’t recall what it stands for (I mean I could google it, but I might as well be honest about my ignorance, right?), but anyway I searched for “ubuntu install LSP”. As one does. The top result is a thread on Reddit in r/neovim. The fuck is Neovim?


So more googling tells me Neovim is a fork of Vim 7 that some folks like and other folks aren’t bothered about. There are plugins for both (why the fuck do you need a plugin for a text editor?) and some plugins work with both while others work on one or the other. Just like everything else in the Linux world, there are no fucking answers, just opinions and most of them are totally irrelvant to your environment or use case. I just want to edit some fucking code. So I’m sticking with Vim - that’s the point, right?

So back to the original question, how do I install LSP and whatever plugin is needed? For anyone keeping score, I started with one question and now I have three with one… well less answered than just decided. I think I’ll google “getting started with Vim and LSP”


Top result is very promising. “End goal: get working LSP in Vim for Python. Constraints: please no neovim suggestions.” Other than Python instead of Java, this is perfect! This is my thread!

Check out the LSP clients heading in langserver.orgThere are a number of vim plugins that provide LSP integrations:

Most plugins will require you to do add some configuration to wire up the Language Server client (i.e. the plugin) with the language server (e.g. pyright, pylsp, …etc). Other than that, I recommend reading plugin docs to learn how to use/configure the plugin with the language server and ask for help on the github repo if you have specific questions or run into issues/errors.

First, fuck me. It’s just a bunch of random fucking repos. Who the fuck are these people? I guess this guy is endorsing ALE. Is w0rp a person? Organization? Grad student? Seasoned professional? A guy one hamburger away from a heart attack?

So anyway it looks like I also need a language server (that’s the LS in LSP, 'twould seem - nice when questions answer themselves). Wait a second… That was my original question! They didn’t answer how to do the thing I wanted to do, they answered how to do the other thing I didn’t know I wanted to know how to do. I’m going to file this bookmark away because it’s not relevant to me just now, but it looks like this will be my next question.

For now, back to google: “ubuntu install lsp java”


Okay a bunch of shit about emacs and people having or overcoming difficulties in installing it. That’s not promising - seems just installing fucking LSP is about to be an ordeal. Oh! Here’s a github by George W Fraser. I don’t know who that is, but he uses his middle initial, so clearly someone of import and sophistication. Important side note: If he went by his full middle name, that would be a serial killer. A subtle but critical distinction.

Actually that may not be entirely true. I feel like I’ve seen his name before. Let’s see what he has to say.


Fuck me again! He says to use vim-lsc. Wait a god damn minute… This is the same fucking question I just had non-answered by some random redditor! How do I install the god damned language server, motherfucker!?

To be continued…

barsoap, (edited )

Remember what I said about the vim out of the box experience and configuration nightmare? Yep that’s why.

If you want to stick with (n)vim over helix head over here, which is going to take away like 90% of the pain. You’ll still need to go “yep I want this and this and this” but it’s much more like browsing through the VSCode store and hitting “install”. Quick start guide, general IDE, Java IDE should do it. There’s actually more end-user type documentation for spacevim as compared to vim (which is a giant heap of hysterical raisins noone writes beginner intros for) or helix (which is too young to have actually good docs). Both are more opinionated than plain vim+whatever plugins but at least as far as I’m concerned I don’t care which of the fifty available fuzzy file finder plugins I’m using: I just want one that works. Spacevim makes a default choice for you, helix has one built-in. Same goes for LSP integration.

Also you don’t necessarily need to dive in at the deep end. As said most of the difference vs. your usual IDE isn’t in feature set but how you interact with the thing, editing markdown should suffice to get a good idea, with or without LSP support in the case of markdown it’s really optional, I think it’s mostly about helping you to not have broken links.

MagicShel,

I have no problem with opinionated software. I need a starting point from which to disagree. Thanks for the links. I’ll read up this afternoon or tomorrow.

YIj54yALOJxEsY20eU, (edited )

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.

zarkanian,
@zarkanian@sh.itjust.works avatar

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!

MagicShel,

I use regex. And it has arcane stuff I don’t know, but I’ve memorized the rather simple basics that cover 90% of what I need to do.

fidodo,

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.

Hexarei,
@Hexarei@programming.dev avatar

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

docAvid,

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.

bignate31,

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

Potatos_are_not_friends,

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

zarkanian,
@zarkanian@sh.itjust.works avatar

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?

pineapplelover,

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.

Thcdenton,

Cause it cool 😎

stoy,

Nano is perfectly fine for me.

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

Zo0,

I have a cheatsheet of all the necessary vim shortcuts!

:q!

Iapar,

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

Hexarei,
@Hexarei@programming.dev avatar

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.

Potatos_are_not_friends,

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.

niemcycle,

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.

Hexarei,
@Hexarei@programming.dev avatar

I blame my autism

AVincentInSpace, (edited )

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 <,

Hexarei,
@Hexarei@programming.dev avatar

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

FizzyOrange,

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.

pearable,

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

FizzyOrange,

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.

YIj54yALOJxEsY20eU,

You ain’t understanding it dog

mexicancartel,

Thoose are line numbers in IDE. You don’t count them, you see them

FizzyOrange,

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.

mexicancartel,

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

pearable, (edited )

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

lunarul,

As a vim user myself, I don’t understand why you need relative lines either. I can just as easily type :23 to go to line 23.

pearable,

Mostly a matter of taste I think. One benefit is one less key press since relative keys shouldn’t need to press enter at the end of the command. I mostly use it because it came default with LazyVim.

Hexarei,
@Hexarei@programming.dev avatar

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

FizzyOrange,

Oh so like page up/down then? Not exactly showing the raw power of Vim when you can use an existing key press! 😄

Hexarei,
@Hexarei@programming.dev avatar

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.

FizzyOrange,

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.

Hexarei,
@Hexarei@programming.dev avatar

Name a downside, I’ll tell you how you’re probably wrong

FizzyOrange,

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.

Hexarei,
@Hexarei@programming.dev avatar

You can get pretty close to the same experience with github.com/mfussenegger/nvim-dap, any others?

FizzyOrange,

If you consider that “pretty close” then I think you’re going to dismiss anything else I say as insignificant anyway.

Hexarei,
@Hexarei@programming.dev avatar

I do; you’re only dismissing it because it’s formatted differently from the exact workflow you’re describing, but it’s certainly just as powerful if not more so

floofloof, (edited )

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.

Hexarei,
@Hexarei@programming.dev avatar

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.

floofloof, (edited )

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.

shalva97,

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

  • All
  • Subscribed
  • Moderated
  • Favorites
  • programmer_humor@programming.dev
  • DreamBathrooms
  • magazineikmin
  • thenastyranch
  • modclub
  • everett
  • rosin
  • Youngstown
  • slotface
  • ethstaker
  • mdbf
  • kavyap
  • osvaldo12
  • InstantRegret
  • Durango
  • megavids
  • ngwrru68w68
  • tester
  • khanakhh
  • love
  • tacticalgear
  • cubers
  • GTA5RPClips
  • Leos
  • normalnudes
  • provamag3
  • cisconetworking
  • anitta
  • JUstTest
  • All magazines