123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384 |
- *os_dos.txt* For Vim version 9.0. 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|
- 10. PowerShell |dos-powershell|
- ==============================================================================
- 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 8.2 runtime files in "e:\vim\vim82".
- 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\vim82
- Will find "c:\user\piet\_vimrc" and the runtime files in "e:\vim\vim82".
- See |$VIM| and |$VIMRUNTIME| for more information.
- You can set environment variables for each user separately through the
- System Properties dialog box. The steps to do that:
- 1. Type Windows Key + R to open the "Run" dialog box.
- 2. Enter "sysdm.cpl" and press the "OK" button. The "System Properties"
- dialog box will open.
- 3. Select the "Advanced" tab and press the "Environment Variables..." button.
- The "Environment Variables" dialog box will open.
- 4. Select an existing variable in the "User variables" list and press the
- "Edit..." button to edit it. Or press the "New..." button to add a new
- variable.
- 5. After you finished editing variables, press the "OK" button to save the
- changes.
- ==============================================================================
- 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, if Vim does not recognise a standard Windows shell it 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.
- ==============================================================================
- 10. PowerShell *dos-powershell* *dos-pwsh*
- Vim supports PowerShell Desktop and PowerShell Core. PowerShell Desktop is
- the version of PowerShell that is installed with Windows, while PowerShell
- Core is a separate downloadable version that works cross-platform. To see
- which version you are using then enter the following in a PowerShell prompt -
- $PSVersionTable.PSEdition
- If 'shell' includes "powershell" in the filename at startup then VIM sets
- 'shellcmdflag', 'shellxquote', 'shellpipe', and 'shellredir' options to the
- following values:
- 'shellcmdflag' -Command
- 'shellxquote' "
- 'shellpipe' 2>&1 | Out-File -Encoding default
- 'shellredir' 2>&1 | Out-File -Encoding default
- If 'shell' includes "pwsh" in the filename at startup then VIM sets
- 'shellcmdflag', 'shellxquote', 'shellpipe', and 'shellredir' options to the
- following values:
- 'shellcmdflag' -c
- 'shellxquote' "
- 'shellpipe' >%s 2>&1
- 'shellredir' >%s 2>&1
- If you find that PowerShell commands are taking a long time to run then try
- with "-NoProfile" at the beginning of the 'shellcmdflag'. Note this will
- prevent any PowerShell environment setup by the profile from taking place.
- If you have problems running PowerShell scripts through the 'shell' then try
- with "-ExecutionPolicy RemoteSigned -Command" at the beginning of
- 'shellcmdflag'. See online Windows documentation for more information on
- PowerShell Execution Policy settings.
- See |option-backslash| about including spaces in 'shellcmdflag' when using
- multiple flags.
- The 'shellpipe' and 'shellredir' option values re-encode the UTF-16LE output
- from PowerShell Desktop to your currently configured console codepage. The
- output can be forced into a different encoding by changing "default" to one of
- the following:
- unicode - UTF-16LE (default output from PowerShell 5.1)
- bigendianunicode - UTF-16
- utf8 - UTF-8
- utf7 - UTF-7 (no BOM)
- utf32 - UTF-32
- ascii - 7-bit ASCII character set
- default - System's active code page (typically ANSI)
- oem - System's current OEM code page
- Note The above multi-byte Unicode encodings include a leading BOM unless
- otherwise indicated.
- By default PowerShell Core's output is UTF-8 encoded without a BOM. If you
- want to force the output of PowerShell Core into a different encoding then set
- 'shellredir' and 'shellpipe' to "2>&1 | Out-File -Encoding encoding" where
- encoding is one of the following:
- ascii - 7-bit ASCII character set
- bigendianunicode - UTF-16BE
- bigendianutf32 - UTF-32BE
- oem - System's current OEM code page
- unicode - UTF-16LE
- utf7 - UTF-7
- utf8 - UTF-8
- utf8BOM - UTF-8, with BOM
- utf8NoBOM - UTF-8, no BOM (default output from PowerShell Core)
- utf32 - UTF-32
- Since PowerShell Core 6.2, the Encoding parameter also supports specifying a
- numeric ID of a registered code page (-Encoding 1251) or string names of
- registered code pages (-Encoding "windows-1251"). The .NET documentation for
- Encoding.CodePage has more information
- vim:tw=78:ts=8:noet:ft=help:norl:
|