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. :-)
000412: Latest patches for the developer versions
is now available from the CVS Server.
See the CVS Page for more info.
VIM-6 - Vote for features - results
VIM Development - General Development Anti-Goals
There are some things that Vim does not try to be:
- Vim is not a code beautifier.
- Vim is not a compiler.
- Vim is not a ftp client.
- Vim is not a mailer.
- Vim is not a newsreader.
- Vim is not a print program.
- Vim is not a shell.
- Vim is not a spell checker.
- Vim is not a web browser.
- Vim is not a word processor.
- Vim is not an operating system.
- Vim is not another Emacs.
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:
- Auto-load of Changed Files
- File Locking Improvements
- Folding
- Project Editing
- Remote Editing
- Toolbar
- Vertical Split
- Vi Style Command Line Editing
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 =strftime("%y%m%d")
" Example: 971027
"
iab Ytime =strftime("%H:%M")
" Example: 14:28
"
iab YDT =strftime("%y%m%d %T")
" Example: 971027 12:00:00
"
iab YDATE =strftime("%a %b %d %T %Z %Y")
" 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
PRO S-Lang
-
Rapid prototyping.
New functionality can be implemented using S-Lang first,
and integrated later in C if necessary (speed, "information hiding").
This is easy because S-Lang looks like C.
-
Development speedup.
The development of the current built-in evaluation language can be
sped up as S-Lang gives much more functionality that would have to
be developed step-by-step still.
(Hey, Robert - "arrays"! :-)
-
Functional language.
S-Lang is a functional language which makes it easier for most
non-expert to write additions and/or to make changes to existing code.
It also reduces the amount of time spent for debugging strange expressions.
-
Wealth of Existing code.
S-Lang is already used with several successful program,
most notably with the author's editor
(jed)
and the author's newsreader
slrn;
and the mailer
mutt can make use of it, too.
This means that a wide range of users can make use of the already
existing wealth of functions that have already been written for Slang.
-
Import/export.
S-Lang can be used in both directions: the first is to export the
functionality of VIM (eg. Get/SetCursorPosition, inserting of
character or strings, setting of the fore- and background colours) to
be used in scripts. The other one is the use of "hooks" which are
called for certain events (eg. for opening/closing a file, in case of
errors). This allows for a very flexible approach to some kind of
"event handling" mechanisms which can be put to use with syntax coloring.
-
Easy integration.
S-Lang is very easy to integrate. The basic inclusion of the
interpreter is about 5 lines of code. The size of the whole
interpreter library (slang.lib) for the windows95 Watcom 10.6 compiler
is 240K. The export of VIM internal functions can be an evolutionary
process.
-
Byte-compiler = fast startup.
S-Lang code can be byte-compiled. This speeds up the loading process
of the functions. In addition, functions which are not neccesary during
the startup of VIM can be registered to be loaded later
(this is actually done automatically by the S-Lang interpreter).
-
Creation of a "VIM library".
Functions can be put into modules which a user can choose from. It is
even possible in the next version of S-Lang to load binaries (= DLL's,
modules) during runtime to enhance VIM.
Examples are an pop3/imap mail interface for reading, writing and managing
mails, or even CORBA to interface VIM with other CORBA-aware applications.
-
Support for DOS, Windows, OS/2, and BeOS (MacOS is in the works).
S-Lang has been ported to Windows with the exception of a few bios
interrupts that Windows doesn't allow, a DOS dpmi app is perfectly
happy running as a Windows console app, or a DOS box.
From the S-Lang site at
ftp://space.mit.edu/pub/davis/slang/README
"S-Lang has been successfully compiled and tested on many platforms and OSs
(Unix/VMS/PC-MSDOS/OS2). Building the S-Lang library requires a C compiler
that understands function prototypes. On SunOS, you will need gcc."
-
Text dialogs and menus.
Dialogs and menus on terminals is what many users want.
CONTRA S-Lang
-
Do we really need another scripting language?
-
Implementation of new features in S-Lang might be sufficient for most
people, thus hampering the implementation of solutions within C.
-
By moving the implementation of functionality to a scripting language
and allowing everybody to exchange functional modules there is no
"central authority" for releasing the one true version of VIM, right?
-
Someone has to work in the hooks for S-Lang into the code.
- 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:
- Select the message with the mouse.
- Copy the selected text to the clipboard (CTRL-C).
- Make sure that the option "guiclipboard" contains the flag 'a':
:set go+=a
- Import the text from the clipboard using the register '*', ie
paste it into the current buffer with the command "*p.
- Edit the text.
- Copy the edited text into the clipboard, eg with :%"*y.
(untested)
- Use CTRL-V to paste the text from the clipboard into the application.
Vim Development - Discussion on CORBA
Should Vim add support for CORBA?
PRO CORBA
- Integration with other programs as an editor-of-choice.
CONTRA CORBA
- Yet more code. -> Bloat!
- Let other programs add the support to specify an editor-of-coice.
- Focus on code for "terminal editing" - not on support for other programs.
- The CORBA FAQ says that
"Some applications, such as word processing,
might not benefit from distribution at all."
- Requires specification of CORBA interface.
- Requires to split Vim into components -
and splitting away the syntax coloring is very difficult.
Each component then has to work before you can use it.
break one component and you'll lose everything on top of it.
Separating Vim into components also means that you need to copy
every component along to make it work.
Forget about the "Vim fits on a floppy" then.
- Definition of interfaces often change which makes Vim more dependant
to these changes. More work will then have to be put on those.
- You use CORBA when the components are spread acorss the network -
does anyone want to "spread Vim's parts" around?
- Components are no guarantee that the resulting programs are small
(see Micro$soft Office).
- There is no standard for "editor" components so far, anyway.
Facts:
- Creation of a Vim ORB is required to allow Vim as an object for their
applications.
Open Questions:
- Vim+CORBAR requires Vim to become an ORB. Code for this costs money.
Will Vim then be freely available still?
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: 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]