Bram Moolenaar | eb49041 | 2022-06-28 13:44:46 +0100 | [diff] [blame] | 1 | *os_win32.txt* For Vim version 9.0. Last change: 2022 May 24 |
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 | cfa8f9a | 2022-06-03 21:59:47 +0100 | [diff] [blame] | 10 | The Win32 version of Vim works on Windows XP, Vista, 7, 8, 10 and 11. There are |
Bram Moolenaar | cea912a | 2016-10-12 14:20:24 +0200 | [diff] [blame] | 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| |
Christian Brabandt | 7d60384 | 2021-07-24 21:19:42 +0200 | [diff] [blame] | 21 | 7. Installation package |win32-installer| |
| 22 | 8. Win32 mini FAQ |win32-faq| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 23 | |
| 24 | Additionally, there are a number of common Win32 and DOS items: |
| 25 | File locations |dos-locations| |
| 26 | Using backslashes |dos-backslash| |
| 27 | Standard mappings |dos-standard-mappings| |
| 28 | Screen output and colors |dos-colors| |
| 29 | File formats |dos-file-formats| |
| 30 | :cd command |dos-:cd| |
| 31 | Interrupting |dos-CTRL-Break| |
| 32 | Temp files |dos-temp-files| |
| 33 | Shell option default |dos-shell| |
Mike Williams | a3d1b29 | 2021-06-30 20:56:00 +0200 | [diff] [blame] | 34 | PowerShell defaults |dos-powershell| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 35 | |
| 36 | Win32 GUI |gui-w32| |
| 37 | |
| 38 | Credits: |
| 39 | The Win32 version was written by George V. Reilly <george@reilly.org>. |
| 40 | The original Windows NT port was done by Roger Knobbe <RogerK@wonderware.com>. |
| 41 | The GUI version was made by George V. Reilly and Robert Webb. |
| 42 | |
Bram Moolenaar | 442b422 | 2010-05-24 21:34:22 +0200 | [diff] [blame] | 43 | For compiling see "src/INSTALLpc.txt". *win32-compiling* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 44 | |
Bram Moolenaar | 835ee98 | 2022-05-22 14:50:16 +0100 | [diff] [blame] | 45 | *WSL* |
| 46 | When using Vim on WSL (Windows Subsystem for Linux) the remarks here do not |
| 47 | apply, `has('win32')` will return false then. In case you need to know |
| 48 | whether Vim is running on WSL you can use `exists('$WSLENV')`. |
| 49 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 50 | ============================================================================== |
Bram Moolenaar | cea912a | 2016-10-12 14:20:24 +0200 | [diff] [blame] | 51 | 1. Known problems *win32-problems* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 52 | |
| 53 | When doing file name completion, Vim also finds matches for the short file |
| 54 | name. But Vim will still find and use the corresponding long file name. For |
| 55 | example, if you have the long file name "this_is_a_test" with the short file |
| 56 | name "this_i~1", the command ":e *1" will start editing "this_is_a_test". |
| 57 | |
| 58 | ============================================================================== |
| 59 | 2. Startup *win32-startup* |
| 60 | |
| 61 | Current directory *win32-curdir* |
| 62 | |
| 63 | If Vim is started with a single file name argument, and it has a full path |
| 64 | (starts with "x:\"), Vim assumes it was started from the file explorer and |
| 65 | will set the current directory to where that file is. To avoid this when |
| 66 | typing a command to start Vim, use a forward slash instead of a backslash. |
| 67 | Example: > |
| 68 | |
| 69 | vim c:\text\files\foo.txt |
| 70 | |
| 71 | Will change to the "C:\text\files" directory. > |
| 72 | |
| 73 | vim c:/text\files\foo.txt |
| 74 | |
| 75 | Will use the current directory. |
| 76 | |
| 77 | |
| 78 | Term option *win32-term* |
| 79 | |
| 80 | The only kind of terminal type that the Win32 version of Vim understands is |
| 81 | "win32", which is built-in. If you set 'term' to anything else, you will |
| 82 | probably get very strange behavior from Vim. Therefore Vim does not obtain |
| 83 | the default value of 'term' from the environment variable "TERM". |
| 84 | |
Bram Moolenaar | 910f66f | 2006-04-05 20:41:53 +0000 | [diff] [blame] | 85 | $PATH *win32-PATH* |
| 86 | |
| 87 | 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] | 88 | 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] | 89 | executable() returns 1 the executable can actually be executed. |
| 90 | |
Bram Moolenaar | 01164a6 | 2017-11-02 22:58:42 +0100 | [diff] [blame] | 91 | Command line arguments *win32-cmdargs* |
Bram Moolenaar | 5f148ec | 2016-03-07 22:59:26 +0100 | [diff] [blame] | 92 | |
Bram Moolenaar | 130cbfc | 2021-04-07 21:07:20 +0200 | [diff] [blame] | 93 | Analysis of a command line into parameters is not standardised in MS-Windows. |
Bram Moolenaar | 01164a6 | 2017-11-02 22:58:42 +0100 | [diff] [blame] | 94 | Vim and gvim used to use different logic to parse it (before 7.4.432), and the |
| 95 | logic was also depended on what it was compiled with. Now Vim and gvim both |
| 96 | use the CommandLineToArgvW() Win32 API, so they behave in the same way. |
| 97 | |
| 98 | The basic rules are: *win32-backslashes* |
| 99 | a) A parameter is a sequence of graphic characters. |
| 100 | b) Parameters are separated by white space. |
| 101 | c) A parameter can be enclosed in double quotes to include white space. |
| 102 | d) A sequence of zero or more backslashes (\) and a double quote (") |
| 103 | is special. The effective number of backslashes is halved, rounded |
| 104 | down. An even number of backslashes reverses the acceptability of |
| 105 | spaces and tabs, an odd number of backslashes produces a literal |
| 106 | double quote. |
| 107 | |
| 108 | So: |
| 109 | " is a special double quote |
| 110 | \" is a literal double quote |
| 111 | \\" is a literal backslash and a special double quote |
| 112 | \\\" is a literal backslash and a literal double quote |
| 113 | \\\\" is 2 literal backslashes and a special double quote |
| 114 | \\\\\" is 2 literal backslashes and a literal double quote |
| 115 | etc. |
| 116 | |
| 117 | Example: > |
| 118 | vim "C:\My Music\freude" +"set ignorecase" +/"\"foo\\" +\"bar\\\" |
| 119 | |
| 120 | opens "C:\My Music\freude" and executes the line mode commands: > |
| 121 | set ignorecase; /"foo\ and /bar\" |
| 122 | |
| 123 | These rules are also described in the reference of the CommandLineToArgvW API: |
| 124 | https://msdn.microsoft.com/en-us/library/windows/desktop/bb776391.aspx |
| 125 | |
| 126 | *win32-quotes* |
| 127 | There are additional rules for quotes (which are not well documented). |
| 128 | As described above, quotes inside a file name (or any other command line |
| 129 | argument) can be escaped with a backslash. E.g. > |
Bram Moolenaar | 5f148ec | 2016-03-07 22:59:26 +0100 | [diff] [blame] | 130 | vim -c "echo 'foo\"bar'" |
| 131 | |
| 132 | Alternatively use three quotes to get one: > |
| 133 | vim -c "echo 'foo"""bar'" |
| 134 | |
| 135 | The quotation rules are: |
| 136 | |
| 137 | 1. A `"` starts quotation. |
| 138 | 2. Another `"` or `""` ends quotation. If the quotation ends with `""`, a `"` |
| 139 | is produced at the end of the quoted string. |
| 140 | |
| 141 | Examples, with [] around an argument: |
| 142 | "foo" -> [foo] |
| 143 | "foo"" -> [foo"] |
| 144 | "foo"bar -> [foobar] |
| 145 | "foo" bar -> [foo], [bar] |
| 146 | "foo""bar -> [foo"bar] |
| 147 | "foo"" bar -> [foo"], [bar] |
| 148 | "foo"""bar" -> [foo"bar] |
| 149 | |
| 150 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 151 | ============================================================================== |
| 152 | 3. Restore screen contents *win32-restore* |
| 153 | |
| 154 | When 'restorescreen' is set (which is the default), Vim will restore the |
| 155 | original contents of the console when exiting or when executing external |
| 156 | commands. If you don't want this, use ":set nors". |'restorescreen'| |
| 157 | |
| 158 | ============================================================================== |
| 159 | 4. Using the mouse *win32-mouse* |
| 160 | |
| 161 | The Win32 version of Vim supports using the mouse. If you have a two-button |
| 162 | mouse, the middle button can be emulated by pressing both left and right |
| 163 | buttons simultaneously - but note that in the Win32 GUI, if you have the right |
| 164 | mouse button pop-up menu enabled (see 'mouse'), you should err on the side of |
| 165 | pressing the left button first. |mouse-using| |
| 166 | |
| 167 | When the mouse doesn't work, try disabling the "Quick Edit Mode" feature of |
| 168 | the console. |
| 169 | |
| 170 | ============================================================================== |
Bram Moolenaar | cea912a | 2016-10-12 14:20:24 +0200 | [diff] [blame] | 171 | 5. Running under Windows 95 *win32-win95* |
| 172 | *windows95* *windows98* *windowsme* |
| 173 | Windows 95/98/ME support was removed in patch 8.0.0029 If you want to use it |
| 174 | you will need to get a version older than that. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 175 | |
Bram Moolenaar | cea912a | 2016-10-12 14:20:24 +0200 | [diff] [blame] | 176 | ============================================================================== |
| 177 | 6. Running under Windows 3.1 *win32-win3.1* |
| 178 | |
Bram Moolenaar | d2f3a8b | 2018-06-19 14:35:59 +0200 | [diff] [blame] | 179 | *win32s* *windows-3.1* *gui-w32s* *win16* |
Bram Moolenaar | 6aa8cea | 2017-06-05 14:44:35 +0200 | [diff] [blame] | 180 | There was a special version of gvim that runs under Windows 3.1 and 3.11. |
Bram Moolenaar | f2a44e5 | 2020-01-16 19:40:38 +0100 | [diff] [blame] | 181 | Support was removed in patch 7.4.1364. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 182 | |
| 183 | ============================================================================== |
Christian Brabandt | 7d60384 | 2021-07-24 21:19:42 +0200 | [diff] [blame] | 184 | 7. Installation package *win32-installer* |
| 185 | |
| 186 | A simple installer for windows is available at http://www.vim.org/download.php |
| 187 | (stable version) and nightly builds are also available at |
| 188 | https://github.com/vim/vim-win32-installer/releases/ |
| 189 | |
| 190 | The nightly builds include 32bit and 64bit builds, have most features enabled |
| 191 | and usually also contain an extra cryptographic signed installer, so Windows |
| 192 | will not complain. |
| 193 | |
| 194 | To use the installer, simply run the exe file. The following switches are |
| 195 | also supported: > |
| 196 | |
| 197 | gvim_<version>.exe /S -> silent install without any dialogues |
| 198 | gvim_<version>.exe /D=C:\vim -> Install into directory c:\vim |
| 199 | -> /D must be the last argument |
| 200 | gvim_<version>.exe /S /D=c:\vim -> silent install into c:\vim |
| 201 | < |
| 202 | The default installation directory can alternatively be given by setting the |
| 203 | $VIM environment variable. |
| 204 | |
| 205 | ============================================================================== |
| 206 | 8. Win32 mini FAQ *win32-faq* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 207 | |
| 208 | Q. How do I change the font? |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 209 | A. In the GUI version, you can use the 'guifont' option. Example: > |
| 210 | :set guifont=Lucida_Console:h15:cDEFAULT |
| 211 | < 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] | 212 | You cannot do this from within Vim. |
| 213 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 214 | Q. How do I type dead keys on Windows NT? |
| 215 | A. Dead keys work on NT 3.51. Just type them as you would in any other |
| 216 | application. |
| 217 | On NT 4.0, you need to make sure that the default locale (set in the |
| 218 | Keyboard part of the Control Panel) is the same as the currently active |
| 219 | locale. Otherwise the NT code will get confused and crash! This is a NT |
| 220 | 4.0 problem, not really a Vim problem. |
| 221 | |
| 222 | Q. I'm using Vim to edit a symbolically linked file on a Unix NFS file server. |
| 223 | When I write the file, Vim does not "write through" the symlink. Instead, |
| 224 | it deletes the symbolic link and creates a new file in its place. Why? |
| 225 | A. On Unix, Vim is prepared for links (symbolic or hard). A backup copy of |
| 226 | the original file is made and then the original file is overwritten. This |
| 227 | assures that all properties of the file remain the same. On non-Unix |
| 228 | systems, the original file is renamed and a new file is written. Only the |
| 229 | protection bits are set like the original file. However, this doesn't work |
| 230 | properly when working on an NFS-mounted file system where links and other |
| 231 | things exist. The only way to fix this in the current version is not |
| 232 | making a backup file, by ":set nobackup nowritebackup" |'writebackup'| |
| 233 | |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 234 | Q. I'm using Vim to edit a file on a Unix file server through Samba. When I |
| 235 | write the file, the owner of the file is changed. Why? |
| 236 | A. When writing a file Vim renames the original file, this is a backup (in |
| 237 | case writing the file fails halfway). Then the file is written as a new |
| 238 | file. Samba then gives it the default owner for the file system, which may |
| 239 | differ from the original owner. |
| 240 | To avoid this set the 'backupcopy' option to "yes". Vim will then make a |
| 241 | copy of the file for the backup, and overwrite the original file. The |
| 242 | owner isn't changed then. |
| 243 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 244 | Q. How do I get to see the output of ":make" while it's running? |
| 245 | A. Basically what you need is to put a tee program that will copy its input |
| 246 | (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] | 247 | copy of tee (and a number of other GNU tools) at |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 248 | http://gnuwin32.sourceforge.net or http://unxutils.sourceforge.net |
| 249 | Alternatively, try the more recent Cygnus version of the GNU tools at |
| 250 | http://www.cygwin.com Other Unix-style tools for Win32 are listed at |
| 251 | http://directory.google.com/Top/Computers/Software/Operating_Systems/Unix/Win32/ |
| 252 | When you do get a copy of tee, you'll need to add > |
| 253 | :set shellpipe=\|\ tee |
| 254 | < to your _vimrc. |
| 255 | |
| 256 | Q. I'm storing files on a remote machine that works with VisionFS, and files |
| 257 | disappear! |
| 258 | A. VisionFS can't handle certain dot (.) three letter extension file names. |
| 259 | SCO declares this behavior required for backwards compatibility with 16bit |
| 260 | DOS/Windows environments. The two commands below demonstrate the behavior: |
| 261 | > |
Bram Moolenaar | 7ceefb3 | 2020-05-01 16:07:38 +0200 | [diff] [blame] | 262 | echo Hello > file.bat~ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 263 | dir > file.bat |
| 264 | < |
| 265 | 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] | 266 | 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] | 267 | when editing an existing file named "foo.bat" because the default behavior |
| 268 | of Vim is to create a temporary file with a '~' character appended to the |
| 269 | name. When the file is written, it winds up being deleted. |
| 270 | |
| 271 | Solution: Add this command to your _vimrc file: > |
| 272 | :set backupext=.temporary |
| 273 | |
| 274 | Q. How do I change the blink rate of the cursor? |
| 275 | A. You can't! This is a limitation of the NT console. NT 5.0 is reported to |
| 276 | be able to set the blink rate for all console windows at the same time. |
| 277 | |
| 278 | *:!start* |
Bram Moolenaar | b2964f2 | 2017-03-21 19:29:26 +0100 | [diff] [blame] | 279 | Q. How can I asynchronously run an external command or program, or open a |
| 280 | document or URL with its default program? |
| 281 | A. When using :! to run an external command, you can run it with "start". For |
| 282 | example, to run notepad: > |
| 283 | :!start notepad |
| 284 | < To open "image.jpg" with the default image viewer: > |
| 285 | :!start image.jpg |
| 286 | < To open the folder of the current file in Windows Explorer: > |
| 287 | :!start %:h |
| 288 | < To open the Vim home page with the default browser: > |
| 289 | :!start http://www.vim.org/ |
| 290 | < |
| 291 | Using "start" stops Vim switching to another screen, opening a new console, |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 292 | 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] | 293 | program that does not affect the files you are editing. Programs begun |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 294 | with :!start do not get passed Vim's open file handles, which means they do |
| 295 | not have to be closed before Vim. |
| 296 | To avoid this special treatment, use ":! start". |
Bram Moolenaar | bd8608d | 2011-05-25 17:06:22 +0200 | [diff] [blame] | 297 | There are two optional arguments (see the next Q): |
Bram Moolenaar | 1aeaf8c | 2012-05-18 13:46:39 +0200 | [diff] [blame] | 298 | /min the window will be minimized |
| 299 | /b no console window will be opened |
Bram Moolenaar | 5302d9e | 2011-09-14 17:55:08 +0200 | [diff] [blame] | 300 | 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] | 301 | treated as the start of the command. |
Bram Moolenaar | 944697a | 2022-02-20 19:48:20 +0000 | [diff] [blame] | 302 | *windows-asynchronously* |
Bram Moolenaar | bd8608d | 2011-05-25 17:06:22 +0200 | [diff] [blame] | 303 | 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] | 304 | A. You have two possible solutions depending on what you want: |
Bram Moolenaar | 251e191 | 2011-06-19 05:09:16 +0200 | [diff] [blame] | 305 | 1) You may use the /min flag in order to run program in a minimized state |
| 306 | with no other changes. It will work equally for console and GUI |
| 307 | applications. |
| 308 | 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] | 309 | console window for them (GUI applications are not affected). But you |
Bram Moolenaar | 251e191 | 2011-06-19 05:09:16 +0200 | [diff] [blame] | 310 | should use this flag only if the application you run doesn't require any |
| 311 | input. Otherwise it will get an EOF error because its input stream |
Bram Moolenaar | 5302d9e | 2011-09-14 17:55:08 +0200 | [diff] [blame] | 312 | (stdin) would be redirected to \\.\NUL (stdout and stderr too). |
Bram Moolenaar | bd8608d | 2011-05-25 17:06:22 +0200 | [diff] [blame] | 313 | |
| 314 | Example for a console application, run Exuberant ctags: > |
| 315 | :!start /min ctags -R . |
Bram Moolenaar | 944697a | 2022-02-20 19:48:20 +0000 | [diff] [blame] | 316 | < When it has finished you should see file named "tags" in your current |
Bram Moolenaar | bd8608d | 2011-05-25 17:06:22 +0200 | [diff] [blame] | 317 | directory. You should notice the window title blinking on your taskbar. |
Bram Moolenaar | 34401cc | 2014-08-29 15:12:19 +0200 | [diff] [blame] | 318 | This is more noticeable for commands that take longer. |
Bram Moolenaar | bd8608d | 2011-05-25 17:06:22 +0200 | [diff] [blame] | 319 | Now delete the "tags" file and run this command: > |
| 320 | :!start /b ctags -R . |
Bram Moolenaar | 944697a | 2022-02-20 19:48:20 +0000 | [diff] [blame] | 321 | < You should have the same "tags" file, but this time there will be no |
Bram Moolenaar | bd8608d | 2011-05-25 17:06:22 +0200 | [diff] [blame] | 322 | blinking on the taskbar. |
| 323 | Example for a GUI application: > |
| 324 | :!start /min notepad |
| 325 | :!start /b notepad |
Bram Moolenaar | 944697a | 2022-02-20 19:48:20 +0000 | [diff] [blame] | 326 | < The first command runs notepad minimized and the second one runs it |
Bram Moolenaar | bd8608d | 2011-05-25 17:06:22 +0200 | [diff] [blame] | 327 | normally. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 328 | |
Bram Moolenaar | 3a991dd | 2014-10-02 01:41:41 +0200 | [diff] [blame] | 329 | *windows-icon* |
| 330 | Q. I don't like the Vim icon, can I change it? |
| 331 | A. Yes, place your favorite icon in bitmaps/vim.ico in a directory of |
| 332 | 'runtimepath'. For example ~/vimfiles/bitmaps/vim.ico. |
| 333 | |
| 334 | |
Bram Moolenaar | 2c64ca1 | 2018-10-19 16:22:31 +0200 | [diff] [blame] | 335 | vim:tw=78:ts=8:noet:ft=help:norl: |