*os_msdos.txt*  For Vim version 7.0aa.  Last change: 2005 Mar 29


		  VIM REFERENCE MANUAL    by Bram Moolenaar


					*msdos* *ms-dos* *MSDOS* *MS-DOS*
This file contains the particularities for the MS-DOS version of Vim.

1. Two versions for MS-DOS	|msdos-versions|
2. Known problems		|msdos-problems|
3. Long file names		|msdos-longfname|
4. Termcap codes		|msdos-termcap|
5. Shifted arrow keys		|msdos-arrows|
6. Filename extensions		|msdos-fname-extensions|
7. Memory usage and limitations	|msdos-limitations|
8. Symbolically linked files	|msdos-linked-files|
9. Copy/paste in a dos box	|msdos-copy-paste|

Additionally, there are a number of common Win32 and DOS items:
File locations			|dos-locations|
Using backslashes		|dos-backslash|
Standard mappings		|dos-standard-mappings|
Screen output and colors	|dos-colors|
File formats			|dos-file-formats|
:cd command			|dos-:cd|
Interrupting			|dos-CTRL-Break|
Temp files			|dos-temp-files|
Shell option default		|dos-shell|

For compiling Vim see src/INSTALL.pc.			*msdos-compiling*

==============================================================================
1. Two versions for MS-DOS				*msdos-versions*

There are two versions of Vim that can be used with MS-DOS machines:

							*dos16*
Dos16 version	Can be used on any MS-DOS system, only uses up to 640 Kbyte of
		memory.  Also runs on OS/2, Windows 95, and NT.  Excludes some
		Vim-specific features (autocommands, syntax highlighting,
		etc.).  Recommended for use on pre-386 machines.
							*dos32*
Dos32 version	Requires 386 processor and a |DPMI| driver, uses all
		available memory.  Supports long file names and the Windows
		clipboard, but NOT on Windows NT.  Recommended for MS-DOS,
		Windows 3.1 and Windows 95.

There are also two versions that run under Windows:
Win32 version   Requires Windows 95 or Windows NT, uses all available
		memory, supports long file names, etc.  Has some problems on
		Windows 95.  Recommended for Windows NT.  See |os_win32.txt|
Win32 GUI	Requirements like the Win32 version, but runs in its own
		window, instead of a console.  Has scrollbars, menu, etc.
		Recommended for Windows 95 and Windows NT.  See |gui-w32|.

It is recommended to use the Dos32 or Win32 version.  Although the Dos16
version is able to edit very big files, it quickly runs out of memory when
making big changes.  Disabling undo helps: ":set ul=-1".  The screen updating
of the Dos16 version is the fastest of the three on DOS or Windows 95; on
Windows NT, the Win32 version is just as fast.

								*DPMI*
For the Dos32 version, you may need a DPMI driver when running in MS-DOS.  If
you are running Windows or installed a clever memory manager, it will probably
work already.  If you get the message "No DPMI", you need to install a DPMI
driver.  Such a driver is included with the executable in CSDPMI4B.ZIP.  Run
"cwsdpmi" just before starting Vim each time.  Or you might want to include
"cwsdpmi -p" in your autoexec.bat to make it resident.  The latest version of
"CSDPMI*.ZIP" can be obtained from: "ftp.neosoft.com:pub/users/s/sandmann".

							*minimal-features*
The 16 bit DOS version has been compiled with minimal features.  Check the
|+feature-list| which ones are included (marked with a "T").
You can include more features by editing feature.h and recompiling.

==============================================================================
2. Known problems					*msdos-problems*

When using smartdrive (MS-DOS 6.x) with write-behind caching, it is possible
that Vim will try to create a swap file on a read-only file system (e.g.
write protected floppy).  You will then be given the message >
	A serious disk error has occurred .., Retry (r)?
There is nothing you can do but unprotect the floppy or switch off the
computer.  Even CTRL-ALT-DEL will not get you out of this.  This is really a
problem of smartdrive, not Vim.  Smartdrive works fine otherwise.  If this
bothers you, don't use the write-behind caching.

Vim can't read swap files that have been opened already, unless the "share"
command has been used.  If you see stray warnings for existing swap files,
include the "share" command in your config.sys or autoexec.bat (see your MSDOS
documentation).

The Dos16 version can only have about 10 files open (in a window or hidden) at
one time.  With more files you will get error messages when trying to read or
write a file, and for filter commands.  Or Vim runs out of memory, and random
problems may result.

The Dos32 version cannot have an unlimited number of files open at any one
time.  The limit depends on the setting of FILES in your CONFIG.SYS.  This
defaults to 15; if you need to edit a lot of files, you should increase this.
If you do not set FILES high enough, you can get strange errors, and shell
commands may cause a crash!

The Dos32 version can work with long file names.  When doing file name
completion, matches for the short file name will also be found.  But this will
result in the corresponding long file name.  For example, if you have the long
file name "this_is_a_test" with the short file name "this_i~1", the command
":e *1" will start editing "this_is_a_test".

When using the Dos32 version and you run into problems with DPMI support,
check if there is a program in your config.sys that eats resources.  One
program known to cause this problem is "netx", which says "NetWare v. 3.26
Workstation shell".  Replace it with version 3.32 to fix the problem.

The Dos32 version will parse its arguments to handle quotation.  This is good
to edit a file with spaces in its name, for example: >
	vim "program files\accessories\ppp.scp"
A side effect is that single quotes are removed.  Insert a backslash to avoid
that.  For example, to edit the file "fi'le.txt": >
	vim fi\'le.txt

==============================================================================
3. Long file names					*msdos-longfname*

If the Dos32 version is run on Windows 95, it can use long file names.  It
will work by default.  If you want to disable this, use this setting:
	set LFN=N
You can put this in your autoexec.bat file.

Note: If you have installed DJGPP on your machine, you probably have a
"djgpp.env" file, which contains "LFN=n".  You need to use "LFN=Y" to switch
on using long file names then.

==============================================================================
4. Termcap codes					*msdos-termcap*

If you want to use another output method (e.g., when using a terminal on a COM
port), set the terminal name to "pcansi".  You can change the termcap options
when needed (see |terminal-options|).  Note that the
normal IBM ansi.sys does not support all the codes of the builtin pcansi
terminal.  If you use ansi.sys, you will need to delete the termcap entries
t_al and t_dl with >
   :set t_al= t_dl=
Otherwise, the screen will not be updated correctly.  It is better to use
nansi.sys, nnansi.sys, or the like instead of ansi.sys.

If you want to use Vim on a terminal connected to a COM: port, reset the
'bioskey' option.  Otherwise the commands will be read from the PC keyboard.
CTRL-C and CTRL-P may not work correctly with 'bioskey' reset.

==============================================================================
5. Shifted arrow keys					*msdos-arrows*

Use CTRL-arrow-left and CTRL-arrow-right instead of SHIFT-arrow-left and
SHIFT-arrow-right.  The arrow-up and arrow-down cannot be used with SHIFT or
CTRL.

==============================================================================
6. Filename extensions				*msdos-fname-extensions*

MS-DOS allows for only one file name extension.  Therefore, when appending an
extension, the '.' in the original file name is replaced with a '_', the name
is truncated to 8 characters, and the new extension (e.g., ".swp") is
appended.  Two examples: "test.c" becomes "test_c.bak", "thisisat.est"
becomes "thisisat.bak".  To reduce these problems, the default for
'backupext' is "~" instead of ".bak".  The backup file for "thisisat.est"
then becomes "thisisat.es~".  The 'shortname' option is not available,
because it would always be set.

==============================================================================
7. Memory usage and limitations			*msdos-limitations*

A swap file is used to store most of the text.  You should be able to edit
very large files.  However, memory is used for undo and other things.  If you
delete a lot of text, you can still run out of memory in the Dos16 version.

If Vim gives an "Out of memory" warning, you should stop editing.  The result
of further editing actions is unpredictable.  Setting 'undolevels' to 0 saves
some memory.  Running the maze macros on a big maze is guaranteed to run out
of memory, because each change is remembered for undo.  In this case set
'undolevels' to a negative number.  This will switch off undo completely.

						*msdos-clipboard-limits*
In the Dos32 version, extended memory is used to avoid these problems.
However, if you are using the clipboard, you can still run into memory
limitations because the Windows clipboard can only communicate with Vim using
Dos memory.  This means that the largest amount of text that can be sent to
or received from the Windows clipboard is limited by how much free Dos memory
is available on your system.

You can usually maximize the amount of available Dos memory by adding the
following lines to Dos's "config.sys" file: >

	DOS=HIGH,UMB
	DEVICE=C:\WINDOWS\himem.sys
	DEVICE=C:\WINDOWS\emm386.exe RAM

Modifying config.sys in this way will also help to make more memory available
for the Dos16 version, if you are using that.

In the Dos16 version the line length is limited to about 32000 characters.
When reading a file the lines are automatically split.  But editing a line
in such a way that it becomes too long may give unexpected results.

==============================================================================
8. Symbolically linked files			*msdos-linked-files*

When using Vim to edit a symbolically linked file on a unix NFS file server,
you may run into problems.  When writing the file, Vim does not "write
through" the symlink.  Instead, it deletes the symbolic link and creates a new
file in its place.

On Unix, Vim is prepared for links (symbolic or hard).  A backup copy of the
original file is made and then the original file is overwritten.  This assures
that all properties of the file remain the same.  On non-Unix systems, the
original file is renamed and a new file is written.  Only the protection bits
are set like the original file.  However, this doesn't work properly when
working on an NFS-mounted file system where links and other things exist.  The
only way to fix this in the current version is not making a backup file, by
":set nobackup nowritebackup"	|'writebackup'|

A similar problem occurs when mounting a Unix filesystem through Samba or a
similar system.  When Vim creates a new file it will get the default user ID
for the mounted file system.  This may be different from the original user ID.
To avoid this set the 'backupcopy' option to "yes".

==============================================================================
9. Copy/paste in a dos box			*msdos-copy-paste*

					*E450* *E451* *E452* *E453* *E454*
The 32 bit version can copy/paste from/to the Windows clipboard directly.  Use
the "* register.  Large amounts of text can be copied this way, but it must be
possible to allocate memory for it, see |msdos-clipboard-limits|.  When moving
text from one Vim to another, the type of the selection
(characterwise/linewise/blockwise) is passed on.

In other versions, the following can be used.

(posted to comp.editors by John Velman <velman@igate1.hac.com>)

How to copy/paste text from/to vim in a dos box:

1) To get VIM to run in a window, instead of full screen, press alt+enter.
   This toggles back and forth between full screen and a dos window.
   NOTE: In Windows 95 you must have the property "Fast Pasting" unchecked!
   In the properties dialog box for the MS-DOS window, go to "MS-DOS
   Prompt/Misc/Fast pasting" and make sure that it is NOT checked.
   To make this permanent, change the properties for
   "\windows\system\conagent.exe" (from Philip Nelson, unverified).

2) To paste something _into_ Vim, put Vim in insert mode.

3) Put the text you want to paste on the windows clipboard.

4) Click the control box in the upper left of the Vim window.  (This looks
   like a big minus sign.)  If you don't want to use the mouse, you can get
   this with alt+spacebar.
5) On the resulting dropdown menu choose "Edit".
6) On the child dropdown menu choose "Paste".

To copy something from the Vim window to the clipboard,

1) Select the control box to get the control drop down menu.
2) Select "Edit".
3) Select "Mark".
4) Using either the keys or the mouse, select the part of the Vim window that
   you want to copy.  To use the keys, use the arrow keys, and hold down shift
   to extend the selection.
5) When you've completed your selection, press 'enter'.  The selection
   is now in the windows clipboard.  By the way, this can be any
   rectangular selection, for example columns 4-25 in rows 7-10.  It can
   include anything in the VIM window: the output of a :!dir, for
   example.

 vim:tw=78:ts=8:ft=help:norl:
