views:

523

answers:

9

I have been programming almost exclusively in Vim since 1/1/2001, and I feel that Vim fulfulls all my needs as an editor/IDE, but I can't help but wonder if perhaps there have been some new killer features developed for other IDEs in the last decade that would allow me to be more productive than I can be using Vim. So I ask: What are the most important IDE features missing in Vim??

+3  A: 
  1. Integrated debugging with all the fanciness that Visual Studio/Eclipse provide (thread debugging, etc etc)
  2. Autocomplete with inline documentation support for methods/properties
  3. Build and run from 'within' the editor application
psychotik
Typing :make inside vim will build the project, provided there is a Makefile in the current working directory. Typing :cw after the build will give you a list of compile errors/warnings, which you can hit enter on to be moved to the line of code where the error occurred.
MichaelM
Vim does support build and run - try :make.
swegi
ad. 1 - never needed.ad. 2 - easy. I have autocomplete, and as for inline documentation :map <c-h> :!perldoc -f <cword><enter>ad. 3 - :help make
depesz
+1. Build and run IS supported, but the autocomplete isn't a patch on eclipse's and integrated debugging would be really nice so you don't have to keep loading some rubbish IDE just to debug your code. Keil uVision can't even be put in read-only mode, so you end up with lots of `:q`s all over your code!
Al
Autocomplete is the one major feature that I miss in Vim. It is available in Vim to some degree, but last time I tried it was too slow and not accurate enough for PHP due to the dynamic types, and the fact that I don't use the necessary phpDoc style comments.
too much php
Good to know about :make and :cw. Thanks!
psychotik
A: 

It's like the old question "What's worn under a kilt?"

Answer: "Nothing. Everything's in perfect working order!".

But seriously, I'd like to see a more intuitive (easy to use) help system added to Vim.

pavium
After 9 years I'm familiar enough with Vim's help system and most of the content in it, so I wouldn't switch to another editor just because it has a better help system. I'm not sure how your kilt relates to the the question.
too much php
It was meant to be a *joke*, son. But as you say: Vim's help system is not broken, it works perfectly. It just takes 9 years to learn it ;-D (that's a joke, too).
pavium
+3  A: 

The real question is: what do VIM have that IDEs are missing.

depesz
a good text editor. Everytime I have to use VS or Eclipse, I find the editor very kludgy compared to vim. Granted, part of it is being used to vim.
David Cournapeau
Modal editing! Most commands are so easy that I've come to feel that reaching up to press F5 is a major chore when I have to do it.
too much php
@David - take a look at ViEmu.
Brian Rasmussen
+4  A: 

I miss the excellent refactoring support and code tips from tools such as Resharper. Regexs are powerful for code modification, but understanding the code as Resharper does is just a tad better IMO.

Fortunately I can get both Resharper and Vim in Visual Studio so I am happy.

Brian Rasmussen
ReSharper would be very compelling, but I never work with C#. Are there similar tools for other languages?
too much php
Eclipse has great refactoring capabilities for Java code.
Geo
Resharper is available for VB.NET as well, and there are similar tools for Java. I don't know if there's anything similar for PHP (assuming your handle indicates your language of choice).
Brian Rasmussen
+3  A: 

I find that refactoring would be a real nice thing to have. Changing a java package name in vim with lots of source files can be pretty cumbersome.

exhuma
+1 This is something I've always done 'by hand' in Vim ...
too much php
I'm working on it (well the refactoring actions are simple, but still, it's a beginning). I have a major update of the plugin to upload. http://code.google.com/p/lh-vim/wiki/lhRefactor
Luc Hermitte
A: 

There is nothing missing in Vim that an IDE has. The only thing we could argue about is; Vim needs to be customized and IDE comes out of the box.

Let me comment the other answeres and how to solve such "needs".

  1. build

As mentioned, use :make and learn how to customize it.

  1. refactoring

Use the very well known ropevim (for Python), it makes a great reafactoring tool. You won't need more than that. There are many others, search for your language.

  1. Autocompletion

I use this snippet together with mapping to TAB (I think supertab plugin does that)

" python stuff
python << EOF
import os
import sys
import vim
for p in sys.path:
    if os.path.isdir(p):
        vim.command(r"set path+=%s" % (p.replace(" ", r"\ ")))
EOF

" tags for python libs
set tags+=~/.vim/tags/python.ctags

autocmd FileType python,mako set omnifunc=pythoncomplete#Complete
autocmd FileType html,mako set omnifunc=htmlcomplete#Complete
autocmd FileType html,mako set omnifunc=htmlcomplete#CompleteTags
autocmd FileType mako set filetype=mako.html.js
  1. Help system

in Vim is perfect, you just have to learn it's system. It has it's own conventions how are things organized.

  1. Debugging

I don't know for other languages than Python, but running pdb and !python % does it's job.

iElectric
`ropevim` looks interesting
too much php
+1  A: 

Search in files: In most editors, there is a separate window doing the search in files, and simultaneously editing can continue on the main window. The search results are updated as and when they are found. Also the current results can be viewed by clicking on it, even when the searching is ongoing, without waiting for the entire search to be completed.(whereas in cim one has to wait till vimgrep/ctags has finished to view the results)

This is particularly useful for search in large number of files.

So basically something like a search in background and simultaneously show results which can be clicked on to view them simultaneously. (something like Microsoft Visual Studio 6.0 does)

Vicky
+1 Vim doesn't really do *anything* concurrently.
too much php
on vim defense "clicking" is not realy it's thing... since it taking the hands of the keyboard is note very productive...
João Portela
"Clicking" was just mentioned as an example. Main concern is that things cannot be done conncurrently
Vicky
sry, kind of missed the point
João Portela
+1  A: 

The things I missed were code completion and debugging. That's why I started using eclim http://eclim.sourceforge.net/index.html so I could use vim for what it does best and eclipse when I actually need it. Try it out - it's a fantastic combination.

mozillalives
+2  A: 

Originally the refactoring was the killer feature that made us switch from Emacs. I have now used Eclipse extensively for Java for the last 6 years, and I expect any replacement to have:

  • Refactoring: Rename variables, functions, change method signatures (including all calls to it).

  • Debugging: "You are here" "Your current variables are" plus stuff like "go to the defined class for this object" or "go to the actual type for this object". I belive the latter requires quite a bit of integration between debugger and editor.

  • Code replacement while debugging. Change code, press Ctrl-S and the code in your debugging session is updated with what you just changed. A killer feature for big programs.

  • Navigation: Simple navigation of class hierarchy (please show me all implementations of this method in this interface and similar).

  • Javadoc integration - Eclipse can show javadoc just by hovering the mouse over an identifier.

Plus some more :)


Edit: I occasionally miss the Emacs functionality inside Eclipse, but the Eclipse editor has become stronger so it is not so bad anymore. In this regard the Save Action allowing a Format at every save was a killer. This ensures that changes show up properly in the source repository.

Thorbjørn Ravn Andersen