*os_msdos.txt*  For Vim version 7.4.  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:
