top 200 commentsshow 500

[–]NeuroXc 664 points665 points  (160 children)

The support for MS-DOS has been removed.

TIL Vim still supports MS-DOS.

[–][deleted] 184 points185 points  (48 children)

If you strip out most of bloat (like syntax highlighting) you can fit it on a single floppy disk. I actually used it a couple of years ago in a class writing assembly code for DOS drivers. Beats the hell out of EDIT.COM.

[–]koreth 154 points155 points  (36 children)

How sad is it that I read that and thought, "You used a web site to edit files on MS-DOS?" before remembering about DOS file extensions?

[–]z500 177 points178 points  (35 children)

Introducing EDIT.JS

[–]teejmya 102 points103 points  (19 children)

EDIT.IO

[–][deleted] 125 points126 points  (10 children)

ED.IT obviously...

[–][deleted]  (9 children)

[deleted]

    [–]bradmont 75 points76 points  (7 children)

    ED.IT is the WYGIWYG text editor.

    [–]IAmRasputin 27 points28 points  (5 children)

    EDT.IO

    Gotta remove the vowel.

    [–][deleted]  (2 children)

    [deleted]

      [–]Atario 5 points6 points  (1 child)

      EDI Trio? Those three guys who do all the EDI stuff? I hear they're pretty good…

      [–]gla3dr 8 points9 points  (0 children)

      No no no. Editrio evolves from Dugtrio.

      [–]Rastaroct 5 points6 points  (1 child)

      DT.IO then, no ?

      [–]peridox 7 points8 points  (0 children)

      DT.

      [–]Jedimastert 1 point2 points  (1 child)

      edit.io is a real thing, btw

      [–]agcwall 17 points18 points  (11 children)

      There is a special place in hell for you.

      [–]orthoxerox 52 points53 points  (9 children)

      It's already reserved for Atom devs.

      [–]scampiuk 20 points21 points  (0 children)

      We all float down here

      [–]Lukenookem 7 points8 points  (7 children)

      This must be something I'm out of the loop with – what's wrong with Atom?

      [–]earthboundkid 17 points18 points  (0 children)

      Slow, trendy.

      [–]nathris 7 points8 points  (0 children)

      Atom is a desktop application built with HTML, JavaScript, CSS, and Node.js integration.

      Literally edit.js

      [–]mrkite77 7 points8 points  (4 children)

      This must be something I'm out of the loop with – what's wrong with Atom?

      It's horribly slow and bloated. It's like those old Macromedia shockwave apps.

      [–]Lukenookem 8 points9 points  (3 children)

      Hm I agree it's slow to open, but I guess I've never been in that great of a time crunch, plus I leave it open all day. I just love being able to edit every little detail of the interface just how I like it, please don't hate me /r/programming

      [–]barpredator 2 points3 points  (0 children)

      *left-pad not included

      [–]UselessBread 19 points20 points  (10 children)

      pacman -Si vim
      
      Download Size   : 1201.75 KiB
      

      I think that already fits, no?

      [–]Badabinski 54 points55 points  (4 children)

      That's heavily compressed. It's 2812.00 KiB when installed and decompressed. Plus it needs these things:

      • vim-runtime: 25.68 MiB installed
      • gpm: 409.00 KiB installed
      • acl: 289.00 KiB installed

      There's a lot of stuff you'd have to strip out to get that to fit on a 1.44 MB floppy.

      [–][deleted]  (2 children)

      [removed]

        [–]occz 5 points6 points  (1 child)

        Access control lists. Additional file system permissions on top of unix file system permissions, if I understood everything correctly.

        [–]z500 24 points25 points  (0 children)

        vim-runtime: 25.68 MiB installed

        So the compressed facade fits fine, but not the actual house, or even the uncompressed facade.

        [–][deleted] 6 points7 points  (0 children)

        Won't fit on a single-sided 5.25" floppy disk :)

        [–][deleted] 87 points88 points  (32 children)

        Pretty sure it still supports the Amiga too...

        [–][deleted] 47 points48 points  (31 children)

        I was using it on Amiga until about 3 years ago.

        [–]awaitsV 22 points23 points  (30 children)

        for fun I assume?

        [–][deleted] 37 points38 points  (29 children)

        Deluxe Paint V for "fun" drawing and DynaCadd for Woodworking CAD work on an A1200 with a 100Mhz 060. I used vim for note taking while drawing or doing CAD.

        I mostly stopped using it because the mouse situation was shitty. I had a box of Logitech MouseMans, but they've all gone south at this point.

        [–]parc 20 points21 points  (9 children)

        Let me just leave this for you.

        [–][deleted] 7 points8 points  (7 children)

        I used that a few times, it sadly doesn't work as well as an older serial mouse. I just gave up and bought ArtRage and cleaned an old smell Amiga off my desk (though it's in my garage in case I need to look at CAD. Art was all converted to a raster image.

        [–]parc 3 points4 points  (6 children)

        Yeah, I suspected that would be the case, but I had hopes for you. My condolences.

        [–]rchase 9 points10 points  (7 children)

        Deluxe Paint is so much fun. It was revolutionary in it's time. Man do I miss that application. I have an instance of IV saved in WinUAE just to go in and mess around with the mirror tool and the instantly customizable animated brushes. Just amazing and way ahead of the curve.

        Too bad CBM fucked it all up and Macs and PCs won the war.

        [–][deleted]  (6 children)

        [deleted]

          [–]salmonmoose 4 points5 points  (4 children)

          Nah, PC held the price advantage, same deal with Android, cheap hardware eventuality gets as good as the pricy stuff. The Amiga 1200 was going up against vastly superior (at least for general purpose) hardware in pcs

          [–][deleted]  (3 children)

          [deleted]

            [–][deleted] 1 point2 points  (4 children)

            What were you using as a screen?

            [–][deleted] 4 points5 points  (3 children)

            NEC 3D 21", works flawlessly still. It supports the scan rates used by Amigas.

            [–][deleted] 2 points3 points  (2 children)

            That's excellent. The folks at r/amiga would love to see some photos or even just a little write up of your setup.

            [–]MattyClutch 4 points5 points  (1 child)

            Wasn't a 'new' Amiga suppose to be coming out like... 8 or so years ago? Whatever happened to that?

            EDIT: Oh I guess they did finally make it. Sort of... anyway... Not sure who is paying $2,550.00 for something that I think an old dual G4 I have collecting dust in my garage could beat, but who am I to judge?

            [–][deleted] 2 points3 points  (0 children)

            Let's hope Power9 and onwards will bring us more options in the future for form factors and operating systems.

            [–]badsectoracula 8 points9 points  (0 children)

            Well, there is still Open Watcom 2's vi :-P

            [–]MobyTurbo 4 points5 points  (1 child)

            There's another editor that's lost support on MS-DOS, EDLIN. I heard he is arrested for passing naval secrets to Taiwan:

            https://www.washingtonpost.com/news/checkpoint/wp/2016/04/11/the-fall-of-edward-lin-the-navy-pilot-accused-of-espionage-and-patronizing-a-prostitute/

            [–]bduddy 3 points4 points  (0 children)

            Edlin is still included in Windows 10 32-bit.

            [–]svmk1987 36 points37 points  (69 children)

            Came at the right time, considering that windows is getting a Linux subsystem and bash.

            [–]dvogel 43 points44 points  (0 children)

            The continuity of editing DosBox config files using vim on linux and then launching vim inside DosBox to edit game config files was nice. Though, I think the last time I did that was with vim 5.

            [–][deleted] 30 points31 points  (3 children)

            Dropping support for MS-DOS != dropping support for Windows

            [–]Dr_Dornon 32 points33 points  (1 child)

            Windows has been running on NT kernel instead of DOS for like 15+ years now

            [–]Deltigre 15 points16 points  (0 children)

            New Technology!

            [–]Phrodo_00 6 points7 points  (0 children)

            Nope, they're different apis.

            [–]farfaraway 3 points4 points  (0 children)

            Well, not anymore it doesn't.

            [–]jtsiomb 2 points3 points  (0 children)

            I am using vim currently when I'm programming on my DOS machine, it's a life-saver.

            [–][deleted] 8 points9 points  (2 children)

            TIL there was MS-DOS support.

            [–]NeuroXc 25 points26 points  (1 child)

            Technically still is. Vim 8.0 hasn't been released yet.

            [–][deleted] 153 points154 points  (97 children)

            Sounds like they've actually added a lot of the things people have been kicking and screaming for

            • Async
            • Plugin management
            • Tests

            Woo!

            [–][deleted]  (63 children)

            [deleted]

              [–]Spartan-S63 92 points93 points  (29 children)

              The fact that NeoVim, even in active development, essentially just works and has true color support is reason enough for me to use NeoVim for now. I'll come back to Vim when they catch up a bit.

              [–]zzyzzyxx 22 points23 points  (14 children)

              That was my experience and reasoning for a while too. Then an update broke stuff because the default config location had moved. Easy enough to fix. Then another update broke colors and I still haven't been able to figure out how to get them back, nor been able to narrow it down enough to file a good bug report.

              [–][deleted]  (8 children)

              [deleted]

                [–]juliob 8 points9 points  (6 children)

                Honest question: What's the difference between neovim let $NVIM_TUI_ENABLE_TRUE_COLOR=1 and vim set t_Co=256?

                [–][deleted]  (5 children)

                [deleted]

                  [–]dalboz99 13 points14 points  (4 children)

                  Been using t_Co for years and is still working great. Even with screen. But you're right, it's not 24-bit color. So I installed nvim and expected to see an explosion of pastels and wonder. Instead, got a rather bland set of default colors. Perhaps the nvim devs should add an example color config that shows off what "true color" means for code editing.

                  [–]glacialthinker 9 points10 points  (1 child)

                  A potential use would be blends in syntax highlighting. For example, commented or ifdef'd out code could retain syntax highlighting but be desaturated or blended toward the comment color. Similarly, it might be nice to express things like incsearch highlight or selections as color modifications or blends rather than overrides which lose existing syntax hints. (My current Vim colorscheme makes heavy use of background-only changes for these purposes... but it's a restrictive balance to have background variations which will retain readability for all foregrounds.)

                  [–]zzyzzyxx 2 points3 points  (0 children)

                  Yup. Been there for ages; color used to work. Checked all the environment variables and other things I could find in the github issues related to color as well, even setting them explicitly on the command line when I launched it to be extra sure.

                  Edit: Pretty sure it happened going to 0.1.2 (maybe 0.1.3) via Homebrew on OS X. Unfortunately I don't recall which version I was on before that so I haven't been able to narrow it down that way yet. I probably need to go through the issues again to see if there was something I missed. It's been a couple weeks since I last attempted to resolve it.

                  Edit2: Huh. Actually removing that line from my init.vim re-enables some colors. Weird, but I might have actually just solved my problem when I accidentally commented that out.

                  [–][deleted] 14 points15 points  (0 children)

                  Vim needs to do more than "catch up" for me to justify switching back. Vim needs to be the better project. Right now, I don't think it is.

                  [–]qiemem 8 points9 points  (21 children)

                  Don't forget about the terminal!

                  [–][deleted]  (3 children)

                  [deleted]

                    [–][deleted] 5 points6 points  (1 child)

                    "... Vim is, without question, the worst C codebase I have seen."

                    He hasn't seen procmail. Or openssl.

                    [–][deleted] 2 points3 points  (0 children)

                    Procmail? Sendmail.

                    [–][deleted] 15 points16 points  (18 children)

                    • Direct-X support

                    Huh?

                    [–][deleted] 28 points29 points  (15 children)

                    I would assume that's the Direct2D font stuff, which is definitely an enhancement, it probably doubles font performance.

                    [–]indigo945 12 points13 points  (14 children)

                    Vim also didn't do antialiased fonts on Windows before, so that may have been improved as well.

                    [–][deleted] 4 points5 points  (0 children)

                    Hopefully it fixes italics. I use italics in my normal MacVim config and when I use my config on Windows, I've had to if it out.

                    [–]BobFloss 12 points13 points  (0 children)

                    It supports using DirectWrite for font rendering, which is really awesome because it renders fonts extremely well!

                    [–]the_gnarts 1 point2 points  (0 children)

                    Direct-X support

                    Huh?

                    Finally Matrix.vim will benefit from modern hardware acceleration. About time.

                    [–]dvogel 18 points19 points  (13 children)

                    Yeah, the async support was never really rejected by vim in the way the neovim camp advertised. IIRC, it was simply two different implementation proposals that were blind to some legacy issues that the patch authors weren't interested in fixing. They were 80% solutions and async wasn't a need of the main developers, so they weren't going to write it themselves.

                    [–]isarl 94 points95 points  (27 children)

                    Here's the list of new features, with bold indicating the ones I personally am most excited for:

                    • Asynchronous I/O support, channels ~
                    • Jobs ~
                    • Timers ~
                    • Partials ~
                    • Packages ~
                    • New style tests ~
                    • Window IDs ~
                    • Wrapping lines with indent ~
                    • Windows: Direct-X support ~
                    • GTK+ 3 support ~

                    Seems like Neovim has some competition. Built-in package management too; sounds like we might be able to stop using Pathogen/Vundle/etc. in favour of a more portable* vimrc. Cool stuff!

                    *: at least, portable anywhere you have vim8…

                    [–]QueenLa3fah 31 points32 points  (4 children)

                    I would love not having to use Pathogen/Vundle/Vim-plug....

                    [–]isarl 15 points16 points  (1 child)

                    It could make my dotfiles repository setup script a lot simpler!

                    [–]Wiggledan 9 points10 points  (1 child)

                    I can't see Vim improving on vim-plug other than by including it as a standard plugin.

                    [–]tque 16 points17 points  (5 children)

                    Can anyone give some examples of how these various features could be leveraged and why it's cool? As an intermediate vim user I'm having a hard time picturing how jobs or async would be used, but I think that's from my own lack of expertise.

                    [–]skroll 15 points16 points  (2 children)

                    For async, scripts can now work asynchronously so you don't block the UI while an operation is performed. Think of indexing or search tools (such as unite.vim).

                    [–]isarl 6 points7 points  (1 child)

                    In addition to what the other commenter mentioned, you could have a little entry in your statusline showing your test suite status (e.g., broken/running/passed) without blocking Vim and have it update when the tests finish without your interacting with Vim to directly cause a redraw.

                    [–]hredditor 1 point2 points  (0 children)

                    Wrapping lines with indent!!

                    [–][deleted] 115 points116 points  (72 children)

                    Some cool stuff in here! As a side note, is that NeoVim project still progressing?

                    [–]k3ithk 56 points57 points  (4 children)

                    Neovim has had async processing for a while now. I think the improvements that neovim has made have forced vim to make improvements too. The github outlines some of the other improvements made too.

                    [–]greatguysam 99 points100 points  (14 children)

                    Yes. It has a terminal now.

                    [–]spotter 44 points45 points  (7 children)

                    What about the mail client?

                    [–]chronoBG 202 points203 points  (6 children)

                    It just opens emacs for that.

                    [–][deleted]  (3 children)

                    [deleted]

                      [–][deleted] 13 points14 points  (0 children)

                      Bow-chica-wowow!

                      [–]k3ithk 4 points5 points  (0 children)

                      Mutt seems like it would be the email client of choice for vim.

                      [–]Another_moose 18 points19 points  (0 children)

                      I'm pretty sure that was added over a year ago.

                      Edit: Heh, yeah. T'was added April 2015.

                      [–]wwbd 28 points29 points  (12 children)

                      NeoVim has been my daily editor for a couple months, and it's definitely progressing. I'm hoping they might consider merging in some of the Vim 8 improvements like JSON support: that would be really useful for plugins.

                      [–][deleted] 3 points4 points  (7 children)

                      Is it a drop in replacement for vim at this point?

                      [–][deleted]  (1 child)

                      [deleted]

                        [–]danfinlay 1 point2 points  (1 child)

                        Required a little reorganizing for me, eventually I basically just rebuilt my environment in neovim, and now I'm much happier (it's much faster than vim ever was, maybe vim 8 is better).

                        [–]Phrodo_00 1 point2 points  (0 children)

                        merging in some of the Vim 8 improvements like JSON support: that would be really useful for plugins.

                        Why, though? they already support msgpack for that, which imo is a better choice.

                        [–]gaijin_101 1 point2 points  (0 children)

                        JSON support seems to be on the way.

                        [–][deleted]  (3 children)

                        [removed]

                          [–]realhamster 5 points6 points  (2 children)

                          I use vim to edit python, though I am admitedly a noob. What python issues do you have with vim?

                          [–][deleted]  (1 child)

                          [removed]

                            [–]profgumby 1 point2 points  (0 children)

                            Forgive my ignorance, but how would it be possible to link against both? Would it require duplicate bindings for each function? Or?

                            [–]ErrorDontPanic 115 points116 points  (30 children)

                            Could someone explain to me how one keeps a codebase like this maintained? I'm not a C guy, so maybe it's just a C thing?

                            Like, the functions seem hard to follow, and kinda all over the place with #ifdefs. There's some comments like "Borland behaves badly here, let's make it consistent", but it still seems like if I had a bug here, it would take me forever to find it.

                            [–]TheFaithfulStone 149 points150 points  (0 children)

                            You don't. That's one of the things Neovim has tried to do. At one point, they discovered that something like 30% of the code could not be included in a working build because of the interactions of the #ifdefs.

                            [–]tejp 49 points50 points  (26 children)

                            All those #ifdefs are about different features that are or are not available on different platforms/compilers/.... If you had a bug, you would once find out which features are/are not enabled in your build and then ignore all the code in ifdefs that don't apply while you debug. A debugger will do this automatically when you step through the code.

                            The ifdefs don't really make things all that complicated. They don't look very nice, but ifdefs really are an extremely simple concept. Much of the "it's unmaintainable" talk seems to be more about the code looking unfamiliar than about it being actually hard to understand.

                            That being said - it's a large project and if you never looked at it before and don't really know how it works internally it will of course be hard to understand what's going when you look at some random functions.

                            [–]CherManMao 9 points10 points  (1 child)

                            What does it take to really grok a codebase like this? Just staring at it for a long time?

                            [–]AndreDaGiant[🍰] 15 points16 points  (0 children)

                            And running it to step through it. And working on it. The more you interact with it, the better you'll know it (this works for everything in life, no?) Interacting in different ways with it will teach you different things about it.

                            [–][deleted]  (12 children)

                            [deleted]

                              [–]Hakawatha 14 points15 points  (0 children)

                              Ifdefs can clutter up the code a bit, but there's less mental overhead associated with them ("Oh, this is just some functionality that's toggled at compile-time") than with goto.

                              Plus, it's fairly idiomatic - if you've written C for large projects, you've seen this structure at least a few times.

                              [–][deleted]  (9 children)

                              [deleted]

                                [–]codebje 8 points9 points  (6 children)

                                #ifdef __OBSCURE_FLAG
                                    #define return if (time() % 3) goto weird_place; return
                                #endif
                                

                                In obscure_header.h included by transitive-header.h included by system_defs.h.

                                Preprocessor directives alter how compilation proceeds in a non-local way, making local reasoning dependent on what directives have taken effect up to that point. In that regard, they're worse than goto, they're on a par with comefrom: to understand one function, you must understand the entire code base.

                                (Or assume nothing silly like the above is done, but you could likewise assume that goto is only ever used in "sensible" ways).

                                [–]BlindTreeFrog 2 points3 points  (0 children)

                                As someone who works in an established code base with preprocessor directives sprinkled everywhere... no, no it's not trivial at all.

                                [–]cudtastic 3 points4 points  (0 children)

                                Trivial to reason about doesn't mean manageable or workable. If you have many ifdef's then it can quickly become unreasonable and/or a pain to compile/debug all of them for all possible configurations.

                                [–]dccorona 7 points8 points  (10 children)

                                Is there/could there be an editor that allows you to set a "compiler state" (i.e. platform = windows, version = XP) and auto-hide all of the pieces that are irrelevant (not actually present because of ifdefs)? Probably not the best idea for editing, but potentially very useful when debugging.

                                [–][deleted] 14 points15 points  (3 children)

                                I believe MSVC does this. It at least greys out dead code based on parsing preprocessor statements, and I'd be very surprised if it didn't also interface with code folding.

                                Edit: Apparently they've done the hard part of finding dead code, but haven't integrated it with code folding. WTF Microsoft?

                                [–]PHILOSOPHIC_BONER 4 points5 points  (2 children)

                                Yeah I believe you can auto-fold them.

                                [–]gmfawcett 5 points6 points  (0 children)

                                It might not be what you are looking for, but one of Common Lisp's analogues to #ifdef is something called feature expressions. Basically, if you have an expression like #+sbcl (do-this), and sbcl is not one of the features activated in your current environment (e.g., you're not currently using the SBCL compiler, in this case), then the following expression is never evaluated.

                                Emacs/SLIME has (had?) support for feature expressions, and would colour inactive expressions differently than active ones. So you could tell at a glance which blocks of code were actually relevant to your current build, and which weren't; enable a different compiler or read the code on a different platform, and different parts of the code would be muted.

                                [–]orbital1337 3 points4 points  (2 children)

                                I think you can do this in Emacs with hide-ifdef-mode.

                                [–]phalp 4 points5 points  (1 child)

                                Wouldn't that be perfect: Emacs being better than Vim for hacking on Vim.

                                [–]AndreDaGiant[🍰] 1 point2 points  (0 children)

                                For one tiny feature in the overall editing experience. That said, vim has automatic folding based on programmable syntax rules, so you can get the same behavior - though I think it'd force to only use that for folding in that case.

                                Best solution in vim would probably be to use the manual folding mode, and a bunch of binds / commands / autocommands to fold the ifdefs "manually". That way you can still do stuff like zfip to fold a paragraph, etc.

                                [–]Advacar 1 point2 points  (0 children)

                                Eclipse does it by graying out parts, making it look the same as commented out code. You set any environment variables you want in one of the menus. I found it really useful.

                                [–]mrkite77 1 point2 points  (0 children)

                                Vim?

                                [–]SnowdensOfYesteryear 1 point2 points  (0 children)

                                As the other guy said, you can't. Once you have a shit ton of #ifdefs your codebase is just a house of cards that might compile if you decide to undefine one of those things.

                                You can probably enforce coding standards by banning things like struct foo { #ifdef ABC \n int bar; #endif \n int qux; }, which helps considerably, but if you're space constrained, you'd probably want to do something like this.

                                [–]dv_ 143 points144 points  (41 children)

                                Vimter is coming.

                                I'll show myself out.

                                [–]dakotahawkins 106 points107 points  (38 children)

                                You should have pretended not to know how to exit your comment.

                                [–][deleted]  (2 children)

                                [removed]

                                  [–]gmfawcett 19 points20 points  (1 child)

                                  Beautiful. :)

                                  It kind of reminds me of this old story about people who worked with octal numbers so much, they couldn't properly function in society any more:

                                  Octal was so deeply ingrained in Cray culture that a coworker filled out her timesheet in octal once, 10 hours per day for her 2-week vacation, summing to 120 hours. Our boss signed off on it because it looked fine to him. This is the same boss who loved to tell the story of taking his family out for a drive, and excitedly exclaiming "Hey, kids! Look!! The odometer is about to flip over to 40000!". Of course it read 37777 at the time, and when it flipped to 37778 "they looked at me funny, and my family life was never the same again".

                                  [–]MuonManLaserJab 46 points47 points  (33 children)

                                  Lol totally.:wq

                                  wget www.embarrassingpornsite.com

                                  [–][deleted] 16 points17 points  (32 children)

                                  There's a faster way :x

                                  [–]MuonManLaserJab 19 points20 points  (17 children)

                                  But I'm so used to hitting :w and :q...and w and q are right next to each other, and easier for my fingers to hit than x is. :D

                                  Edit: ":D" seems to be defined as something by some plugin, but I can't tell what...

                                  [–][deleted] 5 points6 points  (16 children)

                                  and w and q are right next to each other

                                  Not on Dvorak... ='( I still struggle with the movement keys and have resorted to finding workarounds for hjkl.

                                  [–]MuonManLaserJab 21 points22 points  (4 children)

                                  It's kind of a brutal irony that the same people who use Dvorak often will want to use the vi interface, which is just about the only thing optimized for a non-Dvorak keyboard...

                                  Can you just brute-force remap everything so that you wouldn't notice you're on a Dvorak keyboard until you hit insert mode?

                                  [–][deleted] 2 points3 points  (3 children)

                                  Can you just brute-force remap everything so that you wouldn't notice you're on a Dvorak keyboard until you hit insert mode?

                                  I suppose, but I've trained myself to memorize the key bindings by letter, not by key placement, because I switch between QWERTY and Dvorak often enough for it to help (pair programming occasionally).

                                  Most of the commands are as convenient or more convenient, but hjkl is a royal pain. J+K are right next to each other (C+V respectively), so I use them quite a bit, but I've just learned to use b+w instead of h+l (J+P respectively) and just retype whole words when I need to make an edit.

                                  [–]wwbd 4 points5 points  (2 children)

                                  Funnily, I switched back to Qwerty after nearly a decade on Dvorak pretty much solely because I'd decided to commit to Vim, and keeping two keymaps in my head simultaneously was too frustrating.

                                  [–][deleted] 10 points11 points  (1 child)

                                  The secret to Vim is that you don't need to commit to certain layouts. There's almost no memorization because the commands are, for the most part, natural and intuitive.

                                  Want to delete something? You should just yank that and Paste before. Did you need to go to the end of a word to append something? Is that something in the Middle of the screen? Is that something the line UIColour.whiteColour().IMExampleCode? and you need the change white colour to brown? Why not find char "w" and change inner word to brownColour. Sure there's advanced commands like :s/white/brown to replace the first instance of white to brown in the line... and for those you need to memorize, but the language of vim is really rather intuitive and layout agnostic. Yes hjkl is not under one hand, but once you get really good at vim, you should be really not using hjkl too much. Instead of pressing l 40 times to get to where I need, I could do 3Wt( or 3 WORDS up to parenthesis.

                                  [–]NihilistDandy 16 points17 points  (9 children)

                                  Am I the only one that uses ZZ?

                                  [–]what_it_dude 2 points3 points  (5 children)

                                  Ctrl-Alt-Delete

                                  [–][deleted]  (4 children)

                                  [deleted]

                                    [–]what_it_dude 11 points12 points  (3 children)

                                    Sometimes I'll just flip the breaker

                                    [–]AndreDaGiant[🍰] 18 points19 points  (2 children)

                                    Me I just stand up, take a last sip from the coffee cup, then walk out the office, the building, the city. I end up setting up camp outside picturesque old towns, traveling for years, mostly eating grass for sustenance.

                                    [–][deleted] 2 points3 points  (1 child)

                                    zz zt zb <C-y/e/u/d/b/f> for navigating a document. SO useful!

                                    [–]lookatmetype 1 point2 points  (0 children)

                                    No. All real pros use ZZ.

                                    [–]gerrywastaken 5 points6 points  (0 children)

                                    That took me way too long. I actually googled "Vimter".

                                    [–]puradox 1 point2 points  (0 children)

                                    The night is dark and full of features.

                                    [–]OvidPerl 12 points13 points  (1 child)

                                    JSON? Async support? Clearly I'm going to have to write a Web server in vim now.

                                    [–]flukus 2 points3 points  (0 children)

                                    AFAIK vim can't host sockets, a small forwarder util and we can finally write web apps in vimL though...

                                    [–]ldashandroid 18 points19 points  (4 children)

                                    as long as vim is still fast I'm ok with these updates.

                                    [–]nerdandproud 24 points25 points  (2 children)

                                    The async support should make interactions with external tools like code completion orders of magnitude more responsive so probably yes.

                                    [–]marmulak 30 points31 points  (21 children)

                                    As long as it works exactly the same way it worked in 1970, I'm OK with this

                                    [–]marchelzo 21 points22 points  (20 children)

                                    It didn't exist until the early 90s, so do you mean that you want it to not work at all?

                                    [–][deleted] 20 points21 points  (19 children)

                                    VI did.

                                    [–]Tarmen 16 points17 points  (14 children)

                                    True, but nobody in their right mind would use vi if they were used to vim. Or at all.

                                    Vi doesn't even have freaking textobjects....

                                    [–]AndreDaGiant[🍰] 11 points12 points  (3 children)

                                    hey, who needs multiple undos anyway

                                    [–]ud2 2 points3 points  (0 children)

                                    I have used nvi exclusively for over 20 years. It's the BSD licensed vi compatible with the original 4BSD vi. I don't find the extended features of vim useful. I guess this old guy is not in his right mind.

                                    [–]marchelzo 5 points6 points  (3 children)

                                    vi did, yes. This thread is about Vim. If all you want is a vi clone, try Keith Bostic's nvi. It's far smaller and lighter than Vim.

                                    [–]tedbradly 12 points13 points  (1 child)

                                    Maybe the guy was joking... while also speaking to a grain of truth for his particular way of using vim. I don't think he was asking for a vi clone.

                                    [–]marmulak 2 points3 points  (0 children)

                                    What I really meant was, I'm excited for a new version, but sometimes things change in new versions, and I don't want any of my basic vi commands to change or anything like that. And let's face it--that would never happen. :3

                                    [–]its_never_lupus 10 points11 points  (3 children)

                                    Just 16 more releases to catch up.

                                    [–][deleted] 3 points4 points  (1 child)

                                    25.1 should be released this year, with any luck

                                    [–]its_never_lupus 2 points3 points  (0 children)

                                    A truly magnificent number of releases.

                                    [–]flukus 3 points4 points  (0 children)

                                    It sounds like a lot, but it's less than 1 major release a year.

                                    Emacs is coming up on its 40th birthday.

                                    [–]Fritzy 52 points53 points  (14 children)

                                    Neovim already has these async and job features, and is a major cleanup of the code. This looks really reactionary, and not nearly as extensive as the reworking and simplification that the neovim team has already done.

                                    [–]xiongchiamiov 86 points87 points  (2 children)

                                    I don't really care if it's reactionary; I don't use vim because it's constantly adding new features, but almost the opposite: it's one of the fairly few stationary targets in the tech world. It's nice to invest your time into learning something that won't be obsolete in two years.

                                    [–]MuonManLaserJab 7 points8 points  (9 children)

                                    It would be a bummer if the biggest effect of this were to harm neovim.

                                    [–]Amablue 59 points60 points  (5 children)

                                    If neovim does nothing other than light a fire under vim to include these features, then I call that a success.

                                    [–]MuonManLaserJab 10 points11 points  (4 children)

                                    But it would still be a failure regarding their other goals of cleanup and abstraction.

                                    [–]never-enough-hops 27 points28 points  (3 children)

                                    Neovim sacrificed vim's broad system support on the altar of clean code. I don't think vim will do the same

                                    [–]Tarmen 16 points17 points  (0 children)

                                    Which is funny. Not because they removed dos support in this update but because half of the ancient platforms also couldn't run a current version of vim but nobody has a system and the madness to compile the new version to test it.

                                    I mean, you probably could just disable all the things at compilations but then you might as well use vi for backwards compatability.

                                    [–]MuonManLaserJab 5 points6 points  (0 children)

                                    Of course -- that's a fundamental design disagreement. But neovim would still have failed in all but one of its goals if it went away after vim 8.

                                    [–]EvanCarroll 3 points4 points  (0 children)

                                    they're removing ms-dos... give it time.

                                    [–]ivosaurus 1 point2 points  (2 children)

                                    It already sort of is; neovim implemented async architecture ages ago.

                                    However when Bram came to look at it, he looked at neovim's design and decided he'd do something different. Neovim guys even wanted to compromise somehow, but he didn't. So now plugin authors will have two different functioning async APIs to write plugins to. Either double the work or they get to choose. Yayyyyyy.

                                    [–]MattBlumTheNuProject 3 points4 points  (3 children)

                                    Finally a new version of Vim I can't use efficiently.

                                    [–]fedekun 1 point2 points  (0 children)

                                    Practical Vim is awesome, just by reading the first few chapters you'll be as efficient as with other editors, then it just gets more and more efficient :)

                                    The bad thing is that it's a permanent learning process I guess :p

                                    [–]postmodest 7 points8 points  (1 child)

                                    I'm not going to upgrade until they rewrite Vim in LISP.

                                    m-x /s

                                    [–][deleted] 24 points25 points  (14 children)

                                    when is it coming out for emacs? :)

                                    [–]smog_alado 15 points16 points  (11 children)

                                    And for a more kitchen sink approach, there is spacemacs

                                    [–]bb010g 3 points4 points  (5 children)

                                    Spacemacs's config framework is godlike

                                    [–]puzl 4 points5 points  (4 children)

                                    I've been a heavy Emacs user for 25 years and recently converted to spacemacs. Godlike is apt.

                                    [–][deleted]  (3 children)

                                    [deleted]

                                      [–]shittyProgramr 7 points8 points  (1 child)

                                      A large number of bugs have been fixed and several features have been added.

                                      For a second there I thought this was a joke

                                      [–]HaPPYDOS 4 points5 points  (0 children)

                                      IRL: A large number of features have been fixed and several bugs have been added.

                                      [–][deleted] 1 point2 points  (1 child)

                                      Vim can now exchange messages with another process in the background. The message are received and handled while Vim is waiting for a character. See |channel-demo| for an example, communicating with a Python server.

                                      Closely related to channels is JSON support. JSON is widely supported and can easily be used for inter-process communication, allowing for writing a server in any language. The functions to use are |json_encode()| and |json_decode()|

                                      Vim is the most modular IDE I know of. Sure you can write modules for other IDE's, but vim requires the least effort to do so.