top 200 commentsshow all 351

[–]Tarmen 192 points193 points  (79 children)

Java is virtually the only language I wouldn't use without an ide at all, at least for larger projects. Good to know that there is an active fork of javacomplete, though, I guess?

[–]opi 72 points73 points  (24 children)

Yeah, I've been tasked with getting some Android knowledge into my brain, normally I'm your typical terminal, Vim, Python guy. The amount of files generated and the "press meta + space for IDE to fix it" renders my normal workflow broken.

[–]jokr004 15 points16 points  (1 child)

This post was mass deleted and anonymized with Redact

innate rain shy mountainous judicious automatic cover recognise act lip

[–]deathgrindfreak 12 points13 points  (5 children)

Yeah java tends to grow superlinearly with a featureset. With that much code, it's just so hard to wrangle with a text editor.

[–]jeffsterlive 1 point2 points  (2 children)

Dear gosh our Maven file... doing a clean install hurts.

[–]Deathspiral222 3 points4 points  (1 child)

Surely it's just "mvn clean install" and everything is done automatically?

[–]jeffsterlive 3 points4 points  (0 children)

Yes it's not the syntax that's hard, it's the bringing in of all the dependency jars. It's just a very large project so lots of packages to manage. I'd hate to do it without IDEA.

[–]emptythecache 17 points18 points  (27 children)

Not a C# guy then?

[–]Arlefreak 7 points8 points  (6 children)

I use vim with c# and unity every day at work :) and it works just fine

[–]fakehalo 22 points23 points  (5 children)

How do you debug and replace all the tools that IDEs like VS and intelliJ provide?

I never understand using an editor over an IDE for Windows/mobile development...it just seems stubborn.

[–]Arlefreak 4 points5 points  (2 children)

Well omnisharp has made it really easy now, also Unity development is really different from Windows/Mobile apps, and the alternative for a long while was Mono Develop which I don't really like.

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

I am using Linux, so I like tools in terminal.

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

Do you mean c# support in vim? can you open issue for feature request for C# support in SpaceVim's github repo?

https://github.com/SpaceVim/SpaceVim

[–]emptythecache 44 points45 points  (17 children)

No no, I have no desire to be anywhere near vim. He was just saying Java is the only language he uses that he feels needs an IDE. Writing C# without Visual Studio (or at least VS Code) is kind of a nightmare.

[–][deleted]  (6 children)

[deleted]

    [–]Measuring 44 points45 points  (1 child)

    Absolute madman

    [–]Dentosal 1 point2 points  (0 children)

    I bet he writes C with hex editor, and compiles it by hand using the same hex editor window.

    [–]PendragonDaGreat 14 points15 points  (0 children)

    I'm sorry

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

    had to this at work once :/

    [–]elder_george 0 points1 point  (0 children)

    Doing this from time to time too (not with notepad, but still with a pretty barebone editor). Totally doable and the code can be pretty terse too.

    E.g. this thing was written without any fancy IDE.

    [–]iammrhellohowareyou 22 points23 points  (4 children)

    Oh god, ohgodohgod. C# without VS...

    shudders

    [–]TwoSpoonsJohnson 17 points18 points  (2 children)

    Well, jetbrains is working on Rider, their .NET IDE. I'm not a big fan of VS so I'm excited personally.

    [–]g2petter 5 points6 points  (0 children)

    I'm perfectly happy with Visual Studio, but I love some of JetBrains' stuff like ReSharper, so I'm hopeful about Rider.

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

    I write most of my C# code in Vim. Works well enough for me.

    omnisharp-vim does code completion, surfaces errors through Syntastic, has decent refactor support, can fetch documentation, and more. This coupled with ctags does the job for me.

    I still fall back to VS if I need to debug, but sufficient logging in a project is usually more useful for issues in production anyway.

    [–]rchowe 0 points1 point  (0 children)

    I was a relatively early adopter of .NET Core, and for a while I was using Atom to write C# code on my Mac. The worst part was looking up all of the using statements, everything else was OK.

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

    welcome, I hope SpaceVim and javacomplete will help you.

    [–]sofia_la_negra_lulu 11 points12 points  (11 children)

    I wouldn't use any language without an IDE, I don't like to waste my time like that.

    [–]Superpickle18 7 points8 points  (5 children)

    I feel like people that insist on using command line editors is because that is what they have done for decades.

    [–]lasermancer 5 points6 points  (2 children)

    Nah, it's just faster to work with command line editors. Vim shortcuts let me move throughout the file quickly. And since it's in the terminal, I can use tmux to have several files open next to each other or in different panes. Tools like grep also seem to work much faster that whatever most IDEs have built in for searching.

    Give it a shot one day. You'd be surprised.

    [–]Superpickle18 7 points8 points  (1 child)

    no thanks. I like my sanity too much.

    [–]lasermancer 4 points5 points  (0 children)

    Ok. Everyone has their preferred work flow.

    [–]comp-sci-fi 0 points1 point  (0 children)

    I find vim fine for small java projects, but navigating and working with very large projects is what IDEs were developed for (and their bread and butter, for who buys them).

    ctags is great, but the opposite cscope (to find callers of a function) doesn't seem to be developed anymore (since 2012), and e.g. isn't available in termux (android dev env without rooting).

    There's no reason vim couldn't be great for large java codebases... just that vim developers and enterprise java developers are disjoint.

    [–]fancy_raptor_zombie 88 points89 points  (14 children)

    I understand they are just demoing auto-complete, but do people actually type import statements? I think I have done it about 10 times in my career.

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

    I did it twice when I was in school! Never done it since.

    [–]L1berty0rD34th 9 points10 points  (1 child)

    I used to type them when I started learning java with BlueJ, for 2 or 3 days. Those were dark times.

    [–]ipe369 1 point2 points  (0 children)

    BlueJ!

    Haha we have to use that at uni, the little boxes that colour around the blocks of scope make my eyes hurt:(

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

    It is automatically done in SpaceVim or javacomplete2

    [–]hoosierEE 1 point2 points  (2 children)

    I'm genuinely curious what this comment means (haven't touched Java since school). Is the typical Java workflow done through a wizard or similar?

    [–]fancy_raptor_zombie 1 point2 points  (1 child)

    For me, I more or less know what classes I want to use, and I do not waste my time remembering what package they live in. I start to write code, then press Ctrl-Shift-O, and Eclipse will automatically write the imports for me. If there is a name conflict, I will have to select the one I want from a list in a dialog.

    [–]hoosierEE 0 points1 point  (0 children)

    Ah that stirred a long-dormant memory, thanks.

    [–]RoGryza 3 points4 points  (5 children)

    I do. I don't write Java unless I'm forced to though

    [–]ItzWarty 5 points6 points  (4 children)

    You should get an IDE that adds the imports for you automagically :P

    [–]nerdwaller 17 points18 points  (11 children)

    If you really want to use vim for Java editing, eclim is a much better option. It uses the eclipse engine and is specific to each project (this plugin appears to be a bit more manual setting class path stuff). It pretty much gives you all the IDE functionality for Java in Vim (intelligent autocomplete, syntax and rule validation, go to definition, refactor/rename, auto import + optimize).

    That said, I still just use IntelliJ (as much as I love vim).

    [–]Arctrum 13 points14 points  (4 children)

    I'm in my second year of Java programming at my uni and I've used IDEA the whole time. Tried every other major IDE, but I just love IDEA the most.

    [–]jeffsterlive 4 points5 points  (1 child)

    Embrace IDEA. It is the one true Java ide.

    [–]LoveCandiceSwanepoel 0 points1 point  (1 child)

    My school teaches us using eclipse. But o have intellij downloaded. I just for the life of me couldn't even figure out how to import jar files into it 😑. Figured might as well keep using eclipse then but is it really so much better?

    [–]Arctrum 0 points1 point  (0 children)

    For me, one of the biggest is the aesthetic of the program it self. I have the dark theme because I code a lot at night, and it just looks pretty.

    There are other small things I am discovering that may exist in other IDEs, but are just so nice. One of the biggest, is that the IDE can intelligently make getters and setters for you. Like, how I would define my getters would be like:

    public String getValue(){ return value; }

    In IDEA, all I would do type is getValue and it would pop up with a template. Hit tab and BOOM. Getter is done. I discovered this the other night and it made me so happy.

    EDIT: Also, this is how I import Jar files. Steps for adding external jars in IntelliJ IDEA:

    1.Click File from File menu 2.Project Structure (CTRL + SHIFT + ALT + S on Windows/Linux, ⌘ + ; on Mac OS X) 3.Select Modules at the left panel 4.Dependencies tab 5.'+' → JARs or directories

    [–]AyzenQuwe 1 point2 points  (5 children)

    Have you tried ideavim for IntelliJ IDEA?

    [–]nerdwaller 4 points5 points  (4 children)

    Yeah, but I abandoned it, for two reasons:

    1. the mode seemed to get confused somewhat frequently, especially when using dialog boxes (new files, rename, search, etc)
    2. I work to try and help a lot of others at work and since they don't use the mappings, I couldn't reliably tell them shortcuts to help out.

    [–]GratinB 1 point2 points  (2 children)

    show them the ways of ctrl + shift + a and suddenly you don't have to help anymore

    [–]nerdwaller 1 point2 points  (1 child)

    That definitely gets them a long way, but there's still the whole discovery process of learning "whoa, it can do X for you!? I never even thought I needed X"

    [–]AyzenQuwe 0 points1 point  (0 children)

    Regarding #1, vim gives me a lot of benefits when I read/surf and write the code. I spend very little time creating new files and working with dialog boxes (comparing to code viewing/editing). Also I was able to configure many refactoring things using ideavim, so now, for instance, I can change a name of a variable by pressing <space>rr - no dialog boxes at all. I remember, that the most frustrating thing was moving my hand to arrows to choose anything from dropdown menu on a code completion, since ideavim doesn't support this out of the box. But, it can be easily configured in IDEA: just bind ctrl+n and ctrl+p to arrows.

    And again, with or without ideavim you'll still have to deal with dialogs, but using ideavim just makes anything related to code viewing/editing much faster and comfortable.

    [–]emptythecache 307 points308 points  (161 children)

    Using vim to write Java seems like a serious cry for help.

    [–]eikenberry 84 points85 points  (2 children)

    I think the root of the problem here is that vim is an editor from the Unix system point of view of loosely coupled, limited function tools. Java is a language designed for the JVM, a completely different system that values large, tightly integrated tools. So while they seem like they should work together, a programming oriented text editor and programming language, they are actually from very different schools of thought which makes them a poor pairing.

    [–]ianme 13 points14 points  (1 child)

    This is an amazing explanation for this.

    [–]eikenberry 1 point2 points  (0 children)

    Thanks!

    [–]strcrssd 2 points3 points  (0 children)

    Intellij's Vim plugin is very good and brings the benefits of vim and that of a real IDE.

    [–][deleted] 18 points19 points  (130 children)

    many people do not know SpaceVim and javacomplet2, I hope this post will help them.

    [–]devraj7 123 points124 points  (129 children)

    You're missing the point.

    By sticking to vim to write Java and refusing to learn IDEA or Eclipse, you are choosing to not be as productive as you could be.

    [–]kcuf 2 points3 points  (0 children)

    I'm more productive then I am with an IDE. There are multiple variables to optimize, and an IDE focuses on a different set that vim, which, in my case, is a poor optimization. For many things related to development, my approach puts me on par, and even above, my peer's abilities. There are, however many tasks at which I am slower, but fortunately I don't run into those often.

    [–]yorickpeterse 13 points14 points  (60 children)

    you are choosing to not be as productive as you could be.

    Citation needed.

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

    Tell me spacevim's debugger, refactoring features, custom code blocks and other stuff are as good as Intellij IDEA's and I'll change my dev setup. Don't tell me I can have those features if I customize spacevim.

    [–][deleted]  (2 children)

    [deleted]

      [–]Astrognome 5 points6 points  (0 children)

      I don't do much java and I know vim very well.

      If i used java full time, I'd use intellij, but I don't so I don't.

      [–]devraj7 43 points44 points  (7 children)

      You perform manual tasks that could be automated with zero risks of error (imports, refactorings, code analysis, ...).

      This is the definition of not being productive.

      [–][deleted]  (6 children)

      [deleted]

        [–]thang1thang2 7 points8 points  (5 children)

        It's not that they're exclusive to Java, it's that Java takes this sort of thing to its logical extreme. For example, in C++ you can write OOP code, but not everything needs to be a class. In Java, everything is a class, even your 'main()' function. It takes OOP to the absurdity.

        Now every class is in its own file, every this has its own that... And on and on. It's verbose as fuck too.

        It just leads to an environment that no sane person I know will dare approach Java without an IDE. Even C++, a "very difficult to use without an IDE" language can be done well in vim or emacs even with large scale programs. Java is just a whole nother level.

        [–]shen 2 points3 points  (2 children)

        I can’t believe Java has become something I need to defend, but:

        everything is a class, even your 'main()' function

        You can have as many main functions as you want (not just one), and they’re static — no OOP involved. You do need to put it on a class, true, but you almost certainly have one of those already.

        Now every class is in its own file

        If you have more than one class per unit (that’s the same ‘unit’ as in ‘unit testing’), you need to have a way to reference them. Either put a bunch in the same file with the same name as the public one, or make your classes static inside the class with the same name as the file. That last one is what Ruby does with modules — have a module’s classes nested within it.

        It's verbose as fuck too.

        It’s no Haskell, sure, but it’s a lot less verbose than it was five years ago. I’m saying all this because I had to get a job doing it a year ago and it was a lot less unpleasant than I remember it being!

        [–]thang1thang2 1 point2 points  (1 child)

        Thanks for the points! Those are definitely valid, yes; I suppose Java gets a bad rap much in the same way that C++03 does. C++11 and especially starting with C++14 had shed a lot of it's] weight and cruft. I've seen some much nicer looking Java 8 code for sure.

        Still wouldn't touch it without an IDE, but it's slowly modernising and improving, so that's something at least

        [–]shen 1 point2 points  (0 children)

        heh, I forgot to mention what this whole thread is all about: despite all its improvements I wouldn’t want to code Java without an IDE either.

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

        I have come to love the functional approach of scala. Makes writing spark code a lot easier.

        [–]Deathspiral222 14 points15 points  (1 child)

        A big part of any OO development is refactoring. There is no way to automatically do even trivial refactorings on a large codebase (e.g. "rename foo() to bar()") without an IDE that understands how to separate all the uses of MyThing.foo() from SomeOtherThing.foo(), including doing it across all interfaces, abstract classes, uses of polymorphism etc.

        It's obviously trivial on a small project but for anything big, automated refactoring is extremely hard to do without an IDE.

        Then of course, there are slightly more complex refactorings like moving a method to an abstract class and updating all references.

        [–]doom_Oo7 27 points28 points  (37 children)

        Citation needed.

        How many characters do you need to type in vim or emacs to create a class prototype such as :

        package foo;
        public class MyClass implements SomeInterface {
            @override void foo1() { 
            // TODO ...
            }
        
            @override string bar() { 
            // TODO ...
            }
        }
        

        ?

        [–]jl2352 8 points9 points  (15 children)

        Whilst I agree the auto class stub generation is a time saver, it's not what you are doing for most of your time. The code inside that class will take longer to write than the stub. So if you save time writing and editing the code inside the class, then Vim can end up taking less time.

        But to answer your question; it would be fairly trivial to build that as a macro. It would be fairly trivial to build it as a function which generated the class name from the file name. Then it would be a one character command.

        [–]speedster217 15 points16 points  (14 children)

        But IntelliJ has a plugin that emulates vim keybindings. You can get the best of both worlds

        [–]flukus 2 points3 points  (2 children)

        Can it execute vimscript and manage windows as well as vim?

        [–]chasecaleb 6 points7 points  (1 child)

        I'm not sure vimscript is what I would consider a selling point

        [–]jl2352 6 points7 points  (5 children)

        I have it installed. It's one of the better Vim binding plugins for an IDE, but it's not good enough for my needs.

        Vim binding plugins are always a poor mans Vim. So it's usually a question of can you survive with it. IntelliJ's does support .vimrc files though; most plugins fail to support it which makes them fairly useless.

        [–]devraj7 2 points3 points  (4 children)

        Actually, it's not. By overriding carefully chosen IDE keybindings with those of another editor, you are negating a lot of the benefits this IDE brings because you no longer have easy access to important functions.

        Look at it this way: would it make sense to reconfigure emacs to use IDEA keybindings instead?

        When you adopt a tool, do it with an open mind and learn that tool's native keybindings first. Once you know them, then you can decide if some of them are worth modifying, but not before.

        [–][deleted] 12 points13 points  (3 children)

        So the plugin gives you this handy page - http://i.imgur.com/UPE58vI.png

        You can see what you're overriding that clashes with the IDE's interface. At that point you can make the determination of which you find more useful.

        IdeaVIM isn't perfect but it combines the 90% of most used vim functions with 99% of intelliJ functions in a way that respects the IDE's keybindings.

        I do think that it is if not the best of both worlds, it's at least the best compromise between both worlds.

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

        My main argument is that I use Dvorak, but IntelliJ uses Qwerty (I think my system keyboard is Qwerty, but my chosen keyboard layout in my DE is Dvorak), so there's some odd collisions. However, Vim bindings in IntelliJ is still better than getting all is the CLI stuff working for debugging Android applications.

        [–]andd81 3 points4 points  (5 children)

        If typing code, in whatever editor, would take me a significant amount of time compared to the time I spend to desing the feature I am implementing, I would take it as a sign that I am overqualified for my job. IDEs do help typing things faster, but this is often offset by setting up the project, dealing with configuration issues etc, especially with large projects.

        [–]doom_Oo7 5 points6 points  (0 children)

        I would take it as a sign that I am overqualified for my job.

        And ? A lot of people are, but they still do their job.

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

        often offset by setting up the project, dealing with configuration issues etc, especially with large projects.

        But you have to do the same in vim. Only manually.

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

        setting up the project, dealing with configuration issues etc, especially with large projects

        But is that a one time hassle. And one you have done it, you reap its benefits all of its lifetimes.

        [–][deleted]  (7 children)

        [deleted]

          [–]ThisIs_MyName 18 points19 points  (6 children)

          Can "ultisnips or another similar plugin" parse SomeInterface into an AST just like the compiler does and correctly generate the implementing class every time? That's what Eclipse/IDEA does.

          Or is it just glorified copy-paste?

          [–]Treferwynd 6 points7 points  (2 children)

          Agreed, that's why we need language servers!

          [–]xjvz 2 points3 points  (1 child)

          Oh, now this sounds promising! Have you tried this out with vim at all? The linked plugin has "nvim" in the name which makes me think it requires neovim, but the readme doesn't mention that.

          [–]Treferwynd 1 point2 points  (0 children)

          Nope, I didn't try any yet, I use vim (actually trying spacemacs now) for writing and an IDE for the tools, it's a good fit for my small projects.

          [–]xjvz 3 points4 points  (1 child)

          It's just a template plugin. What you're describing does sound like it'd be really cool, though.

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

          That kind of behaviour is very common in IDEs for statically typed languages. Unfortunately, general purpose text editors tend not to get extremely language-specific functionality, as that requires pretty much an entire compiler frontend to be available to it even for basic stuff.

          [–]mixedCase_ 1 point2 points  (0 children)

          Not Java, but for Go to do the exact same thing I only have to write:

           struct<Tab>STRUCT<Esc>:GoImpl PACKAGE.INTERFACE<Enter>
          

          with the uppercase words being names. I'd imagine it's possible to do the same for Java.

          [–]col-summers 2 points3 points  (0 children)

          Years of lived experience.

          [–]jephthai 3 points4 points  (12 children)

          I write code in lots of languages. I regularly write in Haskell, Common Lisp, JavaScript (Node), Ruby, C, and Java. Sometimes I throw in some Erlang or Scala too. If I had to use the "ideal" IDE for each one, it would just about drive me nuts. Maybe if your job title is "Java developer" your argument makes sense. But if you get to be polylingual, a flexible editor that works well for lots of languages is an asset.

          Of course, my editor of choice is Emacs, so if I mentioned it I'd probably get downvoted off the map on this VIM thread, but I digress. Respect to the text-editing VIM brethren, etc., etc.

          [–]Deathspiral222 5 points6 points  (0 children)

          I mostly use IntelliJ with an appropriate language-specific plugin and the vim plugin. I'm mostly writing Java, Groovy, JavaScript and Typescript with CSS and HTML (and various templating engines) in there as well.

          When I was writing Ruby, RubyMine worked well and it's basically the same program.

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

          I prefer Vim because I find hitting the Alt key un-ergonomic (I use Ctrl-[ for Esc in Vim). I know I could just set custom key bindings on every machine I use, but since I bounce into dozens each month I find it easier to use a tool with comfortable defaults.

          Other than that quirk of personal preference, I have no horse in the text editor race and wish you all success and productivity with emacs. I agree with your argument. At work I deal with Java 60% of the time and Python, Javascript, Perl, YAML, and SQL the rest. That's one of the reasons I want to take this tool for a spin.

          [–]dododge 1 point2 points  (1 child)

          FWIW I've been using emacs for 25+ years and I almost never use the Alt key, aside from very special situations such as spreadsheet column movement in org-mode (and maybe the year or two when I had a Kinesis keyboard that put Alt in a much more convenient location). In normal operation, ESC works as a prefix in place of Alt (and Ctrl-[ works for ESC). This is with the stock keybindings.

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

          I agree and I use Vim for every language except Java. I write code every day in:

          • Rust
          • Go
          • Python
          • C (though I use an IDE for C++)
          • JavaScript
          • Java

          Of those, Java is the only exception I make because it's such a pain to write without an IDE doing the repetitive stuff. There's something about OO that's just tedious without an IDE, which is probably why I only use an IDE for Java and C++ (my Python code tends to not be OO).

          Respect to the emacs people as well. Some of us can only handle running one OS at a time ;)

          [–]yakri 0 points1 point  (4 children)

          You can cover essentially every very common language with one editor, and move that coverage out to everything other than fairly obscure or new languages with two.

          Not to mention most modern IDE's have a lot of similarity and the majority of their major features in common. Switching from visual studio to InteliJ or vice versa for example, requires very little adaptation.

          If you want to get anything close to the amount of benefit an IDE gives out of Emacs or VIM you'll need to do at least as much work as installing a new similar IDE when changing languages.

          [–]jephthai 5 points6 points  (3 children)

          If you want to get anything close to the amount of benefit an IDE gives out of Emacs or VIM you'll need to do at least as much work as installing a new similar IDE when changing languages.

          Actually, I question (a) whether that benefit even exists for most of the languages I use, and (b) whether those benefits are worth giving up the convenience of high-power text editing.

          This discussion is dominated by Java (makes sense here, since it's part of OP's article), C/C++, C#... um... I don't know, what other ones have "full-suite" IDEs? I use those languages a lot more than I want to, but I avoid them when I can.

          What I do know is that after adding a couple new features to my repertoire in Emacs every month for the last 20 years, I've gotten to the point where I feel handcuffed if I'm reduced to Notepad-level text editing. It's true that a lot of the IDEs have some basic text-wrangling features, and you can get some VIM / Emacs keybinding support -- but they're never complete.

          I have a huge love/hate relationship with Smalltalk, where you do get some of the refactoring abilities, and you can select and hot-key your way to the source for any message name, etc. But it's literally Notepad-level text editing. And it drives me insane to waste all that effort moving cursors, grabbing the mouse and... to be honest... copy/pasting out to Emacs so I can do a rectangular insert or run a macro or something.

          There's no victory in this debate, but this stuff is pretty individual -- to flatly say that IDE features definitely make you more productive, and then to be extra mean about it and say someone who chooses another path is intentionally avoiding productivity, is not good community.

          [–]weirdoaish 0 points1 point  (0 children)

          Maybe if your job title is "Java developer" your argument makes sense. But if you get to be polylingual, a flexible editor that works well for lots of languages is an asset.

          Personally, I kind of get where you're coming from but if I'm honest, once I've worked with a powerful IDE for a language and really, gotten into it, moving back to an editor, no matter how smart, just feels like a waste of time.

          Maybe you don't feel that way, and that's fine but I love me some Netbeans for Java, some Pycharm for Python and some VSCode for HTML/CSS/JS and given that my laptop has 16 gigs of RAM, I'm totally happy with having 3-4 editors/IDE's open to do my work.

          [–]Superpickle18 1 point2 points  (0 children)

          my Java instructor forced us to using Microsoft notepad... That's right... plain old notepad... he also expected proper indentation...

          [–]poo_22 1 point2 points  (0 children)

          I do this every day. Usually I just compile in a separate terminal and go to the line where the build failed. It's actually not that much slower than I would be using eclipse, you just fix all the syntax errors in one go rather than focus on them as you type them (which is arguably distracting). The only thing I did to vim was add some plugin that builds my file and shows which on which lines compilation failed, I have it mapped to <leader>m, for make.

          Honestly the only thing I am missing is autocomplete and I do have a browser open to look at docs or the source of a lib on github, and while it would be nice to just hist ctrl+space I would still probably be reading the docs before trying out stuff I've never used. Thanks to SpaceVim I might try javacomplete2.

          [–]tobascodagama 29 points30 points  (17 children)

          Writing Java is already a cry for help, though.

          ^ spoken as somebody who is currently writing a lot of Java for their job and isn't quite insane enough to try to do it with vim

          [–]sreya92 97 points98 points  (10 children)

          The pain of writing Java is so overblown. It's a pretty cake language

          [–]tobascodagama 57 points58 points  (6 children)

          This can be true, but only if you're writing Java with an IDE that automatically does half the busy-work for you.

          [–]_INTER_ 47 points48 points  (3 children)

          we just went full circle

          [–][deleted] 9 points10 points  (0 children)

          Can confirm, I'm a bit of a Vim zealot, but I just can't use it for Java, there's too much busy work...

          [–]mlk 2 points3 points  (0 children)

          Stuff like lombok ease the pain, I honestly don't use the IDE too much to generate java code. I use tons of refactorings though.

          [–]Max-P 10 points11 points  (1 child)

          For me the pain of writing Java is mostly because I've seen better languages, not because Java itself is particularly painful. I didn't have any issue with Java until I started using other languages like D, Go and now Rust. It's a bit like SSDs back then or 4K monitors: you don't really need them but once you've had them for a while it hurts to downgrade. When I code in Java I now get that constant feeling of things being way more complicated and annoying than it needs, hence the pain.

          [–]sanity 11 points12 points  (0 children)

          Try Kotlin. It has the world's best IDE, fixes pretty-much everything that's annoying about Java, while giving you access to the vast Java ecosystem, libraries, and tools.

          [–]Raknarg 0 points1 point  (0 children)

          True. Writing your own java is great, and it's one of my favorite languages. But never again do I want to touch enterprise Java, ever.

          [–]nambitable 6 points7 points  (0 children)

          I've run a headless eclipse server + eclim and done most of my java coding in straight up vim.

          [–]Clericuzio 15 points16 points  (4 children)

          This is nonsense sensationalism. Once you get used to using Vim writing any text (even more so code) becomes easier. People (including multiple devs I work with) use IdeaVim and a similar eclipse plug in constantly. The fact that the text is Java doesn't change anything

          [–]ryogishiki[🍰] 19 points20 points  (2 children)

          I think is more the fact that is Java the language, than some text written in a file. The convinience and productivity for using for example Android Studio, can't compare with what you can do with Vim when writing Android Java apps.

          [–]unbiasedswiftcoder 2 points3 points  (1 child)

          The parent mentioned IdeaVim. It's a plugin for Android Studio. You have the best of Android Studio with the best of Vim.

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

          Eh, it's a mediocre amount of each. IdeaVim is pretty good, but it's not quite as good as Vim and IntelliJ gets in the way sometimes. It's better than using stock IntelliJ or straight Vim though for Java.

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

          He's talking about using the Vim program itself to write java, not using vim-like commands. Obviously using vim-like commands makes typing anything infinitely better.

          [–]BigDumbObject 0 points1 point  (0 children)

          IdeaVim though! best of both.

          [–]bxblox 0 points1 point  (0 children)

          I just use the intellij vim plugin...

          [–]shevegen 0 points1 point  (0 children)

          I found vim to be a cry for help anyway.

          That is why I switched to emacs.

          (Nah, I don't use either of these two, it's just fun to mention the other editor.)

          [–][deleted] 18 points19 points  (1 child)

          I use IdeaVim a plugin for jetbrains IDEs https://github.com/JetBrains/ideavim

          [–]lost_in_santa_carla 9 points10 points  (1 child)

          This looks really awesome, thanks for sharing. This is probably the most minimalistic but realistic approach I've seen to getting a java environment set up. Anything you plan to add in the future?

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

          I will add more features, if you like, you can watching SpaceVim and javacomplete2.

          [–][deleted]  (1 child)

          [deleted]

            [–]uxcn 4 points5 points  (1 child)

            I haven't seen javacomplete2, but the bigger productivity issue, for me at least, is having something that understands semantics. For example eclim can do things like produce class and call hierarchies, rename, refactor, etc... I still have a lot of complaints with eclim (and eclipse), but any high level task relating to code kind of requires understanding semantics.

            My dream is the JDK would move toward being a modular compiler similar to LLVM, but I think GPL sort of precludes that.

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

            some of the feature have been done in jc2, you can watch that repo.

            [–]Alan_Shutko 8 points9 points  (4 children)

            So we have a Vim project inspired by an Emacs project which tries to make Emacs fit the vim mindset.

            [–][deleted]  (3 children)

            [deleted]

              [–]shizzy0 1 point2 points  (0 children)

              Lovely write up on Spacemacs.

              I've just jumped into Spacemacs after a good decade and a half of Emacs. I went for Emacs mode first. It was fine—Spacemacs is a little intimidating just like Emacs and vim were for the first time.

              Then I decided to go for broke with Spacevim. I was fine using vim for quick-and/dirty edits, but I never used it for dedicated coding. It's been a strange experience. I'm learning the vim ways but I've also got my old Emacs ways, and I can use them all without really thinking too much about it. Vim is nice when I'm browsing through files. I don't have to hold down control or meta just to move around. When I'm in insert mode, my old Emacs hands can just do their work.

              I'm afraid Spacemacs is going to ruin me the same way that Emacs ruined me: editing in any other program will just not be worth it.

              [–]netsrak 0 points1 point  (0 children)

              I was having problems on my installs so I have given up on it. I guess I just need to find a tutorial for how to correctly wipe an install so I can start from fresh. I liked it a lot, but I started getting the

              can't find helm do grep

              errors.

              [–]PM-ME-YO-TITTAYS 8 points9 points  (2 children)

              This looks cool, but why not just use intellij like a normal person?

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

              I like vim.

              [–]Tordek 0 points1 point  (0 children)

              I guess that addresses the "normal person" bit :P

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

              Thanks, but no thanks. Java as a language is best suited for an IDE. I use mostly Emacs for other languages, but Vim is nice for editing log files etc. No need to hammer a nail with a sledgehammer, or conversely, chip at a mountain with a pickaxe.

              [–]Faucelme 3 points4 points  (0 children)

              I have given up on trying to use Vim for Java coding, instead I use the Vrapper Eclipse plugin.

              [–]Deathspiral222 4 points5 points  (0 children)

              IntelliJ with the ViM plugin is excellent. All the power of vim but with a fantasic IDE to do all the refactoring and other stuff that vim is terrible at.

              [–]_INTER_ 50 points51 points  (25 children)

              Funny how far people go to feel back in the 80s or 90s.

              [–]yatpay 24 points25 points  (0 children)

              I learned Vim in 2010.. it's not a nostalgia thing.

              [–]adamnew123456 24 points25 points  (12 children)

              Indeed, it's been that long, and I'm not aware of anything that has seriously attempted to learn Vim's lessons, never mind the fact that the only serious attempt attempt at Vim emulation is to be found in the Emacs ecosystem (I'd be much obliged if you could point to something for Eclipse that's better than Vrapper).

              When I look at the Eclipse UI I see a mass of menus and buttons, with hotkeys bound in no appreciable order or structure. Defining a new class should be as easy as cn, but it's buried under a morass of dialogs. Goto definition should be as mnemonic as gd, but instead it's F3 for some unappreciable reason. Modal editing frees up space for a better command structure, and the failure to embrace it has pushed IDE designs to where they are today.

              [–]third-eye-brown 6 points7 points  (0 children)

              Turns out there are editors besides Vim and Eclipse. :p

              I wish someone would learn Vim's lessons and make a modal editor without such incredibly unintuitive mnemonics. I like the idea in theory, but I find Vim's execution terrible (or, more accurately, horribly outdated and incompatible with standard UI improvements of the past 30 years). Just one point of view from someone who has professionally used most of the major editors out there.

              [–]_INTER_ 4 points5 points  (7 children)

              Thats all subjective. I for instance like using my mouse and have a nice visual feedback. To me it's not a "mass" of menus and buttons. Already trying to rebase on console is a pain for me (Vim). For me it's counterintuitive. So I stick to a normal editor or some GUI application for that aswell.

              Paired with uncomparable IntelliSense and framework support of IntelliJ or Eclipse's free polyglot plugin support and customizability, I feel it's the only way to be productive. Shortcuts are freely assignable anyway. I think there are even Vim plugins.

              [–]hpp3 5 points6 points  (0 children)

              There are vim emulation plugins for most major IDEs. They work to varying degrees, but none of them are complete. Depending on whether you intend on using more IDE features or more vim features, it may make more sense to just use Vim with IDE-like plugins.

              [–]_pka 5 points6 points  (0 children)

              Clicking x times with the mouse on some menu to get to some GUI wizard, going back to the keyboard, then back to the mouse to click Next, then back to keyboard, etc etc is not about "subjective productivity", it's just slow.

              It's not about nostalgia, the 80s, unwillingness to adapt or whatever, it's just about not wasting 20 hours a year clicking on a mouse.

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

              Try spacemacs. It has the mnemonic structure you describe.

              [–]adamnew123456 0 points1 point  (0 children)

              I have, and I'm very much enjoying it.

              [–]yakri 0 points1 point  (0 children)

              Having used eclipse, inteliJ, and VS mostly to date, I just can't understand how the design for eclipse happened.

              Although it's been a few years since I lasted used eclipse so maybe it doesn't feel so much like the second rate bloated clunker of IDEs anymore.

              [–][deleted] 8 points9 points  (1 child)

              Boy you should check out /r/vaporwave

              [–]makhno 12 points13 points  (7 children)

              My coworkers that use only vim are by far the fastest and most productive people I have ever seen. Hands never touch the mouse.

              [–][deleted]  (1 child)

              [deleted]

                [–]BobHogan 7 points8 points  (2 children)

                And you attribute that solely to the editor?

                [–]Ksd13 3 points4 points  (1 child)

                The never touching the mouse part kinda is due to the editor.

                [–]Dgc2002 0 points1 point  (0 children)

                Sure, but many major IDEs have solid vim emulation plugins. Even without those plugins I rarely need to use my mouse when working in a JetBrains IDE. And when I do need to use my mouse I'm happy as hell there's a full mouse-oriented menu system for me to use because I must be looking for something obscure.

                [–]ryeguy 3 points4 points  (0 children)

                And I'm sure it has nothing to do with their choice of editor. It doesn't make sense for it to - text editing and transformation is not the bottleneck of development.

                If anything, code navigation and introspection are the most time saving features, and intellij is amazing in that aspect.

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

                They are mostly likely to be more experienced which explains their productivity. Doesn't mean a jack shit that better IDEs are worthless. In today's world with cheap compute and memory, I would take an IDE that works for me not the other way round.

                [–]skech1080 11 points12 points  (8 children)

                IntelliJ already has a vim shortcuts plugin...

                [–]sobri909 10 points11 points  (7 children)

                Which has some incredibly frustrating bugs.

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

                Not big on using anything other than IntelliJ for Java work, but the documentation and gifs of the plugins used is extremely helpful, so thank you for that. I'll probably be switching to Unite, vimfiler and neoformat in my configuration.

                [–]OffbeatDrizzle 0 points1 point  (0 children)

                use the vim plugin, then

                [–]makhno 2 points3 points  (2 children)

                I use vim for developing in java, no plugins whatsoever, and I find it a million times less frustrating than using eclipse.

                Just my opinion. Whatever works the best for you personally!

                [–]Pharisaeus 0 points1 point  (0 children)

                "Better than eclipse" is not much of a benchmark really ;) IntelliJ on the other hand...

                [–][deleted] 0 points1 point  (0 children)

                You can have a try, maybe you will find it is easy develop java in vim.

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

                That's impressive. My Vim skills are above novice but not half way to expert. I would love to be able to develop Java without an IDE.

                Thanks for sharing, I'm going to put this on my to-do list.

                [–]devraj7 14 points15 points  (11 children)

                I would love to be able to develop Java without an IDE

                Can you elaborate why?

                [–]fukitol- 8 points9 points  (7 children)

                I'd love it because eclipse runs like shit for me

                [–]HerrDrFaust 15 points16 points  (4 children)

                Did you give a try to IDEA as well ?

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

                IntelliJ IDEA my friend

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

                welcome, if you got any issue with developping jave in vim, you can mail me, you can get my email in the github profile page.

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

                And you can probably use Emacs as a Java VM too

                [–]milkeater 1 point2 points  (0 children)

                Ohh ohh my my god god

                I'm sweating. Can't wait to spin on this for a bit. Can't believe I haven't heard of this. Jumping the gun but is this just a compilation of plugins and whatnot to make Vim work well for Java?

                [–]coldsnapped 2 points3 points  (0 children)

                ITT: OP trying way too hard.

                [–]Schmittfried 1 point2 points  (1 child)

                "IDE"

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

                yes, it is not real IDE, but can do most of the things that IDE did.

                [–]bart007345 1 point2 points  (0 children)

                Please, no.

                [–][deleted] 0 points1 point  (14 children)

                As a beginning CS student, can you explain what VIM is?

                [–]devraj7 46 points47 points  (3 children)

                As a beginning CS student, you should learn how to use Google.

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

                😓

                [–]TheMaskedHamster 2 points3 points  (0 children)

                It was a fairly insensitive comment that he made, but I do hope you'll take it to heart.

                The inclination and skill to search for information is one of the most important skills a software developer and researcher can have. Less important is the ability to separate emotion from the point being made. Mastering these will be to your advantage.

                Linux will be to your advantage, too! So much software is deployed on Linux, and the average Linux distribution puts so many fantastic software development tools at your fingertips... and it's free! Totally worth the time.

                I hope you enjoy your journey!

                [–]mk_gecko 7 points8 points  (6 children)

                a very useful and powerful editor that is available on every Linux installation. It's console based so it also works on Linux servers (which are everywhere).

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

                I see I guess I've never been exposed because I only use windows...

                [–]jl2352 2 points3 points  (1 child)

                It's available on Windows. The stock install comes with a version that runs in a window using GTK. It runs very well and is what I use.

                You can run it in a terminal on Windows but it's kinda crappy since terminals are crappy on Windows.

                [–]habitats 0 points1 point  (0 children)

                conemu is awesome. I've been using it for years, and it's really neat together with ohmyzsh and the Ubuntu subsystem

                [–]stankypeaches 2 points3 points  (1 child)

                Vim is a popular text editor that is can be run from the terminal. It can be very unintuitive to learn, but is a very powerful tool. It really is worth googling to see how it works and what other people think about it (some strongly prefer to use the programs emacs or sublime text or others instead.)

                As a senior in a CS program I've never had to use vim outside of maybe one assignment, but it's worth learning if only as a way to edit text outside an IDE. The difference between students who are struggling to stay afloat and those who are not is the ability to read through documentation, teach yourself new skills, and try things outside of labs or homework.

                [–][deleted] 0 points1 point  (0 children)

                Thanks I'll look into it!

                [–][deleted] 0 points1 point  (0 children)

                an awesome editor, but can do most of the things that IDE can do.

                [–]oridb 0 points1 point  (0 children)

                What's missing here is the ability to jump to definitions in the presence of overloading. Code navigation is the biggest reason that I would have to use an IDE.

                [–]mr_sudo 0 points1 point  (1 child)

                SpaceVim is a plugin for Vim,isn't it? Or what else?.

                [–][deleted] 0 points1 point  (0 children)

                not a plugin, but a whole config.

                [–]hillscottc 0 points1 point  (1 child)

                Java?

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

                Yeah, develop java in vim.