Sven Guckes@vim.org ©1995-2001

Last update: Wed Mar 14 12:00:00 MET 2001

VIM Development - CVS; Goals, Anti-Goals, Projects

This page tells you about the current development of vim.


VIM Development - Overview

These are the various topics on this page: Pro and Contra Discussions: These two sections were moved out to separate HowTo files:


Vim Development - Current Issues

The Vim FAQ needs a rewrite. I am looking into DocBook for this. Help is welcome.

Vim OLD FAQ v1.25 980210
Vim NEW FAQ online 000605

Vim Development - General Info

The developers are adding new features and fixing bugs constantly. They are communicating and coordinating their efforts via the vim-dev mailing list. If you want to listen to it, or even take part then please do subscribe to this list!

Many people already have suggested some very good idea for Vim which are assembled on the Vim WishList. Please take a look at it, so you'll know whether your favourite missing feature has already been discussed. If you think you can add a feature then do send us the patches! Actually, this is the fastest way to get a feature into Vim. :-)

New features also need some testing, and all help on this is much appreciated. See below for some hints on testing and on how to write a bug report. Thanks!

000412: Latest patches for the developer versions is now available from the CVS Server. See the CVS Page for more info.


VIM Development - General Development Goals

What are the general goals of developemnt for Vim?

Here are some answers:

Text Editor
Vim is a text editor. Vim supports editing of text. Vim is for editing text files. Vim lets you edit text fast. Repeat: Vim is a text editor.
Note: Although Vim has the option "binary" to support editing of binaries, Vim was not written to be a "binaries editor" or "hex editor" at all. Vim ships with the utility "xxd" which turns binaries into text and back, thus allowing editing of bianries with a workaround. However, Vim is still is a "text editor".

Programmer's Editor
Vim supports programming with features like automatic wrapping, easy indentation, reformatting of text and source code, tabs expansion, and syntax coloring.
However, Vim is *not* a compiler, so it does not know about internal structures of programming languages. Hence it does not include "syntax checking", which is very different from "syntax coloring".

No GUI required
Vim is supposed to work on all available terminals - however simple. Vim's commands should be powerful enough to make a mouse superfluous.
However, Vim has support for GUI to allow menus and copy&paste via the mouse to accommodate casual users and those who are used to mice (eek! ;-). If you don't want to use Vim with a mouse then you can install it with the option "-gui" (ie "no GUI").

1.4MB Barrier
Vim's distribution archive should fit onto a 1.4MB floppy disk.
Once PCs ship with a standard disk drive of 100MB Zip drives, we'll overthrow Emacs and take over ze vorld - bwa-hahahaha! (Oops. :-)

NOTE: In November 1998 there was a vote on the features for Vim-6 - please take a look:
  • VIM-6 - Vote for features - results

    VIM Development - General Development Anti-Goals

    There are some things that Vim does not try to be: All this would just add more code (and bloat to Vim) and result in this compile option list for my Vim:
    :ver
    VIM - Vi IMproved 6.66 [WinLinux] (1999 Apr 01, compiled Apr  6 1999 12:07:00)
    -babel -c64-linux -do-what-i-mean -emacs -gindent -kitchen-sink -lisp-decoder
    -mud-frontend -netscape-explorer -not-so-regular-expressions -print-anywhere
    -shell-o-rama -swahili-compiler -tea-hot-earl-grey -windows2000 -write-my-thesis
    
    If you want an editor with a builtin ftp client, mailer, and newsreader then by all means, do use Emacs! I hope I have made a point here.


    VIM Development - Vim-6 Features

    The main goals for Vim-6:

    For more info download the latest documentation ("runtime archive") and look at "todo.txt" or by entering the command :help extensions-improvements

    Bram says about the vim-6 alpha versions:

    Lots of things are not working yet.
    Check ":help todo" for known items.
    
    I NEED YOUR HELP: There is still a lot of work to be done.
    If I have to do it all by myself it will take a very long
    time until Vim.6.0 is ready.  Please give a hand by
    implementing one of the items in the todo list.
    
    Bram Moolenaar said on the maillist vim-multibyte on 000319:
    Unicode support is planned for Vim version 6.0.  In Vim 5.x there is
    double-byte support, which can be used for encodings that have a font
    with double-width characters.  Thus the current multi-byte support
    is rather limited and doesn't work for Unicode yet.
    


    Vim Development - New Features with Examples

    Here are some new features of the current development version. Please consult the announcements (available from the History page) for a full overview of the changes.

    Here are some features/reasons why I have recommended to upgrade to the latest version:

    vim-5.6 [TODO]
    Still looking for contributions. Please send them to me at guckes@vim.org

    vim-5.5 [TODO]
    Still looking for contributions. Please send them to me at guckes@vim.org

    vim-5.4 [still an alpha/developer version!]
    *Some* of the new features of Vim-5.4:
    - Port to the GTK+ GUI.
    - A version-specific runtime directory has been introduced.  This makes it
      easier to upgrade to a newer version, or run two versions at the same time.
    - Recognizing file types and syntax highlighting has been separated.
      This allows you to add your own file type specific items.
      And syntax highlighting is more flexible.
    - Now includes syntax highlighting for about 150 file types.
    - Vim scripts have been improved: Line continuation with a backslash, more
      functions, etc.
    - The hit-return prompt is avoided by truncating messages.  A message history
      has been added to view previous (untruncated) messages.
    - Support for encryption of files.
    - Quickfix support extended to support more error formats, including
      multi-line error messages and change-directory messages.
    - A number of useful commands and options added.
    - Many improvements for existing commands.
    
    - Console Mode Menus [vim-5.4e]:
      List expansions of current parameter on command line
      in the status line and allow sequential selection.
      (New option 'wildmenu' and new command ':emenu'.)
    
      - New option "write":  Diables *all* writing of files (incl ":w!").
      - New register for "last used searchpattern ("/).
      - ":bd" -> jump to last used window. (halleluja!)
      - Mapping for creating a diff window
      - Support for Linux console mouse
        	- Support for GTK GUI
      - X: input method for multi-byte characters.
        Hangul (Korean) Input Mode (and documentation).
      - New commands:
        - "g?" for rotating text in ROT13 (also an operator).
        - "zH" and "zL" to scroll window horizontally by half a page.
        - "gm" move cursor to middle of screen line.
        - Operations on Visual blocks:
          "I", "A", "c", "C", "r", "<" and ">".
      - Startup:  vim called as "ex -" now reads commands
        from stdin and works in silent mode
      - Unix: Included the name of the user that compiled Vim and
        the system name it was compiled on in the version message.
      - GUI: Automated numbering of Syntax menu entries in menu.vim.
      - GUI: Clipboard support when using the mouse in an xterm.
      - GUI (Motif): Popup menu.
    
    Functions
    vim-5.3 now offers "functions" (see ":help :functions").

    VIM now does dishes, too! :-) [980826,990712]
    http://www.multimania.com/phic/vim/vim_putz.html
    http://altern.org/phica/vim/vim_putz.html [old]

    vim-5.2f [980629]
    Extra commands: "gJ" joins lines without adding spaces.
    Regular expressions: You can now use "\d" to abbreviate a digit.
    Example: Searching for 19\d\d should now find (year) numbers like "1963", "1967", and "1994".

    vim-5.0g - "strftime"
    The internal function "strftime" gives the current date and time. This allows to easily insert these data in the cureent buffer without having to use an external command. Example: iab Ydate <C-R>=strftime("%y%m%d")<CR> " Example: 971027 " iab Ytime <C-R>=strftime("%H:%M")<CR> " Example: 14:28 " iab YDT <C-R>=strftime("%y%m%d %T")<CR> " Example: 971027 12:00:00 " iab YDATE <C-R>=strftime("%a %b %d %T %Z %Y")<CR> " Example: Tue Dec 16 12:07:00 CET 1997 "

    Please let me know about *your* favourite new feature. Examples are most welcome!

    Vim Development - Ports

    [990803] One of the goals of Vim is to get it running on almost all systems. If you can help porting Vim to a system then please join us!

    The port to MacOS definitely needs some help. The developers lack a current version of the CodeWarrier compiler, and the testers are just a few.

    But we also get requests now and then for a port to WindowsCE. Here are the volunteers for the port so far:

    	991126 Name???          ahaack@bigfoot.com
            990830 Kenneth Schwartz kens@avs.com
    


    VIM Development - Projects

    Development Projects and the people connected with it. This hopefully makes it easier for you to contact the persons who know about a special part of the Vim Code.

    Thanks to everybody who offered help! :-)

    000722: I have removed the name of someone who apparently received mail from a person who obviously thought that "XY support" means that he is offering support for some special feature. However, this is not true. The people here only *offered* their help at some point. That's all.

    === Code for special features (eg GUI)
    
    Translators for messages (PO files):
    010712	Russian:	Paul S. Romanchenko	vim@justnews.ru
    
    Windows install.exe:
    010712	Jonathon Merz		jmerz42@earthlink.net
    010712	Walter Briscoe		wbriscoe@ponle.demon.co.uk
    
    Folding:
    980918	David C. Jr. Harrsion	dharriso@pigseye.kennesaw.edu (offer)
    
    Vertical split:
    990115	Pjotr Kourzanoff	pjotr@IS.TWI.TUDelft.NL (offer)
    
    === Code for special features (eg GUI) and support for other programs
    
    DDE support:
    	Heiko Erhardt		Heiko.Erhardt@munich.netsurf.de
    
    Developer Studio integration:
    	Chris McKillop		cdmckill@csclub.uwaterloo.ca
    	Paul Moore		Paul.Moore@uk.origin-it.com
    
    GTK+ support:
    981217	Marcin Dalecki		dalecki@cs.net.pl
    981217	Andy Kahn		kahn@zk3.dev.com
    Wished for by:
    980915	Sung-Hyun Nam		namsh@lgic.co.kr
    981110	Mitsuo Tsukamoto	tsuka@alpha.net.ph
    
    Japanese support:
    981129	Marc Espie		Marc.Espie@liafa.jussieu.fr (offer)
    990225	Takuhiro Nishioka	takuhiro@super.win.ne.jp (testing?)
    
    KVim - Vim for KDE
    000921	Thomas Capricelli	capricel@yalbi.com
    	http://aquila.rezel.enst.fr/thomas/vim/
    
    POVRay and LCC's Wedit:
    990123	Bob and Kelly Crispen	crispen@hiwaay.net
    	offered to help integrating Vim as an editor these programs
    
    Spell Checking support:
    980526	Pancrazio `Ezio' de Mauro	pdm@datanord.it
    
    Unicode UTF-8 support:
    980715	Ron Aaron		ron@mossbayeng.com
    
    === Binary Maintenance
    
    990206	Josh Howard		jrh@kashmir.vicor-nb.com
    may provide vim binaries for FreeBSD, ie FreeBSD 2.2.8,
    FreeBSD 3.0-RELEASE and FreeBSD 4.0-CURRENT - with and without X.
    
    === Documentation
    
    Vim and Python:
    Vim and Rebol:
    990225	Timothy Johnson		tjohnson@akcache.com
    
    
    === Operating System Ports
    
    Amiga:
    970911	Michael Nielsen		mni@dde.dk
    	will help developing the GUI
    
    Atari:
    	Jens M. Felderhoff	jmf@infko.uni-koblenz.de
    
    Interix:
    990217	John McMullen		john_mcmullen@interix.com
    	[Intel Interix2.2 Service Pack 1 system]
    	changes to makefile; ctags didn't compile.
    
    Macintosh:
    980123	Dany St-Amant		dany.stamant@sympatico.ca
    	much work on the MacOS port.  Anyone have an up-to-date
    	version of CodeWarrior to help him doing this?
    	(See also the page on Vim on MacOS
    

    VIM Development - Distribution Sites

    Before you can test Vim, you need to get the source, of course.

    See the distribution page for a list of sites that offer Vim.

    The developers versions now reside in the subdirectory unreleased to clearly prevent casual users from using them. Also, for the "unreleased" versions there will be no binaries (esp no binaries for DOS or Windows), so you will have to "roll your own binary". Please do not distribute any binaries of unreleased versions, thankyou!

    Beta versions of Vim can be found on the mirror sites in subdirectory beta-test. Even casual users are asked to test these versions, but you should still bear in mind that it is usually better to use a released version for the serious data - just in case. ;-)


    Back to the -> VIM Pages
    http://www.vim.org/


    Vim Development - Discussion on S-Lang

    S-Lang HomePage
    http://www.s-lang.org/

    http://space.mit.edu/~davis/jed.html)


    Vim Development - Discussion on Speed

    Bram Moolenaar on vim-dev on 990727: Before starting discussions about code size, I would rather hear remarks about real problems. For example, when Vim starts up a bit slow. And then make sure it's not because of your large .vimrc or 'viminfo' setting. [...] Actually, on my own system the main slowdown on startup is cause by viminfo. Especially when there are a lot of file names in it. Some syntax files load a bit slow too. More accurate measurements should be done to pinpoint the real problems (anyone with a good profiler can have a try). I suspect that dynamic loading could actually slowdown Vim startup. For example, if syntax highlighing is dynamically loaded, and you do ":syn on" in your .vimrc, it would require another series of system calls to load the syntax stuff. That is guaranteed to be slower than including the code in the executable.

    Vim Development - Discussion on IDE

    Many users would like to use Vim as their editor with many other programs, most specifically as the editor for composing emails. OutlookExpress, NetscapeMessagenger, NetMail95, Eudora, and Pegasus.

    The workaround

    Vim can access the clipboard which allows the following workaround:


    Vim Development - Discussion on CORBA

    Should Vim add support for CORBA?

    Facts: Open Questions:

    Vim Development - Bram's Statements

    Bram on vim-dev about using X resources within Vim [010314]:
    I know X11 applications are supposed to use resources, but I happen not
    to like them.  I would greatly appreciate putting in some effort to
    avoid having to use them.  A Vim user will be much happier when he can
    do all settings for Vim in his vimrc file, instead of having to learn to
    use resource files (I know I never fully understood them, can you
    imagine what trouble a normal user would run into?).
    
    Using Netscape as an example: I tried adding support for a scroll mouse
    by editing the resource file.  Even with directions from other users
    it's still not working in more than the main window.  Editing that
    _huge_ resource file feels more like programming to me anyway.  I
    wouldn't want to have end users having to understand resource files.
    
    Bram on vim-dev about the suggestion to include a "nice feature" [990308]: > That would be nice as well. '"would be nice" is not a very good reason to include this!' So, folks, please give a few *good* reasons why your favourite feature should be added to Vim. Remember that Vim is supposed to be as small and fast as possible. Adding an internal browser, mailer, newsreader, and a kitchen sink is a job for "that other editor". ;-)


    URL:         http://www.math.fu-berlin.de/~guckes/vim/deve.html
    URL:         http://www.vim.org/deve.html (mirror)
    Created:     Wed Nov  1 00:00:00 MET 1995
    
    Send feedback on this page to
    Sven Guckes guckes@vim.org