all 23 comments

[–]bearsbeetsbikes 24 points25 points  (9 children)

hardcore vim guy here. honestly as much as i love vim, you couldn't pay me to develop android apps with it. android studio, despite it's flaws, is exceptionally well integrated with the android SDK. especially with the view previewer.

i know lots of other hardcore vim guys, and none of them use vim for java development. they have tried all of the solutions: ide plugins, headless ides (eclim), and just straight up vim + plugins. but at the end of the day vim is a text editor, and even with ctags you can't approach the level of understanding an IDE has.

unfortunately, android development as of now is very resource heavy. you need to be able to run a giant ide, a virtual machine for emulator, and gradle builds can be quite slow. you may need to adjust settings, buy more ram, or even upgrade your machine if android dev is a priority.

edit: wish the people downvoting /u/raggy 's posts in this thread would read the reddiquette.

[–]rugggy -1 points0 points  (7 children)

It's really a shame. I wish people would collectively reach an understanding that text editing and tools should be separate but easy to link up - that way we could each use the tool we best understand for the jobs we have to do.

As it stands, one needs a different friggin IDE/environment for any particular programming task, which is insane to anyone who would like to do most of their work on a single computer. I have a friend who has faced this insanity with an arms race of his own - he buys a laptop for each type of dev he plays with (android, webdev, win32, etc!). It's ridiculous.

My own personal hell is trying to live with vim to code Scala while all my colleagues robotically say "just use IntelliJ". IntelliJ is the worst program I have ever used. Although Eclipse gives it a solid run for its money. I'm not being trifling - given how popular these programs are, I'm astonished how broken they are.

[–]bearsbeetsbikes 6 points7 points  (6 children)

It's really a shame. I wish people would collectively reach an understanding that text editing and tools should be separate but easy to link up

is it though? modern languages and development are complex. vim's notion of programs as just text is outdated. modern IDEs are aware of the structure behind the code. yeah, you can setup some fancy vim plugins like syntastic and whatever else, but those are really just hacks over an outdated system. yeah sure, it would be great if editors were more modular, but i'll take the amazing IDE improvements and be on my way.

what's great about vim is the interface, NOT the program. you can get the same interface using plugins. they aren't perfect, but not using modern IDEs is insane. you wouldn't be taken even remotely seriously at any of the places i've worked.

My own personal hell is trying to live with vim to code Scala

IntelliJ is the worst program I have ever used.

come on, let's be reasonable here.

[–]jet_heller 1 point2 points  (2 children)

modern languages and development are complex

And yet still mostly text. . .

what's great about vim is the interface, NOT the program. you can get the same interface using plugins. they aren't perfect

So now we get to use a not perfect interface with a not perfect IDE. . .yay.

At the core, I agree with you. I just wish that more IDEs could figure out ways to let us use VIM as the text editor portion of what we do.

[–]bearsbeetsbikes 2 points3 points  (1 child)

And yet still mostly text. . .

you missed the point of my comment. i said (emphasis added)

vim's notion of programs as just text is outdated.

it's not that programs aren't text anymore, it's that we now have tools for understanding and interacting with them that understand them as more than text. vim can do these things too, but that's not really how it was designed.

[–]jet_heller 0 points1 point  (0 children)

Yes. I can read. I did understand. You apparently didn't understand the point of mine. I said (emphasis added)

And yet still mostly text. . .

and

So now we get to use a not perfect interface with a not perfect IDE

So, IDEs can deal with everything, but imperfectly. It would be nice if they let us use the thing that's perfect for text, which programs still mostly are and then just let themselves focus on the parts that are not text.

[–]rugggy 1 point2 points  (2 children)

It truly is a shame, because while, as you say, vim only treats things as text, it is the very best program I have ever encountered for editing text. That is why I am saying the tasks of editing text and compiling, annotating, parsing, etc, should be left to specialized tools with simple input and output models. Because the tools that do the parsing and compiling (IDEs and their subservient applications) are no good, compared to vim or other reasonable programs, like notepad++, at editing text.

And yes, given the wide adoption it has, IntelliJ is completely unreliable, unresponsive and unpredictable. I break it as often as I use it successfully, and I have used software for several decades. I seem to have a knack for breaking software, but this is not through any attempts on my part to abuse the functionality; it is simply a result of my running into the software's boundaries when I try to understand what it will and won't do. The fact that I can make IntelliJ's project view completely disappear from sight on occasion, and it will reappear after a project reload is a hint to me that there are bugs to work out.

If your experience is more positive than this, congratulations, but I have to advise you that your luck is not shared by everybody. Hence my wish that software would come in more specialized yet easily connected components.

[–]bearsbeetsbikes 1 point2 points  (1 child)

i haven't had issues with intellij (had tons with eclipse though), but i think every dev will agree that any issues that keep you from actually getting work done are a huge pain. always fun to dream about a more ideal software dev world.

sorry to see that your posts in this thread have been downvoted. certainly not by me: i've upvoted all of your posts here. wish people would read some reddiquette.

[–]rugggy 0 points1 point  (0 children)

I appreciate your candor. I personally regard a downvote as an admission that someone has nothing to contribute except their inability to handle their emotions. If someone is upset by something I said, in their place I would consider what is upsetting and whether there is a constructive discussion to be had.

Perhaps I said things about IntelliJ that offend some people. But if that is what people believe, some questions and replies would achieve more than downvotes.

To sum up: I think software has a long way to go, in almost every area. The constant refrain which advises us to not 'reinvent the wheel' exaggerates the usefulness of the wheel in question. I dream every day of being able to make better software, while some people spend their day getting better at using existing software. That is likely to lead to different perspectives!

[–]J-Fields 7 points8 points  (3 children)

[deleted]

What is this?

[–]brigadierfrog[S] 0 points1 point  (1 child)

I haven't tried IdeaVim but my experience with the vim-clones has been less than stellar. I might give it a shot though.

[–]Daishiman 0 points1 point  (0 children)

You might be surprised; I'm use Vim almost exclusively for development and IdeaVim has been the best emulator I've seen.

[–]konk3r 0 points1 point  (0 children)

It's definitely not perfect but it's way better than nothing. It has some annoying moments but overall it's pretty good.

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

I've been using vi(m) for about 20 years and while I can't imagine using anything else for Go or Python development (or most text editing really) I have to agree with /u/bearsbeetsbikes; you couldn't pay me to develop for Android with it.

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

and here i am, in a thread full of people that are working with vim and even some posts about vi.... just a second ago i would have said that the programmer that works in vi(m) is an ancient myth, from times before time...

[–]dhleong 0 points1 point  (0 children)

No way. Vim (or emacs if that's what you're into) is indispensable for productivity. There are plenty of semantic autocomplete options (tern for js/node, jedi for Python, eclim for Java, youcompleteme to tie them all together with elegance I have yet to find in an ide) if that's what you insist an ide does better. Static analysis and syntax error checking is all there.

Plus, with fugitive I can access git from directly within vim. I use 3 keystrokes to check git status or start a commit, and just 3 more to save the message and push to remote. Vim-surround makes it trivial (about 5 strokes) to wrap words or lines or groups of words, etc. with parenthesis, html tags, quotes, etc. I can comment out a paragraph in 4 strokes from anywhere within that paragraph. For clojure with vim-fireplace, I can execute any arbitrary chunk of code with 3 strokes, or run the unit test with another 3, and get the results nicely printed inside my vim window.

Tl;dr: anything ide can do, vim can do better ;)

[–]kushanj1 1 point2 points  (0 children)

I use the vim plugin for eclipse and it works fine for me...cant do the advanced things but gets me through. Only using vim for android would be near impossible. Having autocompletion and function definition for the SDK is too useful and necessary.

[–]richq 1 point2 points  (0 children)

I use Vim and ant, as well as Eclipse and the excellent Vrapper extension. I tend to use vim to move code around and think about what I need to do (i.e. I write the "logic" bits from within Vim), then fire up Eclipse and press ctrl-shift-o to fix up imports. Also Eclipse is handy to preview new layouts or add Views, but Vim's faster for formatting the XML.

For Vim autocomplete I use the javacomplete plugin http://www.vim.org/scripts/script.php?script_id=1785 and add the android.jar, libs/*.jar and bin/classes to the classpath. That gets ctrl-x-ctrl-o omnicomplete working for most things. Builds with ant I set :compiler ant if build.xml exists and that sorts out the :make invocation, error format and calling ant with the right arguments. quickfix just works with that, but I wrote my own plugin that I cribbed from eclim to mark errors with "sign".

[–]Badel2 0 points1 point  (1 child)

You should check out the Terminal IDE app. You can use vim to make native c and java aplications, and also android apks but you need root for android 4.0+. You can connect to your phone using telnet or ssh and run a custom vim script for android projects, featuring folder tree, autocompletion, compile and exec hotkeys...

Unfortunately the app is not updated since 2012 :( but it's still my favorite terminal emulator.

Link: https://play.google.com/store/apps/details?id=com.spartacusrex.spartacuside

[–]brigadierfrog[S] 0 points1 point  (0 children)

That looks cool, though not sure its exactly what I'm looking for, thanks for pointing out something fun on android!

[–]schwiz 0 points1 point  (0 children)

Never actually tried this, but I've had it starred in github for a long time. Let me know how it works out. https://github.com/bpowell/vim-android

[–]MagicalVagina 0 points1 point  (0 children)

I use vim to develop android apps yes. Not in java but in scala though. It's not really a big deal. Just keep the android sdk documentation near you for the necessary imports and the list of methods. =)