Vim and Gnome-VFS
I spent a chunk of the weekend implementing Gnome-VFS support in Vim. Originally I had
thought to do this by changing the Vim core (in C) by wrapping function calls like
open, write, close, stat, etc. to use the gnome-vfs equivalents. I realized that this approach
would be a lot of work, though, because those routines are not just used to load/save buffers,
but also temporary files and any other IO that Vim does. Auditing all of the code would be very
difficult, and in cases where Vim wants to deal with local files, it doesn't make sense
to do this via the gnome-vfs functions.
Besides, Vim already has support for ftp, scp and a few other protocols by means of the netrw plugin
(which is included in the vim distribution).
I discovered that gnome-vfs ships with a tool called "gnomevfs-copy", which can copy from one uri
to another. This is essentially the same thing you do with scp, but much more general, as it works for all
valid gnome-vfs uris.
Using gnomevfs-copy, I added gnomevfs support to the netrw plugin. That meant learning a lot
more vim-script, but I'm very happy with the result: using nautilus, I can browse to a remote server
(for example using sftp), and click to edit a file in gvim. Gnome-vfs supports more schemes than I thought,
including ssh, nntp, sftp, network, tar, gzip, https, rio500, ftp, davs, dav, bzip2, smb, pipe, and http. Using
the uri-chaining, it's probably also possible to directly edit a file in a gzipped tar file (haven't tried yet, though).
I will be submitting it to netrw's maintainer, but until then you can get it here.
Update: I renamed the file to have a .vim extension (as it should). To install it, just drop it
into your ~/.vim/plugin directory (creating this directory if necessary).
Posted by Jason Hildebrand <firstname.lastname@example.org> Monday Dec 20,
I am happy to see that you are again hacking the interaction
between gnome and vim. I wish that I could make time
somehow to help, but, as it is, I am merely hopeful that you
will soon focus your attention on the interaction between
evolution-2 and vim.
I am grateful for your efforts along these lines in the
past, and it appears as though your blog site is shaping up.
Good luck, and best wishes for the holiday season!
Your friendly network-neighborhood debian-sid addict who
would use evolution at work for interaction with the
company's MS-Exchange infrastructure if only evolution would
play well with vim,
Thanks for the encouragement, Thomas. I _am_ currently using vim-bonob with Evolution 2.0, but it has a few glitches, namely signatures aren't working (they don't get inserted into the emails), and the window sizing isn't quite correct. So it's useable, but is a regression from how it worked under Evolution 1.4.
So far I've tolerated these bugs myself, but wanted to fix them before releasing a new evolution .deb. Thanks for being patient.
Considering the historical popularity of vi, I'm surprised this hasn't already been done. As far as you know, has anyone else tried to integrate VIM and GNOME?
Eric: Yes and no. Back in 2002 when I first looked at it, the vim source code already had support for compiling Vim to use Gnome dialog boxes and session handling, but no serious work had been done on making Vim into an embeddable component, nor have I seen any efforts to take advantage of gnome-vfs.
I suspect one explanation for this is that although Vim has a large following, many hardcore Vim users still eschew "desktop environments" such as Gnome and KDE. Still, I receive email occasionally asking about Gnome-vim, and my website gets traffic, too, so I know there is at least some interest.
Thanks for the work you've done on gnome-vim up until now. It's a good step towards getting a well integrated editor for GNOME. Hopefully one day there will be better support for things like gnome-vfs, a good editor is really one of the last major components that seem to be lacking in GNOME this days.
Have you seen this page?
It's time for you! :]
I love the work on gnome-vfs, works like a charm, except I can't get Nautilus integration to work :'(
fantastic! I wanted this so bad, thanks a lot!