*os_dos.txt*    For Vim version 7.0d.  Last change: 2006 Mar 30


		  VIM REFERENCE MANUAL    by Bram Moolenaar


							*dos* *DOS*
This file documents the common particularities of the MS-DOS and Win32
versions of Vim.  Also see |os_win32.txt| and |os_msdos.txt|.

1. File locations		|dos-locations|
2. Using backslashes		|dos-backslash|
3. Standard mappings		|dos-standard-mappings|
4. Screen output and colors	|dos-colors|
5. File formats			|dos-file-formats|
6. :cd command			|dos-:cd|
7. Interrupting			|dos-CTRL-Break|
8. Temp files			|dos-temp-files|
9. Shell option default		|dos-shell|

==============================================================================
1. File locations					*dos-locations*

If you keep the Vim executable in the directory that contains the help and
syntax subdirectories, there is no need to do anything special for Vim to
work.  No registry entries or environment variables need to be set.  Just make
sure that the directory is in your search path, or use a shortcut on the
desktop.

Your vimrc files ("_vimrc" and "_gvimrc") are normally located one directory
up from the runtime files.  If you want to put them somewhere else, set the
environment variable $VIM to the directory where you keep them.  Example: >
	set VIM=C:\user\piet
Will find "c:\user\piet\_vimrc".
Note: This would only be needed when the computer is used by several people.
Otherwise it's simpler to keep your _vimrc file in the default place.

If you move the executable to another location, you also need to set the $VIM
environment variable.  The runtime files will be found in "$VIM/vim{version}".
Example: >
	set VIM=E:\vim
Will find the version 5.4 runtime files in "e:\vim\vim54".
Note: This is _not_ recommended.  The preferred way is to keep the executable
in the runtime directory.

If you move your executable AND want to put your "_vimrc" and "_gvimrc" files
somewhere else, you must set $VIM to where you vimrc files are, and set
$VIMRUNTIME to the runtime files.  Example: >
	set VIM=C:\usr\piet
	set VIMRUNTIME=E:\vim\vim54
Will find "c:\user\piet\_vimrc" and the runtime files in "e:\vim\vim54".

See |$VIM| and |$VIMRUNTIME| for more information.

Under Windows 95, you can set $VIM in your C:\autoexec.bat file.  For
example: >
  set VIM=D:\vim
Under Windows NT, you can set environment variables for each user separately
under "Start/Settings/Control Panel->System", or through the properties in the
menu of "My Computer", under the Environment Tab.

==============================================================================
2. Using backslashes					*dos-backslash*

Using backslashes in file names can be a problem.  Vi halves the number of
backslashes for some commands.  Vim is a bit more tolerant and does not remove
backslashes from a file name, so ":e c:\foo\bar" works as expected.  But when
a backslash occurs before a special character (space, comma, backslash, etc.),
Vim removes the backslash.  Use slashes to avoid problems: ":e c:/foo/bar"
works fine.  Vim replaces the slashes with backslashes internally to avoid
problems with some MS-DOS programs and Win32 programs.

When you prefer to use forward slashes, set the 'shellslash' option.  Vim will
then replace backslashes with forward slashes when expanding file names.  This
is especially useful when using a Unix-like 'shell'.

==============================================================================
3. Standard mappings				*dos-standard-mappings*

The mappings for CTRL-PageUp and CTRL-PageDown have been removed, they now
jump to the next or previous tab page |<C-PageUp>| |<C-PageDown>|

If you want them to move to the first and last screen line you can use these
mappings:

key		key code     Normal/Visual mode	    Insert mode ~
CTRL-PageUp	<M-N><M-C-D>	    H		    <C-O>H
CTRL-PageDown	<M-N>v		    L$		    <C-O>L<C-O>$

Additionally, these keys are available for copy/cut/paste.  In the Win32
and DJGPP versions, they also use the clipboard.

Shift-Insert	paste text (from clipboard)			*<S-Insert>*
CTRL-Insert	copy Visual text (to clipboard)			*<C-Insert>*
CTRL-Del	cut Visual text (to clipboard)			*<C-Del>*
Shift-Del	cut Visual text (to clipboard)			*<S-Del>*

These mappings accomplish this (Win32 and DJGPP versions of Vim):

key		key code     Normal	Visual	    Insert ~
Shift-Insert	<M-N><M-T>   "*P	"-d"*P      <C-R><C-O>*
CTRL-Insert	<M-N><M-U>		"*y
Shift-Del	<M-N><M-W>		"*d
CTRL-Del	<M-N><M-X>		"*d

Or these mappings (non-Win32 version of Vim):

key		key code     Normal	Visual	    Insert ~
Shift-Insert	<M-N><M-T>   P		"-dP	    <C-R><C-O>"
CTRL-Insert	<M-N><M-U>		y
Shift-Del	<M-N><M-W>		d
CTRL-Del	<M-N><M-X>		d

When the clipboard is supported, the "* register is used.

==============================================================================
4. Screen output and colors				*dos-colors*

The default output method for the screen is to use bios calls.  This works
right away on most systems.  You do not need ansi.sys.  You can use ":mode" to
set the current screen mode.  See |:mode|.

To change the screen colors that Vim uses, you can use the |:highlight|
command.  The Normal highlight group specifies the colors Vim uses for normal
text.  For example, to get grey text on a blue background: >
	:hi Normal ctermbg=Blue ctermfg=grey
See |highlight-groups| for other groups that are available.

A DOS console does not support attributes like bold and underlining.  You can
set the color used in five modes with nine terminal options.  Note that this
is not necessary since you can set the color directly with the ":highlight"
command; these options are for backward compatibility with older Vim versions.
The |'highlight'| option specifies which of the five modes is used for which
action. >

	:set t_mr=^V^[\|xxm		start of invert mode
	:set t_md=^V^[\|xxm		start of bold mode
	:set t_me=^V^[\|xxm		back to normal text

	:set t_so=^V^[\|xxm		start of standout mode
	:set t_se=^V^[\|xxm		back to normal text

	:set t_us=^V^[\|xxm		start of underline mode
	:set t_ue=^V^[\|xxm		back to normal text

	:set t_ZH=^V^[\|xxm		start of italics mode
	:set t_ZR=^V^[\|xxm		back to normal text

^V is CTRL-V
^[ is <Esc>
You must replace xx with a decimal code, which is the foreground color number
and background color number added together:

COLOR			FOREGROUND	BACKGROUND	~
Black			    0		    0
DarkBlue		    1		   16
DarkGreen		    2		   32
DarkCyan		    3		   48
DarkRed			    4		   64
DarkMagenta		    5		   80
Brown, DarkYellow	    6		   96
LightGray		    7		  112
DarkGray		    8		  128 *
Blue, LightBlue		    9		  144 *
Green, LightGreen	   10		  160 *
Cyan, LightCyan		   11		  176 *
Red, LightRed		   12		  192 *
Magenta, LightMagenta	   13		  208 *
Yellow, LightYellow	   14		  224 *
White			   15		  240 *

* Depending on the display mode, the color codes above 128 may not be
  available, and code 128 will make the text blink.

When you use 0, the color is reset to the one used when you started Vim
(usually 7, lightgray on black, but you can override this.  If you have
overridden the default colors in a command prompt, you may need to adjust
some of the highlight colors in your vimrc---see below).
This is the default for t_me.

The defaults for the various highlight modes are:
	t_mr	112	 reverse mode: Black text (0) on LightGray (112)
	t_md	 15	 bold mode: White text (15) on Black (0)
	t_me	  0	 normal mode (revert to default)

	t_so	 31	 standout mode: White (15) text on DarkBlue (16)
	t_se	  0	 standout mode end (revert to default)

	t_czh	225	 italic mode: DarkBlue text (1) on Yellow (224)
	t_czr	  0	 italic mode end (revert to default)

	t_us	 67	 underline mode: DarkCyan text (3) on DarkRed (64)
	t_ue	  0	 underline mode end (revert to default)

These colors were chosen because they also look good when using an inverted
display, but you can change them to your liking.

Example: >
  :set t_mr=^V^[\|97m	" start of invert mode: DarkBlue (1) on Brown (96)
  :set t_md=^V^[\|67m	" start of bold mode: DarkCyan (3) on DarkRed (64)
  :set t_me=^V^[\|112m	" back to normal mode: Black (0) on LightGray (112)

  :set t_so=^V^[\|37m	" start of standout mode: DarkMagenta (5) on DarkGreen
									(32)
  :set t_se=^V^[\|112m	" back to normal mode: Black (0) on LightGray (112)

==============================================================================
5. File formats						*dos-file-formats*

If the 'fileformat' option is set to "dos" (which is the default), Vim accepts
a single <NL> or a <CR><NL> pair for end-of-line (<EOL>).  When writing a
file, Vim uses <CR><NL>.  Thus, if you edit a file and write it, Vim replaces
<NL> with <CR><NL>.

If the 'fileformat' option is set to "unix", Vim uses a single <NL> for <EOL>
and shows <CR> as ^M.

You can use Vim to replace <NL> with <CR><NL> by reading in any mode and
writing in Dos mode (":se ff=dos").
You can use Vim to replace <CR><NL> with <NL> by reading in Dos mode and
writing in Unix mode (":se ff=unix").

Vim sets 'fileformat' automatically when 'fileformats' is not empty (which is
the default), so you don't really have to worry about what you are doing.
					|'fileformat'| |'fileformats'|

If you want to edit a script file or a binary file, you should set the
'binary' option before loading the file.  Script files and binary files may
contain single <NL> characters which Vim would replace with <CR><NL>.  You can
set 'binary' automatically by starting Vim with the "-b" (binary) option.

==============================================================================
6. :cd command						*dos-:cd*

The ":cd" command recognizes the drive specifier and changes the current
drive.  Use ":cd c:" to make drive C the active drive.  Use ":cd d:\foo" to go
to the directory "foo" in the root of drive D.  Vim also recognizes UNC names
if the system supports them; e.g., ":cd \\server\share\dir".  |:cd|

==============================================================================
7. Interrupting						*dos-CTRL-Break*

Use CTRL-Break instead of CTRL-C to interrupt searches.  Vim does not detect
the CTRL-C until it tries to read a key.

==============================================================================
8. Temp files						*dos-temp-files*

Only for the 16 bit and 32 bit DOS version:
Vim puts temporary files (for filtering) in the first of these directories
that exists and in which Vim can create a file:
	$TMP
	$TEMP
	C:\TMP
	C:\TEMP
	current directory

For the Win32 version (both console and GUI):
Vim uses standard Windows functions to obtain a temporary file name (for
filtering).  The first of these directories that exists and in which Vim can
create a file is used:
	$TMP
	$TEMP
	current directory

==============================================================================
9. Shell option default					*dos-shell*

The default for the 'sh' ('shell') option is "command.com" on Windows 95 and
"cmd.exe" on Windows NT.  If SHELL is defined, Vim uses SHELL instead, and if
SHELL is not defined but COMSPEC is, Vim uses COMSPEC.  Vim starts external
commands with "<shell> /c <command_name>".  Typing CTRL-Z starts a new command
subshell.  Return to Vim with "exit".	|'shell'| |CTRL-Z|

If you are running a third-party shell, you may need to set the
|'shellcmdflag'| ('shcf') and |'shellquote'| ('shq') or |'shellxquote'|
('sxq') options.  Unfortunately, this also depends on the version of Vim used.
For example, with the MKS Korn shell or with bash, the values of the options
should be:

		DOS 16 bit	    DOS 32 bit		Win32  ~
'shellcmdflag'	   -c			-c		 -c
'shellquote'	   "
'shellxquote'						 "

For Dos 16 bit this starts the shell as:
	<shell> -c "command name" >file
For Win32 as:
	<shell> -c "command name >file"
For DOS 32 bit, DJGPP does this internally somehow.

When starting up, Vim checks for the presence of "sh" anywhere in the 'shell'
option.  If it is present, Vim sets the 'shellcmdflag' and 'shellquote' or
'shellxquote' options will be set as described above.

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