diff options
Diffstat (limited to 'runtime/doc/os_dos.txt')
-rw-r--r-- | runtime/doc/os_dos.txt | 383 |
1 files changed, 383 insertions, 0 deletions
diff --git a/runtime/doc/os_dos.txt b/runtime/doc/os_dos.txt new file mode 100644 index 0000000..e5e405c --- /dev/null +++ b/runtime/doc/os_dos.txt @@ -0,0 +1,383 @@ +*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: |