views:

979

answers:

12

I thought I'd have a try at using Win32 GVim, and I'm finding that it's much more versatile than I realised. At this point I'm finding that for myself a lot of its features are still hidden. As an example I'm used to having a button on the toolbar to run external commands and capturing the output but I found in Vim it's :%!<command> to get this.

I'm wondering what are the limitations of Vim itself (i.e. not Vi's). What, if any, are the features that you've found missing in Vim? Also have you subsequently found a way to enable this feature after all?

+1  A: 

For people who aren't used to use Vim I think all features are hidden without a Cheat Sheet

Put your question as Wiki; it is very subjective

Daok
A: 

There are lots of features and you just keep discovering new ones as you go. Reading random parts of the docs from time to time can help speed up your knowledge of features.

Roman Plášil
+6  A: 

A programmable shell mode (like emacs) that would make VIM a true IDE for any language. I don't want to switch to emacs just for that...

There is a vim-shell patch http://www.wana.at/vimshell but since it's not part of the standard distribution it is not available on machines I use (and universal availability has always been one of VI's key features!)

nimrodm
And it will never be added. See :h shell-window
Zathrus
Never say never. See the link in the post. The shell-patch is not that big considering its usefulness.
nimrodm
I've seen the patch. It hasn't been maintained and doesn't work anymore, nor did it ever work on non-POSIX systems, which means it would never be integrated into vim. Bram is quite forceful about this -- this feature will not be in vim.
Zathrus
+3  A: 

There have been several other questions very close to this one here, here, here and here.

Lucas Oman
I don't agree. This question is about what features Vim doesn't have. All those questions are about features Vim does have.
Sergio Acosta
+1  A: 

A feature that I found very useful to have is a File Explorer, for browsing your file system folders and open files, you can get this feature with this scripts:

Another feature that I found very nice is to have templates or bundles, snippetsEmu emulates TextMate's snippet expansion...

I also like to save my most used macros, so I can use them later when needed, for that I use marvim.

CMS
`:e .` works just as well for me
knittl
A: 

According to this thread, the ability to find a file in a tree-list of files (Command-T in TexMate) is missed in VIM.

One possible solution is to map "_" to ":b 0", then make sure to always open up a "files.txt" file (or some other file that has a list of file names in it) which was usually made by just running find . -type f -not -path '.*/.svn/.*' > files.txt.

This way shows all the files in a tree-like view. I can search through them with ”/”, and when I find the one that I want I can just type “gf”.

VonC
Its has been added through several external plugins (at least 3 that I know of)
Luc Hermitte
One example is fuzzyfinder_textmate: http://github.com/jamis/fuzzyfinder_textmate
Ton van den Heuvel
+3  A: 

Lately, on one of the Vim mailing-lists, there has been a discussion about the lack of (maintained) interaction with external programs.

Luc Hermitte
A: 

My main concern is not directly related to vim itself, but to exhuberant ctags: its understanding of C++ is quite limited and it does not provides me as much information as I'd like to to develop my C++ ftplugins. As a consequence we have to do a lot of clumsy parsings in VimL in order to extract the static type of an expression, the namespaces imported in the current scope, etc. [EDIT: most have already be developed in omnicppcomplete]

Luc Hermitte
+1  A: 

If you miss a few gui-like features, but you love Vim, perhaps try PIDA, an IDE which embeds GVim itself. It's Linux-only, so sorry about that for you Windows/Mac users.

Ali A
I've tried it and just found it really ugly to use. Went back to vim the same day
Daenyth
Any reason why, so they can improve it?
Ali A
+4  A: 

I would like to be able to undo-redo between vim sessions.

Edit a file, save it, quit vim.

Edit the file a day later and undo the change you made last day.

==============================
EDIT

This feature won't be missing anymore!

Luc M
That would be nice, but are there any editors that do this?
Adam Neal
Stupid question but what forces you to close the editor?
ojblass
@Adam Vim could be the first one :-)@ojblass A single computer may be used by many users. It's better to close your session in that case.
Luc M
use git then .. edit close .. commit if you need to revert just revert to previouse version and then edit it ;)
nightingale2k1
@nightingale2k1 Do you keep ALL files into git ? :-)
Luc M
Eclipse can do this.
Jason
You might want to look at the unofficial "Persistent undo" patch for vim, found via the development page on vim.org. See the link at point (4) in http://groups.google.com/group/vim_dev/web/vim-patches?pli=1 UPDATE: according to the vim-undo-persistence page, the page is included in the mercurial 7.3a branch since March 23rd 2010!
catchmeifyoutry
+4  A: 

The ability to write to STDOUT, STDERR.

Vim can read from STDIN, but it sometimes it would be useful if vim/gvim -f could also write to STDOUT/STDERR to be used as an interactive or programmable filter in a command pipline. Vim would act as a text buffer, without the need of temporary files. Anything printed to the output could directly be parsed trough the following piped commands, contrary to saving a temp file and quiting, which blocks the pipeline (and requires making & cleaning the temp file).

There could be special :WriteOut and writeout() (or something) commands and functions to write the output, or an option to write out all :echo statements.

For example:

cat files_urls.txt | gvim -f -s echo_clicked.vim - | wget -i -

EDIT:

To elaborate on the above example, image you have a large file with URLs. You could then easily use vim as an interactive filter to wget the URLs on demand by calling WriteOut() on a selected line (or maybe configure :print to write to stdout) using a keymap or mouse click.

catchmeifyoutry
A: 

There are lots of features that vim does not have:

  • Ability to run plugins asynchronously
  • Wide collection ranges ([...] in regular expressions accepts only ranges that contain not more then 0x10 characters)
  • Normal API for supported languages
  • C API
  • Other modifiers support (like <W- in addition to <A-, <C- and <S-) at least in gui version
  • ...
ZyX