Sven [email protected] ©1995-2002

Latest change: Mon Feb 25 06:00:00 MET 2002

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 development 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 binaries with a workaround. However, Vim is still is a "text editor". (if you need a hex editor with vi commands and key bindings then check out "bvi".)

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 comes in two archives - the source archive and the runtime archive. For Vim-5.8 each of these fit onto a single 1.44Mb floppy disk.
1112952 May 31  2001 vim-5.8-src.tar.gz
1266852 May 31  2001 vim-5.8-rt.tar.gz
Now with Vim-6.0 this is no longer true, so each of these archives are available in two parts which again fit onto a floppy:
 1178487 Sep 26 16:48 vim-6.0-rt1.tar.gz
  613167 Sep 26 16:49 vim-6.0-rt2.tar.gz
 1246831 Sep 26 16:50 vim-6.0-src1.tar.gz
  389522 Sep 26 16:51 vim-6.0-src2.tar.gz
But if you do not care about floppies and all then you can get the big all-in-one archive which has been packed with bzip2:
2776551 Sep 26 16:54 vim-6.0.tar.bz2
But once PCs ship with a standard "floppy" disk drive of 100MB Zip drives, we'll overthrow Emacs and take over ze vorld - mu-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:

    Now that Vim-6.0 has shipped [010926] the features Folding and Vertical Split are included. Remote Editing is possible via some script which downloads the file and all.


    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 [email protected]

    vim-5.5 [TODO]
    Still looking for contributions. Please send them to me at [email protected]

    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???          [email protected]
            990830 Kenneth Schwartz [email protected]
    


    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	[email protected]
    Windows install.exe:
    010712	Jonathon Merz		[email protected]
    010712	Walter Briscoe		[email protected]
    Folding:
    980918	David C. Jr. Harrsion	[email protected] (offer)
    Vertical split:
    990115	Pjotr Kourzanoff	[email protected] (offer)
    === Code for special features (eg GUI) and support for other programs
    DDE support:
    	Heiko Erhardt		[email protected]
    Developer Studio integration:
    	Chris McKillop		[email protected]
    	Paul Moore		[email protected]
    GTK+ support:
    981217	Marcin Dalecki		[email protected]
    981217	Andy Kahn		[email protected]
    Wished for by:
    980915	Sung-Hyun Nam		[email protected]
    981110	Mitsuo Tsukamoto	[email protected]
    Japanese support:
    981129	Marc Espie		[email protected] (offer)
    990225	Takuhiro Nishioka	[email protected] (testing?)
    KVim - Vim for KDE
    000921	Thomas Capricelli	[email protected]
    	http://aquila.rezel.enst.fr/thomas/vim/
    POVRay and LCC's Wedit:
    990123	Bob and Kelly Crispen	[email protected]
    	offered to help integrating Vim as an editor these programs
    Spell Checking support:
    980526	Pancrazio `Ezio' de Mauro	[email protected]
    Unicode UTF-8 support:
    980715	Ron Aaron		[email protected]
    === Binary Maintenance
    990206	Josh Howard		[email protected]
    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		[email protected]
    
    === Operating System Ports
    Amiga:
    970911	Michael Nielsen		[email protected]
    	will help developing the GUI
    Atari:
    	Jens M. Felderhoff	[email protected]
    Interix:
    990217	John McMullen		[email protected]
    	[Intel Interix2.2 Service Pack 1 system]
    	changes to makefile; ctags didn't compile.
    Macintosh:
    980123	Dany St-Amant		[email protected]
    	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
    https://www.vim8.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]: &gt; 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:         https://www.vim8.org/deve.html (mirror)
    Created:     Wed Nov  1 00:00:00 MET 1995
    
    Send feedback on this page to
    Sven Guckes [email protected]