I’d like actual examples instead of “I work faster”, something like “I can move straight to the middle of the file with 7mv” or “I can keep 4 different text snippets in memory and paste each with a number+pt, like 2pt”, things that you actually use somewhat frequently instead of what you can do, but probably only did once.

  • uthredii@programming.dev
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    7 months ago

    One thing I haven’t seen mentioned is that not moving between mouse and keyboard so much reduces the risk of getting an RSI. So even if it didn’t make you faster it would still probably be worth it to find a keyboard based workflow.

    I use Helix and would suggest you try it (at least to start off with) as it is easier to learn than vim and does not require plugins or a complex config. To answer your question I will go from the less to more advanced/complex:

    1. Move a line to a new position in the file/another file (takes a couple of seconds)
      1. x then d to select a line (pressing N times will select N lines) and delete it (delete will also copy to the clipboard)
      2. navigate the cursor to the new location
      3. p to paste in a new
    2. Navigating around a file:
      1. jumping to a function/class definition by pressing g then d when on a function/class usage.
      2. getting a list and navigating to class/function calls when the cursor is on a class/function definition by pressing g then r.
    3. Multi cursor editing - I use this to make edits to multiple places at once. I most recently used this to extract the names of 30 tables that are used in a SQL file. This probably took ~5 seconds and I barely thought about it. To do this I used:
      1. % to select the entire files contents
      2. s to search
      3. typed "FROM "
      4. pressed enter to create cursor at all locations matching the search
      5. v then g then l to select the rest of the line
      6. space+y to copy to the system clipboard.
      7. paste into a document where I needed to list the tables
    4. Using a terminal workspace manager (zellij) with helix and a git tui app (gitui) so that I can easily make code changes, commit, push, ,run tests, move to a new repo and more without leaving the keyboard.

    There is actually a helix community on programming.dev: helix@programming.dev

  • 🦄🦄🦄@feddit.org
    link
    fedilink
    Deutsch
    arrow-up
    0
    ·
    7 months ago

    I am logged into various servers via ssh constantly and nano or vim (or at least vi) are installed pretty much by default everywhere.

      • stembolts@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        edit-2
        7 months ago

        How could I live without dd, vap, 99j, 99k, 555gg, zt, zz, zb, [, ]?

        If these were the only vim commands it would still be better than Nano.

        • grrgyle@slrpnk.net
          link
          fedilink
          arrow-up
          0
          ·
          7 months ago

          For me it’s plain ol’ tT and fF. I get frightfully bored when a text field makes me use Home/End/arrows 😪

          It’s like, I know where I want the cursor, just let me GO there. And no manually moving my cursor into position is not it. It’s so not it

          • stembolts@programming.dev
            link
            fedilink
            arrow-up
            0
            ·
            edit-2
            7 months ago

            I don’t know this command, about to test it out.

            I always use 0 and $, then W and B to leapfrog words manually 💀

            Thanks!

            • grrgyle@slrpnk.net
              link
              fedilink
              arrow-up
              0
              ·
              7 months ago

              Welcome! I also stumbled upon these after I’d been using vim for a while. You’ve probably seen them in guides but glossed over them like I did originally. But once you get used to using these keys, you’ll wonder how you lived without them!

              Used in combos like f(dib (delete function parameters), or 2t. (go back two periods, or sentences) they’re so great for moving within a long row.

  • Übercomplicated@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    7 months ago

    I do most of my work on my laptop, which has a really shitty touchpad (a system76 pangolin 12). Using the touchpad to scroll, move around, etc. feels clunky and frustrating. Using my wonderful keyboard feels amazing, quick, and responsive. Honestly, that’s the main reason I use neovim; touchpads, especially bad ones, just feel clumsy, imprecise, and inefficient.

    Now I’ve gotten used to typing nv and, in under 30 milliseconds, getting a full-featured LSP supporting text editor. Other editors trigger my impatience now 😂. The features are secondary to me, they’re not what makes nvim great.

    If there were two things that are a game changer for me though, they would probably be <C-o> (mixed with plugins like trailblazer) and the incredible ease of use that vim macros offer.

  • 0x30507DE@lemmy.today
    link
    fedilink
    English
    arrow-up
    0
    ·
    7 months ago

    One of my favorite emacs features is the VHDL stutter mode (which replaces certain repeatedly-typed characters with operators), as well as an easy to get to rectangle select, and it just being decently fast compared to something like VSCode. I also never have to take my hands off of the keyboard, because it’s all right there. It just feels better to me.

  • borf@lemmynsfw.com
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    7 months ago

    Just being able to jump to the top of the file, bottom of the file, beginning or end of the line, or directly to a regex pattern match or particular character already gives me some of the same satisfaction as a video game with really tight movement controls. (I also like being able to jump to lines by number, manipulate lines by number or range, and I like being able to get to the top, bottom, or middle of the screen with one or two keypresses.)

    In the same vein, deleting arbitrary lines at a time, performing external operations only on lines that match a particular pattern, and saving macro recordings of repetitive manual changes all feel like multiplicative powerups. Heck, incrementing and decrementing with ^a and ^x feels like one more little cheat code. Bouncing on parentheses with % makes structured files easy to get around in.

    These are all things I’ve done with some regularity over the years.

    • I Cast Fist@programming.devOP
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago

      Bouncing on parentheses with % makes structured files easy to get around in.

      That’s something I wasn’t aware you could do in vim. % jumps to the next parentheses character, whether ( or )? Does it work with brackets and curly braces too?

      • zagaberoo@beehaw.org
        link
        fedilink
        arrow-up
        0
        ·
        7 months ago

        Not just the next parenthesis that appears, It jumps to the matching one that opens or closes the one under the cursor. Hitting it repeatedly bounces back and forth around the text that pair of parentheses enclose.

        It works not only with brackets and curly braces, but also with opening and closing tags in XML etc.

        I feel like other editors must have an equivalent feature, though. I’d say the fact that vi can put such a specific action under just % rather than some nasty chord or mouse operation is what really makes it shine here.

      • expr@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        7 months ago

        It generally works with a wide variety of delimiters. There’s a widely used plugin to make it work with even more, including language-specific keyword pairs.

  • Balinares@pawb.social
    link
    fedilink
    arrow-up
    0
    ·
    7 months ago

    Where editors usually have editing shortcuts, vim has an editing grammar.

    So you can copy (or select, or replace, or delete, or any other editing verb) N arguments or blocks or lines or functions or any entity for which vim has an editing noun, or around or inside either of these, and you only need to remember a few such editing verbs and nouns and adjectives in order to immediately become much more effective.

    It’s so effective that switching back to a regular editor feels annoyingly clunky. (I guess that’s why many offer vim plugins these days.)

    Better: you can record entire editing sentences and replay them. Ever had to make the same change on dozens of lines? Now you can do it in seconds.

    Now of course, replaying a sentence, or several sentences, is also a sentence of its own that you can replay in another file if you want.

    It’s neat. :)

    • FizzyOrange@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago

      Ever had to make the same change on dozens of lines? Now you can do it in seconds.

      This would be a big advantage… except multiple cursors were invented so I can easily do that without having to memorize a whole new editing language.

      • Balinares@pawb.social
        link
        fedilink
        arrow-up
        0
        ·
        7 months ago

        Multiple cursors are fantastic for certain use cases, but will not help you when each line needs a different input – if you’re swapping arguments in function calls, if you’re replacing one bracket type with another around contents of arbitrary length, etc.

        Mind you, if your objective here is to not learn a new thing, then you can just go ahead and do that, you don’t need an excuse.

        • lad@programming.dev
          link
          fedilink
          English
          arrow-up
          0
          ·
          7 months ago

          Yeah, I usually do that with regexp replacement in other editors, but sometimes it’s too hard to express as a regular expression

      • zagaberoo@beehaw.org
        link
        fedilink
        arrow-up
        0
        ·
        7 months ago

        That’s just one thing the editing language does, though. There’s no single feature you can point to as the smoking gun; it’s all the small advantages added together that make vi worthwhile.

    • I Cast Fist@programming.devOP
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago

      Better: you can record entire editing sentences and replay them. Ever had to make the same change on dozens of lines? Now you can do it in seconds.

      I think my first experience with that kind of macro recording/replay was with Dwarf Fortress, of all things.

        • I Cast Fist@programming.devOP
          link
          fedilink
          arrow-up
          0
          ·
          7 months ago

          CTRL R starts recording the inputs, press again to stop. CTRL P plays it. Makes digging magma shafts through several floors, then setting up the pumps, so much easier

    • zipsglacier@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago

      This is the comment that best explains it for me. I started with vim for comfort (less movement to mouse, and less reliance on modifier keys). The editing grammar is something I didn’t really understand until I started gradually using it, but now it’s the thing I most appreciate. I don’t know if I’m necessarily faster in vim, but my work is more fluid. The editing doesn’t interrupt my thinking as much.

  • some_guy@lemmy.sdf.org
    link
    fedilink
    arrow-up
    0
    ·
    7 months ago

    I actually only noticed this the other day (I took a hiatus from doing a lot of Linux work for >5y), but it resumes editing a long doc at the point where I was when I last exited, saving me from scrolling again.

  • henfredemars@infosec.pub
    link
    fedilink
    English
    arrow-up
    0
    ·
    7 months ago

    I work on many different systems, some ancient and some embedded, some both. Vim and friends are ubiquitous. It’s a tool I’ve learned to use effectively by necessity, because other editors weren’t always available.

    As an example, many routers don’t offer a graphical environment. There is no option to use something like Visual Studio or notepad++ without shuffling files around.

  • peto (he/him)@lemm.ee
    link
    fedilink
    English
    arrow-up
    0
    ·
    7 months ago

    Honestly the best bit is just not feeling the need to take my hand off the keyboard and use the mouse. I don’t think I can quantify the time saved, but I can tell you I really notice when I’m using software that makes me have to switch.

      • subversive_dev@lemmy.ml
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        7 months ago

        I don’t know if this comment comes from ignorance or snarkiness but it’s really not the same. Other editors add in hotkeys over time to perform a single function.

        Vim key bindings are actually a terse text manipulation language where you can form arbitrary “sentences” like:

        • ciw - change the current word, meaning remove it and then enter insert mode

        • D - delete until end of line

        • dt: - delete everything between the cursor and the next colon on this line

        • 10"ap Paste the contents of the a register 10 times

    • grrgyle@slrpnk.net
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago

      Yeah when my hand goes to the mouse it feels like I’ve broken a combo or streak. Like I’ve switched from an active to a passive mode. The mouse is for clicking and scrolling, like reading email and webpages

      • pmk@lemmy.sdf.org
        link
        fedilink
        arrow-up
        0
        ·
        7 months ago

        The Acme editor (and Sam) begs to differ. Sadly it’s hard to find a mouse that can do mouse chording today.

  • ExperimentalGuy@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    7 months ago

    I use vim bindings in vscode, but I’m trying to switch to neovim.

    It’s hard to talk about efficiencies without use cases but here’s some that I like:

    • Compared to using mouse, text selection is just much easier in vim. Instead of accidentally highlighting an extra space and clicking somewhere on accident which gets rid of my selection, vim lets me go directly to the end of the word and be precise about where I’m selecting.
    • I remember before I used vim, I would count the number of times I hit the backspace or delete when I had heavily nested parentheses. With vim I just type the exact number I want, and if I were to undo that operation I also know exactly what was changed, whereas when counting there’s always the possibility of miscounting or pressing delete without counting.
    • I don’t have to scroll. I can jump 100 lines in less than a second. Instead of searching through long files to find where I left off, I just generally remember what line number I was at, then I can simply just jump back.
    • Forces me to type better. Before vim I had really shitty typing form(I don’t know what it’s actually called) but switching to vim shone a light on exactly how I was typing wrong, and now I type faster.
    • Using the % operator you can jump between brackets or parentheses. This comes in handy especially when you want to highlight the inside of a function call, or just jump to the end of a pair of brackets
    • FizzyOrange@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago
      1. Ctrl-left/right jump to the beginning/end of words
      2. No exactly sure what you mean here.
      3. Page up/down let you scroll up/down quickly. Ctrl-P :123 lets you jump to a specific line, but I generally use editing history (alt-left) instead.
      4. I can type perfectly well…
      5. Ctrl-{ or } does this I think.

      Do you have any more compelling examples?

      • abruptly8951@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        7 months ago

        Ooh fun, these all take 2-3 key presses

        • Delete the contents inside a function delimiter by {
        • Delete the next nine words
        • Delete the contents inside long text quotes

        And these more/less key presses

        • Start a regex search with a single button
        • Perform the same edit 100 times in a jagged files (good luck not f’ing up your multi cursor)

        But it misses the point, of course every editor can do just about anything, but there is a lot more mouse involved and learning it is more difficult because the keybinds aren’t combinatorial

        • FizzyOrange@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          7 months ago
          1. Ctrl-shift-}
          2. How often do you want to delete exactly 9 words? It’s much easier if this is interactive.
          3. Not a common task IMO.
          4. Ctrl-F and click a button. This is rare enough that a button click is fine.
          5. Not sure what you mean by “jagger files” but I find multiple cursors are a lot easier to get right than e.g. regex replace because they give you instant feedback. Vim sequences are more like “oh you got it wrong, better start from scratch”.
          • abruptly8951@lemmy.world
            link
            fedilink
            arrow-up
            0
            ·
            edit-2
            7 months ago

            1 is just going to highlight right?

            2, how about 6 words, 10 words, 100 words

            3, 4 I use all the time

            5 if your edit locations don’t line up so that you can alt drag a single column, this is what I mean by jagged. I would use a combination of find and repeat action.

            Start from scratch - skill issue :p

  • TheV2@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    7 months ago

    I’m probably the minority here, but I don’t use neovim for (time) efficiency. I use it for customization, hence minimalism, interoperability with other tools and less complex key bindings.

    I do realize the irony of the last point. Sure, you need to learn basic navigation first, but past that the wizardry is much easier to learn than in other editors/IDEs. I do however not believe that wizardry is impossible in other editors/IDEs, at least most of the usual stuff.

  • waywardninja@sh.itjust.works
    link
    fedilink
    arrow-up
    0
    ·
    7 months ago

    I wouldn’t consider myself a power user if vim or the bindings I don’t normally use the markers or anything. However, I will spend a lot of time and effort to get just a small set of basic commands into my ide.

    I like my hands on my keyboard and vim bindings allows super easy common things like ~ for capitalization of a single character. ‘gUw’ for uppercasing a word. ‘dd’ is much better to delete a line; than highlighting and deleting with a mouse. The most bad ass things I think it does incredibly well, is grabbing text or changing text between () or {} symbols. A simple 3 key command grabs the text between the symbol, deletes it, puts you in edit mode. Screw it up esc-u.

    Another cool thing I use is vim clipboard and the system OS clip board in tandem.

    • SwordInStone@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago

      you can delete a line in most ides by having a cursor in the line and pressing ctrl+x (with the side effect of putting it in the clipboard)

  • Gopher Protocol@programming.dev
    link
    fedilink
    English
    arrow-up
    0
    ·
    7 months ago

    I’ve been using vi since my mentor at an internship sat me down with a copy of “Unix in a Nutshell” and told me to learn it. This was before I discovered Vim, so I think I was using nvi which had very limited in-editor help. It was a struggle, especially compared to the resources available today.

    Around the same time, circa 1999, Tom Christiansen (of Perl fame) wrote an essay called “Zenclavier: Extreme Keyboarding” which still speaks to me, and is worth the read.

    In brief, I’ve never been able to “zen out” in a typical non-model text editor, at least not the way I can with [neo]vi[m]. It’s hard for me to overstate how great it is to not have to reach for the mouse - or even outside the home row of the keyboard. Christian calls this the “penalty zone” - any time you need to move your fingers away from home row, you’re breaking flow. And when programming, it’s something we have to do all the time!

    There are other editors that support this kind of thing, like Emacs. Even VS Code and Visual Studio can be navigated entirely with the keyboard if you’re willing to memorize their keybindings. But they generally rely on “chorded” keystrokes, which put your fingers into sometimes tortured positions (the old unix editor holy war joke is that Emacs stands for “Escape Meta Alt Ctrl Shift”). And often you still have to reach for keys in the “penalty zone”, like PgUp/PgDn/Home/End.

    I’m biased, having used vim keybindings in basically every editor I’ve programmed in for the last 25 years. It would be impossible for me to go back now. There are other modal editors, like Helix and Kakoune. They’re basically like vi, but they reverse the order of the keybinds - which has some really nice features, and I might even suggest you try those before getting sucked into vim-land like me. But I do think modal editing, in general, is where it’s at for pure text. Especially programming, but I use it all the time for other tasks like formatting textual data files interactively.

    Anyway. Maybe it’s a cop-out, but I think it’s something you have to experience to really appreciate.

  • cbazero@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    7 months ago
    • The motions exist everywhere. Almost every editor has at least a vim motions plugin.
    • You can navigate in your file without having to move your hand (to the mouse or the arrow keys)
    • Vim is aware of the text you are editing. You can delete/change text between/up to quotes, parenthesis, etc
    • You can program Neovim to do whatever you want. This means you can optimize it exactly for your workflow
  • mke@programming.dev
    link
    fedilink
    English
    arrow-up
    0
    ·
    7 months ago

    I spend most of my time thinking, not writing code. I really don’t care about all that much about time saving, but I do concede that not taking my fingers off the home row feels really great. Other editors, even this very text input I’m writing my comment in right now, feel clunky in comparison.

    The most important part to me, however, is how customizable it is. I’m not just using (neo)vim, I’m making and using my own personal development environment. Almost every aspect, be it visual, keybinding, system integration or behavior, is changed as I go to suit my needs above all else. I think the only way to go even further with this would be switching to Emacs :^) lisp machines are no joke.

    It’s not necessarily mechanically faster—though it absolutely can be: sometimes I get my editor state to where I wanted so naturally and so quickly that I actually pause for a moment after to ponder, wait, how the hell did I do that?—but darn do I like spending time in it, and it just keeps getting better. In a way, that actually makes me more productive: I’m a happier dev. In the end, it’s all about you. If you are at your best in vscode or sublime or whatever, keep at it.

    My only suggestion is: if you’re willing to put in the time and effort, consider trying to make whatever you use truly yours.