*os_dos.txt*    For Vim version 7.4.  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>*
CTRL-X		cut Visual text (to clipboard)

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
CTRL-X		<C-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:
