Bram Moolenaar | e0720cb | 2017-03-29 13:48:40 +0200 | [diff] [blame] | 1 | *os_win32.txt* For Vim version 8.0. Last change: 2017 Mar 21 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2 | |
| 3 | |
| 4 | VIM REFERENCE MANUAL by George Reilly |
| 5 | |
| 6 | |
| 7 | *win32* *Win32* *MS-Windows* |
| 8 | This file documents the idiosyncrasies of the Win32 version of Vim. |
| 9 | |
Bram Moolenaar | cea912a | 2016-10-12 14:20:24 +0200 | [diff] [blame] | 10 | The Win32 version of Vim works on Windows XP, Vista, 7, 8 and 10. There are |
| 11 | both console and GUI versions. |
Bram Moolenaar | c095b28 | 2010-07-20 22:33:34 +0200 | [diff] [blame] | 12 | |
| 13 | The 32 bit version also runs on 64 bit MS-Windows systems. |
| 14 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 15 | 1. Known problems |win32-problems| |
| 16 | 2. Startup |win32-startup| |
| 17 | 3. Restore screen contents |win32-restore| |
| 18 | 4. Using the mouse |win32-mouse| |
Bram Moolenaar | cea912a | 2016-10-12 14:20:24 +0200 | [diff] [blame] | 19 | 5. Running under Windows 95 |win32-win95| |
| 20 | 6. Running under Windows 3.1 |win32-win3.1| |
| 21 | 7. Win32 mini FAQ |win32-faq| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 22 | |
| 23 | Additionally, there are a number of common Win32 and DOS items: |
| 24 | File locations |dos-locations| |
| 25 | Using backslashes |dos-backslash| |
| 26 | Standard mappings |dos-standard-mappings| |
| 27 | Screen output and colors |dos-colors| |
| 28 | File formats |dos-file-formats| |
| 29 | :cd command |dos-:cd| |
| 30 | Interrupting |dos-CTRL-Break| |
| 31 | Temp files |dos-temp-files| |
| 32 | Shell option default |dos-shell| |
| 33 | |
| 34 | Win32 GUI |gui-w32| |
| 35 | |
| 36 | Credits: |
| 37 | The Win32 version was written by George V. Reilly <george@reilly.org>. |
| 38 | The original Windows NT port was done by Roger Knobbe <RogerK@wonderware.com>. |
| 39 | The GUI version was made by George V. Reilly and Robert Webb. |
| 40 | |
Bram Moolenaar | 442b422 | 2010-05-24 21:34:22 +0200 | [diff] [blame] | 41 | For compiling see "src/INSTALLpc.txt". *win32-compiling* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 42 | |
| 43 | ============================================================================== |
Bram Moolenaar | cea912a | 2016-10-12 14:20:24 +0200 | [diff] [blame] | 44 | 1. Known problems *win32-problems* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 45 | |
| 46 | When doing file name completion, Vim also finds matches for the short file |
| 47 | name. But Vim will still find and use the corresponding long file name. For |
| 48 | example, if you have the long file name "this_is_a_test" with the short file |
| 49 | name "this_i~1", the command ":e *1" will start editing "this_is_a_test". |
| 50 | |
| 51 | ============================================================================== |
| 52 | 2. Startup *win32-startup* |
| 53 | |
| 54 | Current directory *win32-curdir* |
| 55 | |
| 56 | If Vim is started with a single file name argument, and it has a full path |
| 57 | (starts with "x:\"), Vim assumes it was started from the file explorer and |
| 58 | will set the current directory to where that file is. To avoid this when |
| 59 | typing a command to start Vim, use a forward slash instead of a backslash. |
| 60 | Example: > |
| 61 | |
| 62 | vim c:\text\files\foo.txt |
| 63 | |
| 64 | Will change to the "C:\text\files" directory. > |
| 65 | |
| 66 | vim c:/text\files\foo.txt |
| 67 | |
| 68 | Will use the current directory. |
| 69 | |
| 70 | |
| 71 | Term option *win32-term* |
| 72 | |
| 73 | The only kind of terminal type that the Win32 version of Vim understands is |
| 74 | "win32", which is built-in. If you set 'term' to anything else, you will |
| 75 | probably get very strange behavior from Vim. Therefore Vim does not obtain |
| 76 | the default value of 'term' from the environment variable "TERM". |
| 77 | |
Bram Moolenaar | 910f66f | 2006-04-05 20:41:53 +0000 | [diff] [blame] | 78 | $PATH *win32-PATH* |
| 79 | |
| 80 | The directory of the Vim executable is appended to $PATH. This is mostly to |
Bram Moolenaar | b133208 | 2013-10-06 14:22:40 +0200 | [diff] [blame] | 81 | make "!xxd" work, as it is in the Tools menu. And it also means that when |
Bram Moolenaar | 910f66f | 2006-04-05 20:41:53 +0000 | [diff] [blame] | 82 | executable() returns 1 the executable can actually be executed. |
| 83 | |
Bram Moolenaar | 5f148ec | 2016-03-07 22:59:26 +0100 | [diff] [blame] | 84 | Quotes in file names *win32-quotes* |
| 85 | |
| 86 | Quotes inside a file name (or any other command line argument) can be escaped |
| 87 | with a backslash. E.g. > |
| 88 | vim -c "echo 'foo\"bar'" |
| 89 | |
| 90 | Alternatively use three quotes to get one: > |
| 91 | vim -c "echo 'foo"""bar'" |
| 92 | |
| 93 | The quotation rules are: |
| 94 | |
| 95 | 1. A `"` starts quotation. |
| 96 | 2. Another `"` or `""` ends quotation. If the quotation ends with `""`, a `"` |
| 97 | is produced at the end of the quoted string. |
| 98 | |
| 99 | Examples, with [] around an argument: |
| 100 | "foo" -> [foo] |
| 101 | "foo"" -> [foo"] |
| 102 | "foo"bar -> [foobar] |
| 103 | "foo" bar -> [foo], [bar] |
| 104 | "foo""bar -> [foo"bar] |
| 105 | "foo"" bar -> [foo"], [bar] |
| 106 | "foo"""bar" -> [foo"bar] |
| 107 | |
| 108 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 109 | ============================================================================== |
| 110 | 3. Restore screen contents *win32-restore* |
| 111 | |
| 112 | When 'restorescreen' is set (which is the default), Vim will restore the |
| 113 | original contents of the console when exiting or when executing external |
| 114 | commands. If you don't want this, use ":set nors". |'restorescreen'| |
| 115 | |
| 116 | ============================================================================== |
| 117 | 4. Using the mouse *win32-mouse* |
| 118 | |
| 119 | The Win32 version of Vim supports using the mouse. If you have a two-button |
| 120 | mouse, the middle button can be emulated by pressing both left and right |
| 121 | buttons simultaneously - but note that in the Win32 GUI, if you have the right |
| 122 | mouse button pop-up menu enabled (see 'mouse'), you should err on the side of |
| 123 | pressing the left button first. |mouse-using| |
| 124 | |
| 125 | When the mouse doesn't work, try disabling the "Quick Edit Mode" feature of |
| 126 | the console. |
| 127 | |
| 128 | ============================================================================== |
Bram Moolenaar | cea912a | 2016-10-12 14:20:24 +0200 | [diff] [blame] | 129 | 5. Running under Windows 95 *win32-win95* |
| 130 | *windows95* *windows98* *windowsme* |
| 131 | Windows 95/98/ME support was removed in patch 8.0.0029 If you want to use it |
| 132 | you will need to get a version older than that. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 133 | |
Bram Moolenaar | cea912a | 2016-10-12 14:20:24 +0200 | [diff] [blame] | 134 | ============================================================================== |
| 135 | 6. Running under Windows 3.1 *win32-win3.1* |
| 136 | |
| 137 | *win32s* *windows-3.1* *gui-w32s* |
Bram Moolenaar | 6aa8cea | 2017-06-05 14:44:35 +0200 | [diff] [blame] | 138 | There was a special version of gvim that runs under Windows 3.1 and 3.11. |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 139 | Support was removed in patch 7.4.1363. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 140 | |
| 141 | ============================================================================== |
Bram Moolenaar | cea912a | 2016-10-12 14:20:24 +0200 | [diff] [blame] | 142 | 7. Win32 mini FAQ *win32-faq* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 143 | |
| 144 | Q. How do I change the font? |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 145 | A. In the GUI version, you can use the 'guifont' option. Example: > |
| 146 | :set guifont=Lucida_Console:h15:cDEFAULT |
| 147 | < In the console version, you need to set the font of the console itself. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 148 | You cannot do this from within Vim. |
| 149 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 150 | Q. How do I type dead keys on Windows NT? |
| 151 | A. Dead keys work on NT 3.51. Just type them as you would in any other |
| 152 | application. |
| 153 | On NT 4.0, you need to make sure that the default locale (set in the |
| 154 | Keyboard part of the Control Panel) is the same as the currently active |
| 155 | locale. Otherwise the NT code will get confused and crash! This is a NT |
| 156 | 4.0 problem, not really a Vim problem. |
| 157 | |
| 158 | Q. I'm using Vim to edit a symbolically linked file on a Unix NFS file server. |
| 159 | When I write the file, Vim does not "write through" the symlink. Instead, |
| 160 | it deletes the symbolic link and creates a new file in its place. Why? |
| 161 | A. On Unix, Vim is prepared for links (symbolic or hard). A backup copy of |
| 162 | the original file is made and then the original file is overwritten. This |
| 163 | assures that all properties of the file remain the same. On non-Unix |
| 164 | systems, the original file is renamed and a new file is written. Only the |
| 165 | protection bits are set like the original file. However, this doesn't work |
| 166 | properly when working on an NFS-mounted file system where links and other |
| 167 | things exist. The only way to fix this in the current version is not |
| 168 | making a backup file, by ":set nobackup nowritebackup" |'writebackup'| |
| 169 | |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 170 | Q. I'm using Vim to edit a file on a Unix file server through Samba. When I |
| 171 | write the file, the owner of the file is changed. Why? |
| 172 | A. When writing a file Vim renames the original file, this is a backup (in |
| 173 | case writing the file fails halfway). Then the file is written as a new |
| 174 | file. Samba then gives it the default owner for the file system, which may |
| 175 | differ from the original owner. |
| 176 | To avoid this set the 'backupcopy' option to "yes". Vim will then make a |
| 177 | copy of the file for the backup, and overwrite the original file. The |
| 178 | owner isn't changed then. |
| 179 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 180 | Q. How do I get to see the output of ":make" while it's running? |
| 181 | A. Basically what you need is to put a tee program that will copy its input |
| 182 | (the output from make) to both stdout and to the errorfile. You can find a |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 183 | copy of tee (and a number of other GNU tools) at |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 184 | http://gnuwin32.sourceforge.net or http://unxutils.sourceforge.net |
| 185 | Alternatively, try the more recent Cygnus version of the GNU tools at |
| 186 | http://www.cygwin.com Other Unix-style tools for Win32 are listed at |
| 187 | http://directory.google.com/Top/Computers/Software/Operating_Systems/Unix/Win32/ |
| 188 | When you do get a copy of tee, you'll need to add > |
| 189 | :set shellpipe=\|\ tee |
| 190 | < to your _vimrc. |
| 191 | |
| 192 | Q. I'm storing files on a remote machine that works with VisionFS, and files |
| 193 | disappear! |
| 194 | A. VisionFS can't handle certain dot (.) three letter extension file names. |
| 195 | SCO declares this behavior required for backwards compatibility with 16bit |
| 196 | DOS/Windows environments. The two commands below demonstrate the behavior: |
| 197 | > |
| 198 | echo Hello > file.bat~ |
| 199 | dir > file.bat |
| 200 | < |
| 201 | The result is that the "dir" command updates the "file.bat~" file, instead |
Bram Moolenaar | 13fcaaf | 2005-04-15 21:13:42 +0000 | [diff] [blame] | 202 | of creating a new "file.bat" file. This same behavior is exhibited in Vim |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 203 | when editing an existing file named "foo.bat" because the default behavior |
| 204 | of Vim is to create a temporary file with a '~' character appended to the |
| 205 | name. When the file is written, it winds up being deleted. |
| 206 | |
| 207 | Solution: Add this command to your _vimrc file: > |
| 208 | :set backupext=.temporary |
| 209 | |
| 210 | Q. How do I change the blink rate of the cursor? |
| 211 | A. You can't! This is a limitation of the NT console. NT 5.0 is reported to |
| 212 | be able to set the blink rate for all console windows at the same time. |
| 213 | |
| 214 | *:!start* |
Bram Moolenaar | b2964f2 | 2017-03-21 19:29:26 +0100 | [diff] [blame] | 215 | Q. How can I asynchronously run an external command or program, or open a |
| 216 | document or URL with its default program? |
| 217 | A. When using :! to run an external command, you can run it with "start". For |
| 218 | example, to run notepad: > |
| 219 | :!start notepad |
| 220 | < To open "image.jpg" with the default image viewer: > |
| 221 | :!start image.jpg |
| 222 | < To open the folder of the current file in Windows Explorer: > |
| 223 | :!start %:h |
| 224 | < To open the Vim home page with the default browser: > |
| 225 | :!start http://www.vim.org/ |
| 226 | < |
| 227 | Using "start" stops Vim switching to another screen, opening a new console, |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 228 | or waiting for the program to complete; it indicates that you are running a |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 229 | program that does not affect the files you are editing. Programs begun |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 230 | with :!start do not get passed Vim's open file handles, which means they do |
| 231 | not have to be closed before Vim. |
| 232 | To avoid this special treatment, use ":! start". |
Bram Moolenaar | bd8608d | 2011-05-25 17:06:22 +0200 | [diff] [blame] | 233 | There are two optional arguments (see the next Q): |
Bram Moolenaar | 1aeaf8c | 2012-05-18 13:46:39 +0200 | [diff] [blame] | 234 | /min the window will be minimized |
| 235 | /b no console window will be opened |
Bram Moolenaar | 5302d9e | 2011-09-14 17:55:08 +0200 | [diff] [blame] | 236 | You can use only one of these flags at a time. A second one will be |
Bram Moolenaar | bd8608d | 2011-05-25 17:06:22 +0200 | [diff] [blame] | 237 | treated as the start of the command. |
| 238 | |
| 239 | Q. How do I avoid getting a window for programs that I run asynchronously? |
Bram Moolenaar | 5302d9e | 2011-09-14 17:55:08 +0200 | [diff] [blame] | 240 | A. You have two possible solutions depending on what you want: |
Bram Moolenaar | 251e191 | 2011-06-19 05:09:16 +0200 | [diff] [blame] | 241 | 1) You may use the /min flag in order to run program in a minimized state |
| 242 | with no other changes. It will work equally for console and GUI |
| 243 | applications. |
| 244 | 2) You can use the /b flag to run console applications without creating a |
Bram Moolenaar | bd8608d | 2011-05-25 17:06:22 +0200 | [diff] [blame] | 245 | console window for them (GUI applications are not affected). But you |
Bram Moolenaar | 251e191 | 2011-06-19 05:09:16 +0200 | [diff] [blame] | 246 | should use this flag only if the application you run doesn't require any |
| 247 | input. Otherwise it will get an EOF error because its input stream |
Bram Moolenaar | 5302d9e | 2011-09-14 17:55:08 +0200 | [diff] [blame] | 248 | (stdin) would be redirected to \\.\NUL (stdout and stderr too). |
Bram Moolenaar | bd8608d | 2011-05-25 17:06:22 +0200 | [diff] [blame] | 249 | |
| 250 | Example for a console application, run Exuberant ctags: > |
| 251 | :!start /min ctags -R . |
| 252 | < When it has finished you should see file named "tags" in your current |
| 253 | directory. You should notice the window title blinking on your taskbar. |
Bram Moolenaar | 34401cc | 2014-08-29 15:12:19 +0200 | [diff] [blame] | 254 | This is more noticeable for commands that take longer. |
Bram Moolenaar | bd8608d | 2011-05-25 17:06:22 +0200 | [diff] [blame] | 255 | Now delete the "tags" file and run this command: > |
| 256 | :!start /b ctags -R . |
| 257 | < You should have the same "tags" file, but this time there will be no |
| 258 | blinking on the taskbar. |
| 259 | Example for a GUI application: > |
| 260 | :!start /min notepad |
| 261 | :!start /b notepad |
| 262 | < The first command runs notepad minimized and the second one runs it |
| 263 | normally. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 264 | |
Bram Moolenaar | 3a991dd | 2014-10-02 01:41:41 +0200 | [diff] [blame] | 265 | *windows-icon* |
| 266 | Q. I don't like the Vim icon, can I change it? |
| 267 | A. Yes, place your favorite icon in bitmaps/vim.ico in a directory of |
| 268 | 'runtimepath'. For example ~/vimfiles/bitmaps/vim.ico. |
| 269 | |
| 270 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 271 | vim:tw=78:fo=tcq2:ts=8:ft=help:norl: |