xref: /vim-8.2.3635/runtime/doc/pi_netrw.txt (revision 89a9c159)
1*pi_netrw.txt*  For Vim version 8.2.  Last change: 2021 Aug 16
2
3	    ------------------------------------------------
4	    NETRW REFERENCE MANUAL    by Charles E. Campbell
5	    ------------------------------------------------
6Author:  Charles E. Campbell  <[email protected]>
7	  (remove NOSPAM from Campbell's email first)
8
9Copyright: Copyright (C) 2017 Charles E Campbell    *netrw-copyright*
10	The VIM LICENSE applies to the files in this package, including
11	netrw.vim, pi_netrw.txt, netrwFileHandlers.vim, netrwSettings.vim, and
12	syntax/netrw.vim.  Like anything else that's free, netrw.vim and its
13	associated files are provided *as is* and comes with no warranty of
14	any kind, either expressed or implied.  No guarantees of
15	merchantability.  No guarantees of suitability for any purpose.  By
16	using this plugin, you agree that in no event will the copyright
17	holder be liable for any damages resulting from the use of this
18	software. Use at your own risk!
19
20		*netrw*
21		*dav*    *ftp*    *netrw-file*  *rcp*    *scp*
22		*davs*   *http*   *netrw.vim*   *rsync*  *sftp*
23		*fetch*  *network*
24
25==============================================================================
261. Contents						*netrw-contents* {{{1
27
281.  Contents..............................................|netrw-contents|
292.  Starting With Netrw...................................|netrw-start|
303.  Netrw Reference.......................................|netrw-ref|
31      EXTERNAL APPLICATIONS AND PROTOCOLS.................|netrw-externapp|
32      READING.............................................|netrw-read|
33      WRITING.............................................|netrw-write|
34      SOURCING............................................|netrw-source|
35      DIRECTORY LISTING...................................|netrw-dirlist|
36      CHANGING THE USERID AND PASSWORD....................|netrw-chgup|
37      VARIABLES AND SETTINGS..............................|netrw-variables|
38      PATHS...............................................|netrw-path|
394.  Network-Oriented File Transfer........................|netrw-xfer|
40      NETRC...............................................|netrw-netrc|
41      PASSWORD............................................|netrw-passwd|
425.  Activation............................................|netrw-activate|
436.  Transparent Remote File Editing.......................|netrw-transparent|
447.  Ex Commands...........................................|netrw-ex|
458.  Variables and Options.................................|netrw-variables|
469.  Browsing..............................................|netrw-browse|
47      Introduction To Browsing............................|netrw-intro-browse|
48      Quick Reference: Maps...............................|netrw-browse-maps|
49      Quick Reference: Commands...........................|netrw-browse-cmds|
50      Banner Display......................................|netrw-I|
51      Bookmarking A Directory.............................|netrw-mb|
52      Browsing............................................|netrw-cr|
53      Squeezing the Current Tree-Listing Directory........|netrw-s-cr|
54      Browsing With A Horizontally Split Window...........|netrw-o|
55      Browsing With A New Tab.............................|netrw-t|
56      Browsing With A Vertically Split Window.............|netrw-v|
57      Change File Permission..............................|netrw-gp|
58      Change Listing Style.(thin wide long tree)..........|netrw-i|
59      Changing To A Bookmarked Directory..................|netrw-gb|
60      Changing To A Predecessor Directory.................|netrw-u|
61      Changing To A Successor Directory...................|netrw-U|
62      Customizing Browsing With A Special Handler.........|netrw-x|
63      Deleting Bookmarks..................................|netrw-mB|
64      Deleting Files Or Directories.......................|netrw-D|
65      Directory Exploring Commands........................|netrw-explore|
66      Exploring With Stars and Patterns...................|netrw-star|
67      Displaying Information About File...................|netrw-qf|
68      Edit File Or Directory Hiding List..................|netrw-ctrl-h|
69      Editing The Sorting Sequence........................|netrw-S|
70      Forcing treatment as a file or directory............|netrw-gd| |netrw-gf|
71      Going Up............................................|netrw--|
72      Hiding Files Or Directories.........................|netrw-a|
73      Improving Browsing..................................|netrw-ssh-hack|
74      Listing Bookmarks And History.......................|netrw-qb|
75      Making A New Directory..............................|netrw-d|
76      Making The Browsing Directory The Current Directory.|netrw-cd|
77      Marking Files.......................................|netrw-mf|
78      Unmarking Files.....................................|netrw-mF|
79      Marking Files By Location List......................|netrw-qL|
80      Marking Files By QuickFix List......................|netrw-qF|
81      Marking Files By Regular Expression.................|netrw-mr|
82      Marked Files: Arbitrary Shell Command...............|netrw-mx|
83      Marked Files: Arbitrary Shell Command, En Bloc......|netrw-mX|
84      Marked Files: Arbitrary Vim Command.................|netrw-mv|
85      Marked Files: Argument List.........................|netrw-ma| |netrw-mA|
86      Marked Files: Buffer List...........................|netrw-cb| |netrw-cB|
87      Marked Files: Compression And Decompression.........|netrw-mz|
88      Marked Files: Copying...............................|netrw-mc|
89      Marked Files: Diff..................................|netrw-md|
90      Marked Files: Editing...............................|netrw-me|
91      Marked Files: Grep..................................|netrw-mg|
92      Marked Files: Hiding and Unhiding by Suffix.........|netrw-mh|
93      Marked Files: Moving................................|netrw-mm|
94      Marked Files: Printing..............................|netrw-mp|
95      Marked Files: Sourcing..............................|netrw-ms|
96      Marked Files: Setting the Target Directory..........|netrw-mt|
97      Marked Files: Tagging...............................|netrw-mT|
98      Marked Files: Target Directory Using Bookmarks......|netrw-Tb|
99      Marked Files: Target Directory Using History........|netrw-Th|
100      Marked Files: Unmarking.............................|netrw-mu|
101      Netrw Browser Variables.............................|netrw-browser-var|
102      Netrw Browsing And Option Incompatibilities.........|netrw-incompatible|
103      Netrw Settings Window...............................|netrw-settings-window|
104      Obtaining A File....................................|netrw-O|
105      Preview Window......................................|netrw-p|
106      Previous Window.....................................|netrw-P|
107      Refreshing The Listing..............................|netrw-ctrl-l|
108      Reversing Sorting Order.............................|netrw-r|
109      Renaming Files Or Directories.......................|netrw-R|
110      Selecting Sorting Style.............................|netrw-s|
111      Setting Editing Window..............................|netrw-C|
11210. Problems and Fixes....................................|netrw-problems|
11311. Debugging Netrw Itself................................|netrw-debug|
11412. History...............................................|netrw-history|
11513. Todo..................................................|netrw-todo|
11614. Credits...............................................|netrw-credits|
117
118==============================================================================
1192. Starting With Netrw					*netrw-start* {{{1
120
121Netrw makes reading files, writing files, browsing over a network, and
122local browsing easy!  First, make sure that you have plugins enabled, so
123you'll need to have at least the following in your <.vimrc>:
124(or see |netrw-activate|) >
125
126	set nocp                    " 'compatible' is not set
127	filetype plugin on          " plugins are enabled
128<
129(see |'cp'| and |:filetype-plugin-on|)
130
131Netrw supports "transparent" editing of files on other machines using urls
132(see |netrw-transparent|). As an example of this, let's assume you have an
133account on some other machine; if you can use scp, try: >
134
135	vim scp://hostname/path/to/file
136<
137Want to make ssh/scp easier to use? Check out |netrw-ssh-hack|!
138
139So, what if you have ftp, not ssh/scp?  That's easy, too; try >
140
141	vim ftp://hostname/path/to/file
142<
143Want to make ftp simpler to use?  See if your ftp supports a file called
144<.netrc> -- typically it goes in your home directory, has read/write
145permissions for only the user to read (ie. not group, world, other, etc),
146and has lines resembling >
147
148	machine HOSTNAME login USERID password "PASSWORD"
149	machine HOSTNAME login USERID password "PASSWORD"
150	...
151	default          login USERID password "PASSWORD"
152<
153Windows' ftp doesn't support .netrc; however, one may have in one's .vimrc:  >
154
155   let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\MyUserName\MACHINE'
156<
157Netrw will substitute the host's machine name for "MACHINE" from the URL it is
158attempting to open, and so one may specify >
159	userid
160	password
161for each site in a separate file: c:\Users\MyUserName\MachineName.
162
163Now about browsing -- when you just want to look around before editing a
164file.  For browsing on your current host, just "edit" a directory: >
165
166	vim .
167	vim /home/userid/path
168<
169For browsing on a remote host, "edit" a directory (but make sure that
170the directory name is followed by a "/"): >
171
172	vim scp://hostname/
173	vim ftp://hostname/path/to/dir/
174<
175See |netrw-browse| for more!
176
177There are more protocols supported by netrw than just scp and ftp, too: see the
178next section, |netrw-externapp|, on how to use these external applications with
179netrw and vim.
180
181PREVENTING LOADING					*netrw-noload*
182
183If you want to use plugins, but for some reason don't wish to use netrw, then
184you need to avoid loading both the plugin and the autoload portions of netrw.
185You may do so by placing the following two lines in your <.vimrc>: >
186
187	:let g:loaded_netrw       = 1
188	:let g:loaded_netrwPlugin = 1
189<
190
191==============================================================================
1923. Netrw Reference					*netrw-ref* {{{1
193
194   Netrw supports several protocols in addition to scp and ftp as mentioned
195   in |netrw-start|.  These include dav, fetch, http,... well, just look
196   at the list in |netrw-externapp|.  Each protocol is associated with a
197   variable which holds the default command supporting that protocol.
198
199EXTERNAL APPLICATIONS AND PROTOCOLS			*netrw-externapp* {{{2
200
201	Protocol  Variable	       Default Value
202	--------  ----------------     -------------
203	   dav:   *g:netrw_dav_cmd*      = "cadaver"    if cadaver is executable
204	   dav:   g:netrw_dav_cmd      = "curl -o"    elseif curl is available
205	 fetch:   *g:netrw_fetch_cmd*    = "fetch -o"   if fetch is available
206	   ftp:   *g:netrw_ftp_cmd*      = "ftp"
207	  http:   *g:netrw_http_cmd*     = "elinks"     if   elinks  is available
208	  http:   g:netrw_http_cmd     = "links"      elseif links is available
209	  http:   g:netrw_http_cmd     = "curl"       elseif curl  is available
210	  http:   g:netrw_http_cmd     = "wget"       elseif wget  is available
211          http:   g:netrw_http_cmd     = "fetch"      elseif fetch is available
212	  http:   *g:netrw_http_put_cmd* = "curl -T"
213	   rcp:   *g:netrw_rcp_cmd*      = "rcp"
214	 rsync:   *g:netrw_rsync_cmd*    = "rsync"     (see |g:netrw_rsync_sep|)
215	   scp:   *g:netrw_scp_cmd*      = "scp -q"
216	  sftp:   *g:netrw_sftp_cmd*     = "sftp"
217	  file:   *g:netrw_file_cmd*     = "elinks" or "links"
218
219	*g:netrw_http_xcmd* : the option string for http://... protocols are
220	specified via this variable and may be independently overridden.  By
221	default, the option arguments for the http-handling commands are: >
222
223		    elinks : "-source >"
224		    links  : "-dump >"
225		    curl   : "-L -o"
226		    wget   : "-q -O"
227		    fetch  : "-o"
228<
229	For example, if your system has elinks, and you'd rather see the
230	page using an attempt at rendering the text, you may wish to have >
231		let g:netrw_http_xcmd= "-dump >"
232<	in your .vimrc.
233
234	g:netrw_http_put_cmd: this option specifies both the executable and
235	any needed options.  This command does a PUT operation to the url.
236
237
238READING						*netrw-read* *netrw-nread* {{{2
239
240	Generally, one may just use the URL notation with a normal editing
241	command, such as >
242
243		:e ftp://[user@]machine/path
244<
245	Netrw also provides the Nread command:
246
247	:Nread ?					give help
248	:Nread "machine:path"				uses rcp
249	:Nread "machine path"				uses ftp w/ <.netrc>
250	:Nread "machine id password path"		uses ftp
251	:Nread "dav://machine[:port]/path"		uses cadaver
252	:Nread "fetch://[user@]machine/path"		uses fetch
253	:Nread "ftp://[user@]machine[[:#]port]/path"	uses ftp w/ <.netrc>
254	:Nread "http://[user@]machine/path"		uses http  uses wget
255	:Nread "rcp://[user@]machine/path"		uses rcp
256	:Nread "rsync://[user@]machine[:port]/path"	uses rsync
257	:Nread "scp://[user@]machine[[:#]port]/path"	uses scp
258	:Nread "sftp://[user@]machine/path"		uses sftp
259
260WRITING					*netrw-write* *netrw-nwrite* {{{2
261
262	One may just use the URL notation with a normal file writing
263	command, such as >
264
265		:w ftp://[user@]machine/path
266<
267	Netrw also provides the Nwrite command:
268
269	:Nwrite ?					give help
270	:Nwrite "machine:path"				uses rcp
271	:Nwrite "machine path"				uses ftp w/ <.netrc>
272	:Nwrite "machine id password path"		uses ftp
273	:Nwrite "dav://machine[:port]/path"		uses cadaver
274	:Nwrite "ftp://[user@]machine[[:#]port]/path"	uses ftp w/ <.netrc>
275	:Nwrite "rcp://[user@]machine/path"		uses rcp
276	:Nwrite "rsync://[user@]machine[:port]/path"	uses rsync
277	:Nwrite "scp://[user@]machine[[:#]port]/path"	uses scp
278	:Nwrite "sftp://[user@]machine/path"		uses sftp
279	http: not supported!
280
281SOURCING					*netrw-source* {{{2
282
283	One may just use the URL notation with the normal file sourcing
284	command, such as >
285
286		:so ftp://[user@]machine/path
287<
288	Netrw also provides the Nsource command:
289
290	:Nsource ?					give help
291	:Nsource "dav://machine[:port]/path"		uses cadaver
292	:Nsource "fetch://[user@]machine/path"		uses fetch
293	:Nsource "ftp://[user@]machine[[:#]port]/path"	uses ftp w/ <.netrc>
294	:Nsource "http://[user@]machine/path"		uses http  uses wget
295	:Nsource "rcp://[user@]machine/path"		uses rcp
296	:Nsource "rsync://[user@]machine[:port]/path"	uses rsync
297	:Nsource "scp://[user@]machine[[:#]port]/path"	uses scp
298	:Nsource "sftp://[user@]machine/path"		uses sftp
299
300DIRECTORY LISTING		*netrw-trailingslash* *netrw-dirlist* {{{2
301
302	One may browse a directory to get a listing by simply attempting to
303	edit the directory: >
304
305		:e scp://[user]@hostname/path/
306		:e ftp://[user]@hostname/path/
307<
308	For remote directory listings (ie. those using scp or ftp), that
309	trailing "/" is necessary (the slash tells netrw to treat the argument
310	as a directory to browse instead of as a file to download).
311
312	The Nread command may also be used to accomplish this (again, that
313	trailing slash is necessary): >
314
315		:Nread [protocol]://[user]@hostname/path/
316<
317					*netrw-login* *netrw-password*
318CHANGING USERID AND PASSWORD		*netrw-chgup* *netrw-userpass* {{{2
319
320	Attempts to use ftp will prompt you for a user-id and a password.
321	These will be saved in global variables |g:netrw_uid| and
322	|s:netrw_passwd|; subsequent use of ftp will re-use those two strings,
323	thereby simplifying use of ftp.  However, if you need to use a
324	different user id and/or password, you'll want to call |NetUserPass()|
325	first.  To work around the need to enter passwords, check if your ftp
326	supports a <.netrc> file in your home directory.  Also see
327	|netrw-passwd| (and if you're using ssh/scp hoping to figure out how
328	to not need to use passwords for scp, look at |netrw-ssh-hack|).
329
330	:NetUserPass [uid [password]]		-- prompts as needed
331	:call NetUserPass()			-- prompts for uid and password
332	:call NetUserPass("uid")		-- prompts for password
333	:call NetUserPass("uid","password")	-- sets global uid and password
334
335(Related topics: |ftp| |netrw-userpass| |netrw-start|)
336
337NETRW VARIABLES AND SETTINGS				*netrw-variables* {{{2
338    (Also see:
339    |netrw-browser-var|     : netrw browser option variables
340    |netrw-protocol|        : file transfer protocol option variables
341    |netrw-settings|        : additional file transfer options
342    |netrw-browser-options| : these options affect browsing directories
343    )
344
345Netrw provides a lot of variables which allow you to customize netrw to your
346preferences.  One way to look at them is via the command :NetrwSettings (see
347|netrw-settings|) which will display your current netrw settings.  Most such
348settings are described below, in |netrw-browser-options|, and in
349|netrw-externapp|:
350
351 *b:netrw_lastfile*	last file Network-read/written retained on a
352			per-buffer basis (supports plain :Nw )
353
354 *g:netrw_bufsettings*	the settings that netrw buffers have
355			(default) noma nomod nonu nowrap ro nobl
356
357 *g:netrw_chgwin*	specifies a window number where subsequent file edits
358			will take place.  (also see |netrw-C|)
359			(default) -1
360
361 *g:Netrw_funcref*	specifies a function (or functions) to be called when
362			netrw edits a file.  The file is first edited, and
363			then the function reference (|Funcref|) is called.
364			This variable may also hold a |List| of Funcrefs.
365			(default) not defined.  (the capital in g:Netrw...
366			is required by its holding a function reference)
367>
368			    Example: place in .vimrc; affects all file opening
369			    fun! MyFuncRef()
370			    endfun
371			    let g:Netrw_funcref= function("MyFuncRef")
372
373<
374 *g:Netrw_UserMaps*	specifies a function or |List| of functions which can
375			be used to set up user-specified maps and functionality.
376			See |netrw-usermaps|
377
378 *g:netrw_ftp*		   if it doesn't exist, use default ftp
379			=0 use default ftp		       (uid password)
380			=1 use alternate ftp method	  (user uid password)
381			   If you're having trouble with ftp, try changing the
382			   value of this variable to see if the alternate ftp
383			   method works for your setup.
384
385 *g:netrw_ftp_options*     Chosen by default, these options are supposed to
386			 turn interactive prompting off and to restrain ftp
387			 from attempting auto-login upon initial connection.
388			 However, it appears that not all ftp implementations
389			 support this (ex. ncftp).
390		        ="-i -n"
391
392 *g:netrw_ftpextracmd*	default: doesn't exist
393			If this variable exists, then any string it contains
394			will be placed into the commands set to your ftp
395			client.  As an example:
396			   ="passive"
397
398 *g:netrw_ftpmode*	="binary"				    (default)
399			="ascii"
400
401 *g:netrw_ignorenetrc*	=0 (default for linux, cygwin)
402			=1 If you have a <.netrc> file but it doesn't work and
403			   you want it ignored, then set this variable as
404			   shown. (default for Windows + cmd.exe)
405
406 *g:netrw_menu*		=0 disable netrw's menu
407			=1 (default) netrw's menu enabled
408
409 *g:netrw_nogx*		if this variable exists, then the "gx" map will not
410			be available (see |netrw-gx|)
411
412 *g:netrw_uid*		(ftp) user-id,      retained on a per-vim-session basis
413 *s:netrw_passwd*	(ftp) password,     retained on a per-vim-session basis
414
415 *g:netrw_preview*	=0 (default) preview window shown in a horizontally
416			   split window
417			=1 preview window shown in a vertically split window.
418			   Also affects the "previous window" (see |netrw-P|)
419			   in the same way.
420			The |g:netrw_alto| variable may be used to provide
421			additional splitting control:
422				g:netrw_preview g:netrw_alto result
423				         0             0     |:aboveleft|
424				         0             1     |:belowright|
425				         1             0     |:topleft|
426				         1             1     |:botright|
427			To control sizing, see |g:netrw_winsize|
428
429 *g:netrw_scpport*	= "-P" : option to use to set port for scp
430 *g:netrw_sshport*	= "-p" : option to use to set port for ssh
431
432 *g:netrw_sepchr*	=\0xff
433			=\0x01 for enc == euc-jp (and perhaps it should be for
434			   others, too, please let me know)
435			   Separates priority codes from filenames internally.
436			   See |netrw-p12|.
437
438  *g:netrw_silent*	=0 : transfers done normally
439			=1 : transfers done silently
440
441 *g:netrw_use_errorwindow* =2: messages from netrw will use a popup window
442			     Move the mouse and pause to remove the popup window.
443			     (default value if popup windows are availble)
444			 =1 : messages from netrw will use a separate one
445			      line window.  This window provides reliable
446			      delivery of messages.
447			     (default value if popup windows are not availble)
448			 =0 : messages from netrw will use echoerr ;
449			      messages don't always seem to show up this
450			      way, but one doesn't have to quit the window.
451
452 *g:netrw_win95ftp*	=1 if using Win95, will remove four trailing blank
453			   lines that o/s's ftp "provides" on transfers
454			=0 force normal ftp behavior (no trailing line removal)
455
456 *g:netrw_cygwin*	=1 assume scp under windows is from cygwin. Also
457			   permits network browsing to use ls with time and
458			   size sorting (default if windows)
459			=0 assume Windows' scp accepts windows-style paths
460			   Network browsing uses dir instead of ls
461			   This option is ignored if you're using unix
462
463 *g:netrw_use_nt_rcp*	=0 don't use the rcp of WinNT, Win2000 and WinXP
464			=1 use WinNT's rcp in binary mode         (default)
465
466PATHS							*netrw-path* {{{2
467
468Paths to files are generally user-directory relative for most protocols.
469It is possible that some protocol will make paths relative to some
470associated directory, however.
471>
472	example:  vim scp://user@host/somefile
473	example:  vim scp://user@host/subdir1/subdir2/somefile
474<
475where "somefile" is in the "user"'s home directory.  If you wish to get a
476file using root-relative paths, use the full path:
477>
478	example:  vim scp://user@host//somefile
479	example:  vim scp://user@host//subdir1/subdir2/somefile
480<
481
482==============================================================================
4834. Network-Oriented File Transfer			*netrw-xfer* {{{1
484
485Network-oriented file transfer under Vim is implemented by a vim script
486(<netrw.vim>) using plugin techniques.  It currently supports both reading and
487writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch,
488dav/cadaver, rsync, or sftp.
489
490http is currently supported read-only via use of wget or fetch.
491
492<netrw.vim> is a standard plugin which acts as glue between Vim and the
493various file transfer programs.  It uses autocommand events (BufReadCmd,
494FileReadCmd, BufWriteCmd) to intercept reads/writes with url-like filenames. >
495
496	ex. vim ftp://hostname/path/to/file
497<
498The characters preceding the colon specify the protocol to use; in the
499example, it's ftp.  The <netrw.vim> script then formulates a command or a
500series of commands (typically ftp) which it issues to an external program
501(ftp, scp, etc) which does the actual file transfer/protocol.  Files are read
502from/written to a temporary file (under Unix/Linux, /tmp/...) which the
503<netrw.vim> script will clean up.
504
505Now, a word about Jan Minář's "FTP User Name and Password Disclosure"; first,
506ftp is not a secure protocol.  User names and passwords are transmitted "in
507the clear" over the internet; any snooper tool can pick these up; this is not
508a netrw thing, this is a ftp thing.  If you're concerned about this, please
509try to use scp or sftp instead.
510
511Netrw re-uses the user id and password during the same vim session and so long
512as the remote hostname remains the same.
513
514Jan seems to be a bit confused about how netrw handles ftp; normally multiple
515commands are performed in a "ftp session", and he seems to feel that the
516uid/password should only be retained over one ftp session.  However, netrw
517does every ftp operation in a separate "ftp session"; so remembering the
518uid/password for just one "ftp session" would be the same as not remembering
519the uid/password at all.  IMHO this would rapidly grow tiresome as one
520browsed remote directories, for example.
521
522On the other hand, thanks go to Jan M. for pointing out the many
523vulnerabilities that netrw (and vim itself) had had in handling "crafted"
524filenames.  The |shellescape()| and |fnameescape()| functions were written in
525response by Bram Moolenaar to handle these sort of problems, and netrw has
526been modified to use them.  Still, my advice is, if the "filename" looks like
527a vim command that you aren't comfortable with having executed, don't open it.
528
529				*netrw-putty* *netrw-pscp* *netrw-psftp*
530One may modify any protocol's implementing external application by setting a
531variable (ex. scp uses the variable g:netrw_scp_cmd, which is defaulted to
532"scp -q").  As an example, consider using PuTTY: >
533
534	let g:netrw_scp_cmd = '"c:\Program Files\PuTTY\pscp.exe" -q -batch'
535	let g:netrw_sftp_cmd= '"c:\Program Files\PuTTY\psftp.exe"'
536<
537(note: it has been reported that windows 7 with putty v0.6's "-batch" option
538       doesn't work, so its best to leave it off for that system)
539
540See |netrw-p8| for more about putty, pscp, psftp, etc.
541
542Ftp, an old protocol, seems to be blessed by numerous implementations.
543Unfortunately, some implementations are noisy (ie., add junk to the end of the
544file).  Thus, concerned users may decide to write a NetReadFixup() function
545that will clean up after reading with their ftp.  Some Unix systems (ie.,
546FreeBSD) provide a utility called "fetch" which uses the ftp protocol but is
547not noisy and more convenient, actually, for <netrw.vim> to use.
548Consequently, if "fetch" is available (ie. executable), it may be preferable
549to use it for ftp://... based transfers.
550
551For rcp, scp, sftp, and http, one may use network-oriented file transfers
552transparently; ie.
553>
554	vim rcp://[user@]machine/path
555	vim scp://[user@]machine/path
556<
557If your ftp supports <.netrc>, then it too can be transparently used
558if the needed triad of machine name, user id, and password are present in
559that file.  Your ftp must be able to use the <.netrc> file on its own, however.
560>
561	vim ftp://[user@]machine[[:#]portnumber]/path
562<
563Windows provides an ftp (typically c:\Windows\System32\ftp.exe) which uses
564an option, -s:filename (filename can and probably should be a full path)
565which contains ftp commands which will be automatically run whenever ftp
566starts.  You may use this feature to enter a user and password for one site: >
567	userid
568	password
569<				*netrw-windows-netrc*  *netrw-windows-s*
570If |g:netrw_ftp_cmd| contains -s:[path/]MACHINE, then (on Windows machines
571only) netrw will substitute the current machine name requested for ftp
572connections for MACHINE.  Hence one can have multiple machine.ftp files
573containing login and password for ftp.  Example: >
574
575    let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE'
576    vim ftp://myhost.somewhere.net/
577
578will use a file >
579
580	C:\Users\Myself\myhost.ftp
581<
582Often, ftp will need to query the user for the userid and password.
583The latter will be done "silently"; ie. asterisks will show up instead of
584the actually-typed-in password.  Netrw will retain the userid and password
585for subsequent read/writes from the most recent transfer so subsequent
586transfers (read/write) to or from that machine will take place without
587additional prompting.
588
589								*netrw-urls*
590  +=================================+============================+============+
591  |  Reading                        | Writing                    |  Uses      |
592  +=================================+============================+============+
593  | DAV:                            |                            |            |
594  |  dav://host/path                |                            | cadaver    |
595  |  :Nread dav://host/path         | :Nwrite dav://host/path    | cadaver    |
596  +---------------------------------+----------------------------+------------+
597  | DAV + SSL:                      |                            |            |
598  |  davs://host/path               |                            | cadaver    |
599  |  :Nread davs://host/path        | :Nwrite davs://host/path   | cadaver    |
600  +---------------------------------+----------------------------+------------+
601  | FETCH:                          |                            |            |
602  |  fetch://[user@]host/path       |                            |            |
603  |  fetch://[user@]host:http/path  |  Not Available             | fetch      |
604  |  :Nread fetch://[user@]host/path|                            |            |
605  +---------------------------------+----------------------------+------------+
606  | FILE:                           |                            |            |
607  |  file:///*                      | file:///*                  |            |
608  |  file://localhost/*             | file://localhost/*         |            |
609  +---------------------------------+----------------------------+------------+
610  | FTP:          (*3)              |              (*3)          |            |
611  |  ftp://[user@]host/path         | ftp://[user@]host/path     | ftp  (*2)  |
612  |  :Nread ftp://host/path         | :Nwrite ftp://host/path    | ftp+.netrc |
613  |  :Nread host path               | :Nwrite host path          | ftp+.netrc |
614  |  :Nread host uid pass path      | :Nwrite host uid pass path | ftp        |
615  +---------------------------------+----------------------------+------------+
616  | HTTP: wget is executable: (*4)  |                            |            |
617  |  http://[user@]host/path        |        Not Available       | wget       |
618  +---------------------------------+----------------------------+------------+
619  | HTTP: fetch is executable (*4)  |                            |            |
620  |  http://[user@]host/path        |        Not Available       | fetch      |
621  +---------------------------------+----------------------------+------------+
622  | RCP:                            |                            |            |
623  |  rcp://[user@]host/path         | rcp://[user@]host/path     | rcp        |
624  +---------------------------------+----------------------------+------------+
625  | RSYNC:                          |                            |            |
626  |  rsync://[user@]host/path       | rsync://[user@]host/path   | rsync      |
627  |  :Nread rsync://host/path       | :Nwrite rsync://host/path  | rsync      |
628  |  :Nread rcp://host/path         | :Nwrite rcp://host/path    | rcp        |
629  +---------------------------------+----------------------------+------------+
630  | SCP:                            |                            |            |
631  |  scp://[user@]host/path         | scp://[user@]host/path     | scp        |
632  |  :Nread scp://host/path         | :Nwrite scp://host/path    | scp  (*1)  |
633  +---------------------------------+----------------------------+------------+
634  | SFTP:                           |                            |            |
635  |  sftp://[user@]host/path        | sftp://[user@]host/path    | sftp       |
636  |  :Nread sftp://host/path        | :Nwrite sftp://host/path   | sftp  (*1) |
637  +=================================+============================+============+
638
639	(*1) For an absolute path use scp://machine//path.
640
641	(*2) if <.netrc> is present, it is assumed that it will
642	work with your ftp client.  Otherwise the script will
643	prompt for user-id and password.
644
645        (*3) for ftp, "machine" may be machine#port or machine:port
646	if a different port is needed than the standard ftp port
647
648	(*4) for http:..., if wget is available it will be used.  Otherwise,
649	if fetch is available it will be used.
650
651Both the :Nread and the :Nwrite ex-commands can accept multiple filenames.
652
653
654NETRC							*netrw-netrc*
655
656The <.netrc> file, typically located in your home directory, contains lines
657therein which map a hostname (machine name) to the user id and password you
658prefer to use with it.
659
660The typical syntax for lines in a <.netrc> file is given as shown below.
661Ftp under Unix usually supports <.netrc>; ftp under Windows usually doesn't.
662>
663	machine {full machine name} login {user-id} password "{password}"
664	default login {user-id} password "{password}"
665
666Your ftp client must handle the use of <.netrc> on its own, but if the
667<.netrc> file exists, an ftp transfer will not ask for the user-id or
668password.
669
670	Note:
671	Since this file contains passwords, make very sure nobody else can
672	read this file!  Most programs will refuse to use a .netrc that is
673	readable for others.  Don't forget that the system administrator can
674	still read the file!  Ie. for Linux/Unix: chmod 600 .netrc
675
676Even though Windows' ftp clients typically do not support .netrc, netrw has
677a work-around: see |netrw-windows-s|.
678
679
680PASSWORD						*netrw-passwd*
681
682The script attempts to get passwords for ftp invisibly using |inputsecret()|,
683a built-in Vim function.  See |netrw-userpass| for how to change the password
684after one has set it.
685
686Unfortunately there doesn't appear to be a way for netrw to feed a password to
687scp.  Thus every transfer via scp will require re-entry of the password.
688However, |netrw-ssh-hack| can help with this problem.
689
690
691==============================================================================
6925. Activation						*netrw-activate* {{{1
693
694Network-oriented file transfers are available by default whenever Vim's
695|'nocompatible'| mode is enabled.  Netrw's script files reside in your
696system's plugin, autoload, and syntax directories; just the
697plugin/netrwPlugin.vim script is sourced automatically whenever you bring up
698vim.  The main script in autoload/netrw.vim is only loaded when you actually
699use netrw.  I suggest that, at a minimum, you have at least the following in
700your <.vimrc> customization file: >
701
702	set nocp
703	if version >= 600
704	  filetype plugin indent on
705	endif
706<
707By also including the following lines in your .vimrc, one may have netrw
708immediately activate when using [g]vim without any filenames, showing the
709current directory: >
710
711	" Augroup VimStartup:
712	augroup VimStartup
713	  au!
714	  au VimEnter * if expand("%") == "" | e . | endif
715	augroup END
716<
717
718==============================================================================
7196. Transparent Remote File Editing		*netrw-transparent* {{{1
720
721Transparent file transfers occur whenever a regular file read or write
722(invoked via an |:autocmd| for |BufReadCmd|, |BufWriteCmd|, or |SourceCmd|
723events) is made.  Thus one may read, write, or source  files across networks
724just as easily as if they were local files! >
725
726	vim ftp://[user@]machine/path
727	...
728	:wq
729
730See |netrw-activate| for more on how to encourage your vim to use plugins
731such as netrw.
732
733For password-free use of scp:, see |netrw-ssh-hack|.
734
735
736==============================================================================
7377. Ex Commands						*netrw-ex* {{{1
738
739The usual read/write commands are supported.  There are also a few
740additional commands available.  Often you won't need to use Nwrite or
741Nread as shown in |netrw-transparent| (ie. simply use >
742  :e URL
743  :r URL
744  :w URL
745instead, as appropriate) -- see |netrw-urls|.  In the explanations
746below, a {netfile} is a URL to a remote file.
747
748						*:Nwrite*  *:Nw*
749:[range]Nw[rite]	Write the specified lines to the current
750		file as specified in b:netrw_lastfile.
751		(related: |netrw-nwrite|)
752
753:[range]Nw[rite] {netfile} [{netfile}]...
754		Write the specified lines to the {netfile}.
755
756						*:Nread*   *:Nr*
757:Nr[ead]	Read the lines from the file specified in b:netrw_lastfile
758		into the current buffer.  (related: |netrw-nread|)
759
760:Nr[ead] {netfile} {netfile}...
761		Read the {netfile} after the current line.
762
763						*:Nsource* *:Ns*
764:Ns[ource] {netfile}
765		Source the {netfile}.
766		To start up vim using a remote .vimrc, one may use
767		the following (all on one line) (tnx to Antoine Mechelynck) >
768		vim -u NORC -N
769		 --cmd "runtime plugin/netrwPlugin.vim"
770		 --cmd "source scp://HOSTNAME/.vimrc"
771<		 (related: |netrw-source|)
772
773:call NetUserPass()				*NetUserPass()*
774		If g:netrw_uid and s:netrw_passwd don't exist,
775		this function will query the user for them.
776		(related: |netrw-userpass|)
777
778:call NetUserPass("userid")
779		This call will set the g:netrw_uid and, if
780		the password doesn't exist, will query the user for it.
781		(related: |netrw-userpass|)
782
783:call NetUserPass("userid","passwd")
784		This call will set both the g:netrw_uid and s:netrw_passwd.
785		The user-id and password are used by ftp transfers.  One may
786		effectively remove the user-id and password by using empty
787		strings (ie. "").
788		(related: |netrw-userpass|)
789
790:NetrwSettings  This command is described in |netrw-settings| -- used to
791                display netrw settings and change netrw behavior.
792
793
794==============================================================================
7958. Variables and Options		*netrw-var* *netrw-settings* {{{1
796
797(also see: |netrw-options| |netrw-variables| |netrw-protocol|
798           |netrw-browser-settings| |netrw-browser-options| )
799
800The <netrw.vim> script provides several variables which act as options to
801affect <netrw.vim>'s file transfer behavior.  These variables typically may be
802set in the user's <.vimrc> file: (see also |netrw-settings| |netrw-protocol|)
803						*netrw-options*
804>
805                        -------------
806                        Netrw Options
807                        -------------
808	Option			Meaning
809	--------------		-----------------------------------------------
810<
811        b:netrw_col             Holds current cursor position (during NetWrite)
812        g:netrw_cygwin          =1 assume scp under windows is from cygwin
813                                                              (default/windows)
814                                =0 assume scp under windows accepts windows
815                                   style paths                (default/else)
816        g:netrw_ftp             =0 use default ftp            (uid password)
817        g:netrw_ftpmode         ="binary"                     (default)
818                                ="ascii"                      (your choice)
819	g:netrw_ignorenetrc     =1                            (default)
820	                           if you have a <.netrc> file but you don't
821				   want it used, then set this variable.  Its
822				   mere existence is enough to cause <.netrc>
823				   to be ignored.
824        b:netrw_lastfile        Holds latest method/machine/path.
825        b:netrw_line            Holds current line number     (during NetWrite)
826	g:netrw_silent          =0 transfers done normally
827	                        =1 transfers done silently
828        g:netrw_uid             Holds current user-id for ftp.
829        g:netrw_use_nt_rcp      =0 don't use WinNT/2K/XP's rcp (default)
830                                =1 use WinNT/2K/XP's rcp, binary mode
831        g:netrw_win95ftp        =0 use unix-style ftp even if win95/98/ME/etc
832                                =1 use default method to do ftp >
833	-----------------------------------------------------------------------
834<
835						*netrw-internal-variables*
836The script will also make use of the following variables internally, albeit
837temporarily.
838>
839			     -------------------
840			     Temporary Variables
841			     -------------------
842	Variable		Meaning
843	--------		------------------------------------
844<
845	b:netrw_method		Index indicating rcp/ftp+.netrc/ftp
846	w:netrw_method		(same as b:netrw_method)
847	g:netrw_machine		Holds machine name parsed from input
848	b:netrw_fname		Holds filename being accessed >
849	------------------------------------------------------------
850<
851							*netrw-protocol*
852
853Netrw supports a number of protocols.  These protocols are invoked using the
854variables listed below, and may be modified by the user.
855>
856			   ------------------------
857                           Protocol Control Options
858			   ------------------------
859    Option            Type        Setting         Meaning
860    ---------         --------    --------------  ---------------------------
861<    netrw_ftp         variable    =doesn't exist  userid set by "user userid"
862                                  =0              userid set by "user userid"
863                                  =1              userid set by "userid"
864    NetReadFixup      function    =doesn't exist  no change
865                                  =exists         Allows user to have files
866                                                  read via ftp automatically
867                                                  transformed however they wish
868                                                  by NetReadFixup()
869    g:netrw_dav_cmd      var   ="cadaver"      if cadaver  is executable
870    g:netrw_dav_cmd      var   ="curl -o"      elseif curl is executable
871    g:netrw_fetch_cmd    var   ="fetch -o"     if fetch is available
872    g:netrw_ftp_cmd      var   ="ftp"
873    g:netrw_http_cmd     var   ="fetch -o"     if      fetch is available
874    g:netrw_http_cmd     var   ="wget -O"      else if wget  is available
875    g:netrw_http_put_cmd var   ="curl -T"
876    |g:netrw_list_cmd|     var   ="ssh USEPORT HOSTNAME ls -Fa"
877    g:netrw_rcp_cmd      var   ="rcp"
878    g:netrw_rsync_cmd    var   ="rsync"
879    *g:netrw_rsync_sep*    var   ="/"            used to separate the hostname
880                                               from the file spec
881    g:netrw_scp_cmd      var   ="scp -q"
882    g:netrw_sftp_cmd     var   ="sftp" >
883    -------------------------------------------------------------------------
884<
885								*netrw-ftp*
886
887The g:netrw_..._cmd options (|g:netrw_ftp_cmd| and |g:netrw_sftp_cmd|)
888specify the external program to use handle the ftp protocol.  They may
889include command line options (such as -p for passive mode). Example: >
890
891	let g:netrw_ftp_cmd= "ftp -p"
892<
893Browsing is supported by using the |g:netrw_list_cmd|; the substring
894"HOSTNAME" will be changed via substitution with whatever the current request
895is for a hostname.
896
897Two options (|g:netrw_ftp| and |netrw-fixup|) both help with certain ftp's
898that give trouble .  In order to best understand how to use these options if
899ftp is giving you troubles, a bit of discussion is provided on how netrw does
900ftp reads.
901
902For ftp, netrw typically builds up lines of one of the following formats in a
903temporary file:
904>
905  IF g:netrw_ftp !exists or is not 1     IF g:netrw_ftp exists and is 1
906  ----------------------------------     ------------------------------
907<
908       open machine [port]                    open machine [port]
909       user userid password                   userid password
910       [g:netrw_ftpmode]                      password
911       [g:netrw_ftpextracmd]                  [g:netrw_ftpmode]
912       get filename tempfile                  [g:netrw_extracmd]
913                                              get filename tempfile >
914  ---------------------------------------------------------------------
915<
916The |g:netrw_ftpmode| and |g:netrw_ftpextracmd| are optional.
917
918Netrw then executes the lines above by use of a filter:
919>
920	:%! {g:netrw_ftp_cmd} -i [-n]
921<
922where
923	g:netrw_ftp_cmd is usually "ftp",
924	-i tells ftp not to be interactive
925	-n means don't use netrc and is used for Method #3 (ftp w/o <.netrc>)
926
927If <.netrc> exists it will be used to avoid having to query the user for
928userid and password.  The transferred file is put into a temporary file.
929The temporary file is then read into the main editing session window that
930requested it and the temporary file deleted.
931
932If your ftp doesn't accept the "user" command and immediately just demands a
933userid, then try putting "let netrw_ftp=1" in your <.vimrc>.
934
935								*netrw-cadaver*
936To handle the SSL certificate dialog for untrusted servers, one may pull
937down the certificate and place it into /usr/ssl/cert.pem.  This operation
938renders the server treatment as "trusted".
939
940						*netrw-fixup* *netreadfixup*
941If your ftp for whatever reason generates unwanted lines (such as AUTH
942messages) you may write a NetReadFixup() function:
943>
944    function! NetReadFixup(method,line1,line2)
945      " a:line1: first new line in current file
946      " a:line2: last  new line in current file
947      if     a:method == 1 "rcp
948      elseif a:method == 2 "ftp + <.netrc>
949      elseif a:method == 3 "ftp + machine,uid,password,filename
950      elseif a:method == 4 "scp
951      elseif a:method == 5 "http/wget
952      elseif a:method == 6 "dav/cadaver
953      elseif a:method == 7 "rsync
954      elseif a:method == 8 "fetch
955      elseif a:method == 9 "sftp
956      else               " complain
957      endif
958    endfunction
959>
960The NetReadFixup() function will be called if it exists and thus allows you to
961customize your reading process.  As a further example, <netrw.vim> contains
962just such a function to handle Windows 95 ftp.  For whatever reason, Windows
96395's ftp dumps four blank lines at the end of a transfer, and so it is
964desirable to automate their removal.  Here's some code taken from <netrw.vim>
965itself:
966>
967    if has("win95") && g:netrw_win95ftp
968     fun! NetReadFixup(method, line1, line2)
969       if method == 3   " ftp (no <.netrc>)
970        let fourblanklines= line2 - 3
971        silent fourblanklines.",".line2."g/^\s*/d"
972       endif
973     endfunction
974    endif
975>
976(Related topics: |ftp| |netrw-userpass| |netrw-start|)
977
978==============================================================================
9799. Browsing		*netrw-browsing* *netrw-browse* *netrw-help* {{{1
980			*netrw-browser*  *netrw-dir*    *netrw-list*
981
982INTRODUCTION TO BROWSING			*netrw-intro-browse* {{{2
983	(Quick References: |netrw-quickmaps| |netrw-quickcoms|)
984
985Netrw supports the browsing of directories on your local system and on remote
986hosts; browsing includes listing files and directories, entering directories,
987editing files therein, deleting files/directories, making new directories,
988moving (renaming) files and directories, copying files and directories, etc.
989One may mark files and execute any system command on them!  The Netrw browser
990generally implements the previous explorer's maps and commands for remote
991directories, although details (such as pertinent global variable names)
992necessarily differ.  To browse a directory, simply "edit" it! >
993
994	vim /your/directory/
995	vim .
996	vim c:\your\directory\
997<
998(Related topics: |netrw-cr|  |netrw-o|  |netrw-p| |netrw-P| |netrw-t|
999                 |netrw-mf|  |netrw-mx| |netrw-D| |netrw-R| |netrw-v| )
1000
1001The Netrw remote file and directory browser handles two protocols: ssh and
1002ftp.  The protocol in the url, if it is ftp, will cause netrw also to use ftp
1003in its remote browsing.  Specifying any other protocol will cause it to be
1004used for file transfers; but the ssh protocol will be used to do remote
1005browsing.
1006
1007To use Netrw's remote directory browser, simply attempt to read a "file" with
1008a trailing slash and it will be interpreted as a request to list a directory:
1009>
1010	vim [protocol]://[user@]hostname/path/
1011<
1012where [protocol] is typically scp or ftp.  As an example, try: >
1013
1014	vim ftp://ftp.home.vim.org/pub/vim/
1015<
1016For local directories, the trailing slash is not required.  Again, because it's
1017easy to miss: to browse remote directories, the URL must terminate with a
1018slash!
1019
1020If you'd like to avoid entering the password repeatedly for remote directory
1021listings with ssh or scp, see |netrw-ssh-hack|.  To avoid password entry with
1022ftp, see |netrw-netrc| (if your ftp supports it).
1023
1024There are several things you can do to affect the browser's display of files:
1025
1026	* To change the listing style, press the "i" key (|netrw-i|).
1027	  Currently there are four styles: thin, long, wide, and tree.
1028	  To make that change "permanent", see |g:netrw_liststyle|.
1029
1030	* To hide files (don't want to see those xyz~ files anymore?) see
1031	  |netrw-ctrl-h|.
1032
1033	* Press s to sort files by name, time, or size.
1034
1035See |netrw-browse-cmds| for all the things you can do with netrw!
1036
1037			*netrw-getftype* *netrw-filigree* *netrw-ftype*
1038The |getftype()| function is used to append a bit of filigree to indicate
1039filetype to locally listed files:
1040
1041	directory  : /
1042	executable : *
1043	fifo       : |
1044	links      : @
1045	sockets    : =
1046
1047The filigree also affects the |g:netrw_sort_sequence|.
1048
1049
1050QUICK HELP						*netrw-quickhelp* {{{2
1051                       (Use ctrl-] to select a topic)~
1052	Intro to Browsing...............................|netrw-intro-browse|
1053	  Quick Reference: Maps.........................|netrw-quickmap|
1054	  Quick Reference: Commands.....................|netrw-browse-cmds|
1055	Hiding
1056	  Edit hiding list..............................|netrw-ctrl-h|
1057	  Hiding Files or Directories...................|netrw-a|
1058	  Hiding/Unhiding by suffix.....................|netrw-mh|
1059	  Hiding  dot-files.............................|netrw-gh|
1060	Listing Style
1061	  Select listing style (thin/long/wide/tree)....|netrw-i|
1062	  Associated setting variable...................|g:netrw_liststyle|
1063	  Shell command used to perform listing.........|g:netrw_list_cmd|
1064	  Quick file info...............................|netrw-qf|
1065	Sorted by
1066	  Select sorting style (name/time/size).........|netrw-s|
1067	  Editing the sorting sequence..................|netrw-S|
1068	  Sorting options...............................|g:netrw_sort_options|
1069	  Associated setting variable...................|g:netrw_sort_sequence|
1070	  Reverse sorting order.........................|netrw-r|
1071
1072
1073				*netrw-quickmap*  *netrw-quickmaps*
1074QUICK REFERENCE: MAPS				*netrw-browse-maps* {{{2
1075>
1076	  ---			-----------------			----
1077	  Map			Quick Explanation			Link
1078	  ---			-----------------			----
1079<	 <F1>	Causes Netrw to issue help
1080	 <cr>	Netrw will enter the directory or read the file      |netrw-cr|
1081	 <del>	Netrw will attempt to remove the file/directory      |netrw-del|
1082	 <c-h>	Edit file hiding list                                |netrw-ctrl-h|
1083	 <c-l>	Causes Netrw to refresh the directory listing        |netrw-ctrl-l|
1084	 <c-r>	Browse using a gvim server                           |netrw-ctrl-r|
1085	 <c-tab> Shrink/expand a netrw/explore window                |netrw-c-tab|
1086	   -	Makes Netrw go up one directory                      |netrw--|
1087	   a	Cycles between normal display,                       |netrw-a|
1088	    	hiding (suppress display of files matching g:netrw_list_hide)
1089	    	and showing (display only files which match g:netrw_list_hide)
1090	   cd	Make browsing directory the current directory        |netrw-cd|
1091	   C	Setting the editing window                           |netrw-C|
1092	   d	Make a directory                                     |netrw-d|
1093	   D	Attempt to remove the file(s)/directory(ies)         |netrw-D|
1094	   gb	Go to previous bookmarked directory                  |netrw-gb|
1095	   gd	Force treatment as directory                         |netrw-gd|
1096	   gf	Force treatment as file                              |netrw-gf|
1097	   gh	Quick hide/unhide of dot-files                       |netrw-gh|
1098	   gn	Make top of tree the directory below the cursor      |netrw-gn|
1099	   gp	Change local-only file permissions                   |netrw-gp|
1100	   i	Cycle between thin, long, wide, and tree listings    |netrw-i|
1101	   I	Toggle the displaying of the banner                  |netrw-I|
1102	   mb	Bookmark current directory                           |netrw-mb|
1103	   mc	Copy marked files to marked-file target directory    |netrw-mc|
1104	   md	Apply diff to marked files (up to 3)                 |netrw-md|
1105	   me	Place marked files on arg list and edit them         |netrw-me|
1106	   mf	Mark a file                                          |netrw-mf|
1107	   mF	Unmark files                                         |netrw-mF|
1108	   mg	Apply vimgrep to marked files                        |netrw-mg|
1109	   mh	Toggle marked file suffices' presence on hiding list |netrw-mh|
1110	   mm	Move marked files to marked-file target directory    |netrw-mm|
1111	   mp	Print marked files                                   |netrw-mp|
1112	   mr	Mark files using a shell-style |regexp|                |netrw-mr|
1113	   mt	Current browsing directory becomes markfile target   |netrw-mt|
1114	   mT	Apply ctags to marked files                          |netrw-mT|
1115	   mu	Unmark all marked files                              |netrw-mu|
1116	   mv	Apply arbitrary vim   command to marked files        |netrw-mv|
1117	   mx	Apply arbitrary shell command to marked files        |netrw-mx|
1118	   mX	Apply arbitrary shell command to marked files en bloc|netrw-mX|
1119	   mz	Compress/decompress marked files                     |netrw-mz|
1120	   o	Enter the file/directory under the cursor in a new   |netrw-o|
1121	    	browser window.  A horizontal split is used.
1122	   O	Obtain a file specified by cursor                    |netrw-O|
1123	   p	Preview the file                                     |netrw-p|
1124	   P	Browse in the previously used window                 |netrw-P|
1125	   qb	List bookmarked directories and history              |netrw-qb|
1126	   qf	Display information on file                          |netrw-qf|
1127	   qF	Mark files using a quickfix list                     |netrw-qF|
1128	   qL	Mark files using a |location-list|                     |netrw-qL|
1129	   r	Reverse sorting order                                |netrw-r|
1130	   R	Rename the designated file(s)/directory(ies)         |netrw-R|
1131	   s	Select sorting style: by name, time, or file size    |netrw-s|
1132	   S	Specify suffix priority for name-sorting             |netrw-S|
1133	   t	Enter the file/directory under the cursor in a new tab|netrw-t|
1134	   u	Change to recently-visited directory                 |netrw-u|
1135	   U	Change to subsequently-visited directory             |netrw-U|
1136	   v	Enter the file/directory under the cursor in a new   |netrw-v|
1137	    	browser window.  A vertical split is used.
1138	   x	View file with an associated program                 |netrw-x|
1139	   X	Execute filename under cursor via |system()|           |netrw-X|
1140
1141	   %	Open a new file in netrw's current directory         |netrw-%|
1142
1143	*netrw-mouse* *netrw-leftmouse* *netrw-middlemouse* *netrw-rightmouse*
1144	<leftmouse>	(gvim only) selects word under mouse as if a <cr>
1145			had been pressed (ie. edit file, change directory)
1146	<middlemouse>	(gvim only) same as P selecting word under mouse;
1147			see |netrw-P|
1148	<rightmouse>	(gvim only) delete file/directory using word under
1149			mouse
1150	<2-leftmouse>	(gvim only) when:
1151			 * in a netrw-selected file, AND
1152			 * |g:netrw_retmap| == 1       AND
1153			 * the user doesn't already have a <2-leftmouse>
1154			   mapping defined before netrw is autoloaded,
1155			then a double clicked leftmouse button will return
1156			to the netrw browser window.  See |g:netrw_retmap|.
1157	<s-leftmouse>	(gvim only) like mf, will mark files.  Dragging
1158			the shifted leftmouse will mark multiple files.
1159			(see |netrw-mf|)
1160
1161	(to disable mouse buttons while browsing: |g:netrw_mousemaps|)
1162
1163				*netrw-quickcom* *netrw-quickcoms*
1164QUICK REFERENCE: COMMANDS	*netrw-explore-cmds* *netrw-browse-cmds* {{{2
1165     :NetrwClean[!]............................................|netrw-clean|
1166     :NetrwSettings............................................|netrw-settings|
1167     :Ntree....................................................|netrw-ntree|
1168     :Explore[!]  [dir] Explore directory of current file......|netrw-explore|
1169     :Hexplore[!] [dir] Horizontal Split & Explore.............|netrw-explore|
1170     :Lexplore[!] [dir] Left Explorer Toggle...................|netrw-explore|
1171     :Nexplore[!] [dir] Vertical Split & Explore...............|netrw-explore|
1172     :Pexplore[!] [dir] Vertical Split & Explore...............|netrw-explore|
1173     :Rexplore          Return to Explorer.....................|netrw-explore|
1174     :Sexplore[!] [dir] Split & Explore directory .............|netrw-explore|
1175     :Texplore[!] [dir] Tab & Explore..........................|netrw-explore|
1176     :Vexplore[!] [dir] Vertical Split & Explore...............|netrw-explore|
1177
1178
1179BANNER DISPLAY						*netrw-I*
1180
1181One may toggle the displaying of the banner by pressing "I".
1182
1183Also See: |g:netrw_banner|
1184
1185
1186BOOKMARKING A DIRECTORY		*netrw-mb* *netrw-bookmark* *netrw-bookmarks* {{{2
1187
1188One may easily "bookmark" the currently browsed directory by using >
1189
1190	mb
1191<
1192								*.netrwbook*
1193Bookmarks are retained in between sessions of vim in a file called .netrwbook
1194as a |List|, which is typically stored in the first directory on the user's
1195'runtimepath'; entries are kept in sorted order.
1196
1197If there are marked files and/or directories, mb will add them to the bookmark
1198list.
1199
1200								*netrw-:NetrwMB*
1201Addtionally, one may use :NetrwMB to bookmark files or directories. >
1202
1203	:NetrwMB[!] [files/directories]
1204
1205< No bang: enters files/directories into Netrw's bookmark system
1206
1207   No argument and in netrw buffer:
1208     if there are marked files        : bookmark marked files
1209     otherwise                        : bookmark file/directory under cursor
1210   No argument and not in netrw buffer: bookmarks current open file
1211   Has arguments                      : |glob()|s each arg and bookmarks them
1212
1213 With bang: deletes files/directories from Netrw's bookmark system
1214
1215The :NetrwMB command is available outside of netrw buffers (once netrw has been
1216invoked in the session).
1217
1218The file ".netrwbook" holds bookmarks when netrw (and vim) is not active.  By
1219default, its stored on the first directory on the user's |'runtimepath'|.
1220
1221Related Topics:
1222	|netrw-gb| how to return (go) to a bookmark
1223	|netrw-mB| how to delete bookmarks
1224	|netrw-qb| how to list bookmarks
1225	|g:netrw_home| controls where .netrwbook is kept
1226
1227
1228BROWSING					*netrw-enter*	*netrw-cr* {{{2
1229
1230Browsing is simple: move the cursor onto a file or directory of interest.
1231Hitting the <cr> (the return key) will select the file or directory.
1232Directories will themselves be listed, and files will be opened using the
1233protocol given in the original read request.
1234
1235  CAVEAT: There are four forms of listing (see |netrw-i|).  Netrw assumes that
1236  two or more spaces delimit filenames and directory names for the long and
1237  wide listing formats.  Thus, if your filename or directory name has two or
1238  more sequential spaces embedded in it, or any trailing spaces, then you'll
1239  need to use the "thin" format to select it.
1240
1241The |g:netrw_browse_split| option, which is zero by default, may be used to
1242cause the opening of files to be done in a new window or tab instead of the
1243default.  When the option is one or two, the splitting will be taken
1244horizontally or vertically, respectively.  When the option is set to three, a
1245<cr> will cause the file to appear in a new tab.
1246
1247
1248When using the gui (gvim), one may select a file by pressing the <leftmouse>
1249button.  In addition, if
1250
1251 * |g:netrw_retmap| == 1       AND   (its default value is 0)
1252 * in a netrw-selected file, AND
1253 * the user doesn't already have a <2-leftmouse> mapping defined before
1254   netrw is loaded
1255
1256then a doubly-clicked leftmouse button will return to the netrw browser
1257window.
1258
1259Netrw attempts to speed up browsing, especially for remote browsing where one
1260may have to enter passwords, by keeping and re-using previously obtained
1261directory listing buffers.  The |g:netrw_fastbrowse| variable is used to
1262control this behavior; one may have slow browsing (no buffer re-use), medium
1263speed browsing (re-use directory buffer listings only for remote directories),
1264and fast browsing (re-use directory buffer listings as often as possible).
1265The price for such re-use is that when changes are made (such as new files
1266are introduced into a directory), the listing may become out-of-date.  One may
1267always refresh directory listing buffers by pressing ctrl-L (see
1268|netrw-ctrl-l|).
1269
1270								*netrw-s-cr*
1271Squeezing the Current Tree-Listing Directory~
1272
1273When the tree listing style is enabled (see |netrw-i|) and one is using
1274gvim, then the <s-cr> mapping may be used to squeeze (close) the
1275directory currently containing the cursor.
1276
1277Otherwise, one may remap a key combination of one's own choice to get
1278this effect: >
1279
1280    nmap <buffer> <silent> <nowait> YOURKEYCOMBO  <Plug>NetrwTreeSqueeze
1281<
1282Put this line in $HOME/ftplugin/netrw/netrw.vim; it needs to be generated
1283for netrw buffers only.
1284
1285Related topics:
1286	|netrw-ctrl-r|	|netrw-o|	|netrw-p|
1287	|netrw-P|	|netrw-t|	|netrw-v|
1288Associated setting variables:
1289   |g:netrw_browse_split|	|g:netrw_fastbrowse|
1290   |g:netrw_ftp_list_cmd|	|g:netrw_ftp_sizelist_cmd|
1291   |g:netrw_ftp_timelist_cmd|	|g:netrw_ssh_browse_reject|
1292   |g:netrw_ssh_cmd|		|g:netrw_use_noswf|
1293
1294
1295BROWSING WITH A HORIZONTALLY SPLIT WINDOW	*netrw-o* *netrw-horiz* {{{2
1296
1297Normally one enters a file or directory using the <cr>.  However, the "o" map
1298allows one to open a new window to hold the new directory listing or file.  A
1299horizontal split is used.  (for vertical splitting, see |netrw-v|)
1300
1301Normally, the o key splits the window horizontally with the new window and
1302cursor at the top.
1303
1304Associated setting variables: |g:netrw_alto| |g:netrw_winsize|
1305
1306Related topics:
1307	|netrw-ctrl-r|	|netrw-o|	|netrw-p|
1308	|netrw-P|	|netrw-t|	|netrw-v|
1309Associated setting variables:
1310   |g:netrw_alto|    control above/below splitting
1311   |g:netrw_winsize| control initial sizing
1312
1313BROWSING WITH A NEW TAB				*netrw-t* {{{2
1314
1315Normally one enters a file or directory using the <cr>.  The "t" map
1316allows one to open a new window holding the new directory listing or file in
1317a new tab.
1318
1319If you'd like to have the new listing in a background tab, use |gT|.
1320
1321Related topics:
1322	|netrw-ctrl-r|	|netrw-o|	|netrw-p|
1323	|netrw-P|	|netrw-t|	|netrw-v|
1324Associated setting variables:
1325   |g:netrw_winsize| control initial sizing
1326
1327BROWSING WITH A VERTICALLY SPLIT WINDOW			*netrw-v* {{{2
1328
1329Normally one enters a file or directory using the <cr>.  However, the "v" map
1330allows one to open a new window to hold the new directory listing or file.  A
1331vertical split is used.  (for horizontal splitting, see |netrw-o|)
1332
1333Normally, the v key splits the window vertically with the new window and
1334cursor at the left.
1335
1336There is only one tree listing buffer; using "v" on a displayed subdirectory
1337will split the screen, but the same buffer will be shown twice.
1338
1339Related topics:
1340	|netrw-ctrl-r|	|netrw-o|	|netrw-p|
1341	|netrw-P|	|netrw-t|	|netrw-v|
1342Associated setting variables:
1343   |g:netrw_altv|    control right/left splitting
1344   |g:netrw_winsize| control initial sizing
1345
1346
1347BROWSING USING A GVIM SERVER			*netrw-ctrl-r* {{{2
1348
1349One may keep a browsing gvim separate from the gvim being used to edit.
1350Use the <c-r> map on a file (not a directory) in the netrw browser, and it
1351will use a gvim server (see |g:netrw_servername|).  Subsequent use of <cr>
1352(see |netrw-cr|) will re-use that server for editing files.
1353
1354Related topics:
1355	|netrw-ctrl-r|	|netrw-o|	|netrw-p|
1356	|netrw-P|	|netrw-t|	|netrw-v|
1357Associated setting variables:
1358	|g:netrw_servername|   : sets name of server
1359	|g:netrw_browse_split| : controls how <cr> will open files
1360
1361
1362CHANGE LISTING STYLE  (THIN LONG WIDE TREE)			*netrw-i* {{{2
1363
1364The "i" map cycles between the thin, long, wide, and tree listing formats.
1365
1366The thin listing format gives just the files' and directories' names.
1367
1368The long listing is either based on the "ls" command via ssh for remote
1369directories or displays the filename, file size (in bytes), and the time and
1370date of last modification for local directories.  With the long listing
1371format, netrw is not able to recognize filenames which have trailing spaces.
1372Use the thin listing format for such files.
1373
1374The wide listing format uses two or more contiguous spaces to delineate
1375filenames; when using that format, netrw won't be able to recognize or use
1376filenames which have two or more contiguous spaces embedded in the name or any
1377trailing spaces.  The thin listing format will, however, work with such files.
1378The wide listing format is the most compact.
1379
1380The tree listing format has a top directory followed by files and directories
1381preceded by one or more "|"s, which indicate the directory depth.  One may
1382open and close directories by pressing the <cr> key while atop the directory
1383name.
1384
1385One may make a preferred listing style your default; see |g:netrw_liststyle|.
1386As an example, by putting the following line in your .vimrc, >
1387	let g:netrw_liststyle= 3
1388the tree style will become your default listing style.
1389
1390One typical way to use the netrw tree display is to: >
1391
1392	vim .
1393	(use i until a tree display shows)
1394	navigate to a file
1395	v  (edit as desired in vertically split window)
1396	ctrl-w h  (to return to the netrw listing)
1397	P (edit newly selected file in the previous window)
1398	ctrl-w h  (to return to the netrw listing)
1399	P (edit newly selected file in the previous window)
1400	...etc...
1401<
1402Associated setting variables: |g:netrw_liststyle| |g:netrw_maxfilenamelen|
1403                              |g:netrw_timefmt|   |g:netrw_list_cmd|
1404
1405CHANGE FILE PERMISSION						*netrw-gp* {{{2
1406
1407"gp" will ask you for a new permission for the file named under the cursor.
1408Currently, this only works for local files.
1409
1410Associated setting variables: |g:netrw_chgperm|
1411
1412
1413CHANGING TO A BOOKMARKED DIRECTORY			*netrw-gb*  {{{2
1414
1415To change directory back to a bookmarked directory, use
1416
1417	{cnt}gb
1418
1419Any count may be used to reference any of the bookmarks.
1420Note that |netrw-qb| shows both bookmarks and history; to go
1421to a location stored in the history see |netrw-u| and |netrw-U|.
1422
1423Related Topics:
1424	|netrw-mB| how to delete bookmarks
1425	|netrw-mb| how to make a bookmark
1426	|netrw-qb| how to list bookmarks
1427
1428
1429CHANGING TO A PREDECESSOR DIRECTORY		*netrw-u* *netrw-updir* {{{2
1430
1431Every time you change to a new directory (new for the current session), netrw
1432will save the directory in a recently-visited directory history list (unless
1433|g:netrw_dirhistmax| is zero; by default, it holds ten entries).  With the "u"
1434map, one can change to an earlier directory (predecessor).  To do the
1435opposite, see |netrw-U|.
1436
1437The "u" map also accepts counts to go back in the history several slots.  For
1438your convenience, qb (see |netrw-qb|) lists the history number which may be
1439used in that count.
1440
1441						*.netrwhist*
1442See |g:netrw_dirhistmax| for how to control the quantity of history stack
1443slots.  The file ".netrwhist" holds history when netrw (and vim) is not
1444active.  By default, its stored on the first directory on the user's
1445|'runtimepath'|.
1446
1447Related Topics:
1448	|netrw-U| changing to a successor directory
1449	|g:netrw_home| controls where .netrwhist is kept
1450
1451
1452CHANGING TO A SUCCESSOR DIRECTORY		*netrw-U* *netrw-downdir* {{{2
1453
1454With the "U" map, one can change to a later directory (successor).
1455This map is the opposite of the "u" map. (see |netrw-u|)  Use the
1456qb map to list both the bookmarks and history. (see |netrw-qb|)
1457
1458The "U" map also accepts counts to go forward in the history several slots.
1459
1460See |g:netrw_dirhistmax| for how to control the quantity of history stack
1461slots.
1462
1463
1464CHANGING TREE TOP			*netrw-ntree*  *:Ntree*  *netrw-gn* {{{2
1465
1466One may specify a new tree top for tree listings using >
1467
1468	:Ntree [dirname]
1469
1470Without a "dirname", the current line is used (and any leading depth
1471information is elided).
1472With a "dirname", the specified directory name is used.
1473
1474The "gn" map will take the word below the cursor and use that for
1475changing the top of the tree listing.
1476
1477
1478NETRW CLEAN					*netrw-clean* *:NetrwClean* {{{2
1479
1480With :NetrwClean one may easily remove netrw from one's home directory;
1481more precisely, from the first directory on your |'runtimepath'|.
1482
1483With :NetrwClean!, netrw will attempt to remove netrw from all directories on
1484your |'runtimepath'|.  Of course, you have to have write/delete permissions
1485correct to do this.
1486
1487With either form of the command, netrw will first ask for confirmation
1488that the removal is in fact what you want to do.  If netrw doesn't have
1489permission to remove a file, it will issue an error message.
1490
1491						*netrw-gx*
1492CUSTOMIZING BROWSING WITH A SPECIAL HANDLER	*netrw-x* *netrw-handler* {{{2
1493						(also see |netrw_filehandler|)
1494
1495Certain files, such as html, gif, jpeg, (word/office) doc, etc, files, are
1496best seen with a special handler (ie. a tool provided with your computer's
1497operating system).  Netrw allows one to invoke such special handlers by: >
1498
1499	* when Exploring, hit the "x" key
1500	* when editing, hit gx with the cursor atop the special filename
1501<	  (latter not available if the |g:netrw_nogx| variable exists)
1502
1503Netrw determines which special handler by the following method:
1504
1505  * if |g:netrw_browsex_viewer| exists, then it will be used to attempt to
1506    view files.  Examples of useful settings (place into your <.vimrc>): >
1507
1508	:let g:netrw_browsex_viewer= "kfmclient exec"
1509<   or >
1510	:let g:netrw_browsex_viewer= "xdg-open"
1511<
1512    If g:netrw_browsex_viewer == '-', then netrwFileHandlers#Invoke() will be
1513    used instead (see |netrw_filehandler|).
1514
1515    If the viewer you wish to use does not support handling of a remote URL
1516    directory, set |g:netrw_browsex_support_remote| to 0.
1517  * for Windows 32 or 64, the URL and FileProtocolHandler dlls are used.
1518  * for Gnome (with gnome-open): gnome-open is used.
1519  * for KDE (with kfmclient)   : kfmclient is used
1520  * for Mac OS X               : open is used.
1521  * otherwise the netrwFileHandler plugin is used.
1522
1523The file's suffix is used by these various approaches to determine an
1524appropriate application to use to "handle" these files.  Such things as
1525OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript (*.ps,
1526*.eps) can be handled.
1527
1528The gx mapping extends to all buffers; apply "gx" while atop a word and netrw
1529will apply a special handler to it (like "x" works when in a netrw buffer).
1530One may also use visual mode (see |visual-start|) to select the text that the
1531special handler will use.  Normally gx uses expand("<cfile>") to pick up the
1532text under the cursor; one may change what |expand()| uses via the
1533|g:netrw_gx| variable (options include "<cword>", "<cWORD>").  Note that
1534expand("<cfile>") depends on the |'isfname'| setting.  Alternatively, one may
1535select the text to be used by gx by making a visual selection (see
1536|visual-block|) and then pressing gx.
1537
1538Associated setting variables:
1539	|g:netrw_gx|	control how gx picks up the text under the cursor
1540	|g:netrw_nogx|	prevent gx map while editing
1541	|g:netrw_suppress_gx_mesg| controls gx's suppression of browser messages
1542
1543							*netrw_filehandler*
1544
1545When |g:netrw_browsex_viewer| exists and is "-", then netrw will attempt to
1546handle the special file with a vim function.  The "x" map applies a function
1547to a file, based on its extension.  Of course, the handler function must exist
1548for it to be called!
1549>
1550 Ex. mypgm.html   x -> NFH_html("scp://user@host/some/path/mypgm.html")
1551
1552<	Users may write their own netrw File Handler functions to
1553	support more suffixes with special handling.  See
1554	<autoload/netrwFileHandlers.vim> for examples on how to make
1555	file handler functions.   As an example: >
1556
1557	" NFH_suffix(filename)
1558	fun! NFH_suffix(filename)
1559	..do something special with filename..
1560	endfun
1561<
1562These functions need to be defined in some file in your .vim/plugin
1563(vimfiles\plugin) directory.  Vim's function names may not have punctuation
1564characters (except for the underscore) in them.  To support suffices that
1565contain such characters, netrw will first convert the suffix using the
1566following table: >
1567
1568    @ -> AT       ! -> EXCLAMATION    % -> PERCENT
1569    : -> COLON    = -> EQUAL          ? -> QUESTION
1570    , -> COMMA    - -> MINUS          ; -> SEMICOLON
1571    $ -> DOLLAR   + -> PLUS           ~ -> TILDE
1572<
1573So, for example: >
1574
1575	file.rcs,v  ->  NFH_rcsCOMMAv()
1576<
1577If more such translations are necessary, please send me email: >
1578		[email protected]
1579with a request.  (remove the embedded NOSPAM first)
1580
1581Associated setting variable: |g:netrw_browsex_viewer|
1582
1583							*netrw-curdir*
1584DELETING BOOKMARKS					*netrw-mB* {{{2
1585
1586To delete a bookmark, use >
1587
1588	{cnt}mB
1589
1590If there are marked files, then mB will remove them from the
1591bookmark list.
1592
1593Alternatively, one may use :NetrwMB! (see |netrw-:NetrwMB|). >
1594
1595	:NetrwMB! [files/directories]
1596
1597Related Topics:
1598	|netrw-gb| how to return (go) to a bookmark
1599	|netrw-mb| how to make a bookmark
1600	|netrw-qb| how to list bookmarks
1601
1602
1603DELETING FILES OR DIRECTORIES	*netrw-delete* *netrw-D* *netrw-del* {{{2
1604
1605If files have not been marked with |netrw-mf|:   (local marked file list)
1606
1607    Deleting/removing files and directories involves moving the cursor to the
1608    file/directory to be deleted and pressing "D".  Directories must be empty
1609    first before they can be successfully removed.  If the directory is a
1610    softlink to a directory, then netrw will make two requests to remove the
1611    directory before succeeding.  Netrw will ask for confirmation before doing
1612    the removal(s).  You may select a range of lines with the "V" command
1613    (visual selection), and then pressing "D".
1614
1615If files have been marked with |netrw-mf|:   (local marked file list)
1616
1617    Marked files (and empty directories) will be deleted; again, you'll be
1618    asked to confirm the deletion before it actually takes place.
1619
1620A further approach is to delete files which match a pattern.
1621
1622    * use  :MF pattern  (see |netrw-:MF|); then press "D".
1623
1624    * use mr (see |netrw-mr|) which will prompt you for pattern.
1625      This will cause the matching files to be marked.  Then,
1626      press "D".
1627
1628If your vim has 7.4 with patch#1107, then |g:netrw_localrmdir| no longer
1629is used to remove directories; instead, vim's |delete()| is used with
1630the "d" option.  Please note that only empty directories may be deleted
1631with the "D" mapping.  Regular files are deleted with |delete()|, too.
1632
1633The |g:netrw_rm_cmd|, |g:netrw_rmf_cmd|, and |g:netrw_rmdir_cmd| variables are
1634used to control the attempts to remove remote files and directories.  The
1635g:netrw_rm_cmd is used with files, and its default value is:
1636
1637	g:netrw_rm_cmd: ssh HOSTNAME rm
1638
1639The g:netrw_rmdir_cmd variable is used to support the removal of directories.
1640Its default value is:
1641
1642	|g:netrw_rmdir_cmd|: ssh HOSTNAME rmdir
1643
1644If removing a directory fails with g:netrw_rmdir_cmd, netrw then will attempt
1645to remove it again using the g:netrw_rmf_cmd variable.  Its default value is:
1646
1647	|g:netrw_rmf_cmd|: ssh HOSTNAME rm -f
1648
1649Related topics: |netrw-d|
1650Associated setting variable: |g:netrw_localrmdir| |g:netrw_rm_cmd|
1651                             |g:netrw_rmdir_cmd|   |g:netrw_ssh_cmd|
1652
1653
1654*netrw-explore*  *netrw-hexplore* *netrw-nexplore* *netrw-pexplore*
1655*netrw-rexplore* *netrw-sexplore* *netrw-texplore* *netrw-vexplore* *netrw-lexplore*
1656DIRECTORY EXPLORATION COMMANDS  {{{2
1657
1658     :[N]Explore[!]  [dir]... Explore directory of current file      *:Explore*
1659     :[N]Hexplore[!] [dir]... Horizontal Split & Explore             *:Hexplore*
1660     :[N]Lexplore[!] [dir]... Left Explorer Toggle                   *:Lexplore*
1661     :[N]Sexplore[!] [dir]... Split&Explore current file's directory *:Sexplore*
1662     :[N]Vexplore[!] [dir]... Vertical   Split & Explore             *:Vexplore*
1663     :Texplore       [dir]... Tab & Explore                          *:Texplore*
1664     :Rexplore            ... Return to/from Explorer                *:Rexplore*
1665
1666     Used with :Explore **/pattern : (also see |netrw-starstar|)
1667     :Nexplore............. go to next matching file                *:Nexplore*
1668     :Pexplore............. go to previous matching file            *:Pexplore*
1669
1670						*netrw-:Explore*
1671:Explore  will open the local-directory browser on the current file's
1672          directory (or on directory [dir] if specified).  The window will be
1673	  split only if the file has been modified and |'hidden'| is not set,
1674	  otherwise the browsing window will take over that window.  Normally
1675	  the splitting is taken horizontally.
1676	  Also see: |netrw-:Rexplore|
1677:Explore! is like :Explore, but will use vertical splitting.
1678
1679						*netrw-:Hexplore*
1680:Hexplore  [dir] does an :Explore with |:belowright| horizontal splitting.
1681:Hexplore! [dir] does an :Explore with |:aboveleft|  horizontal splitting.
1682
1683						*netrw-:Lexplore*
1684:[N]Lexplore [dir] toggles a full height Explorer window on the left hand side
1685	  of the current tab.  It will open a netrw window on the current
1686	  directory if [dir] is omitted; a :Lexplore [dir] will show the
1687	  specified directory in the left-hand side browser display no matter
1688	  from which window the command is issued.
1689
1690	  By default, :Lexplore will change an uninitialized |g:netrw_chgwin|
1691	  to 2; edits will thus preferentially be made in window#2.
1692
1693	  The [N] specifies a |g:netrw_winsize| just for the new :Lexplore
1694	  window.
1695
1696	  Those who like this method often also like tree style displays;
1697	  see |g:netrw_liststyle|.
1698
1699:[N]Lexplore! [dir] is similar to :Lexplore, except that the full-height
1700	  Explorer window will open on the right hand side and an
1701	  uninitialized |g:netrw_chgwin| will be set to 1 (eg. edits will
1702	  preferentially occur in the leftmost window).
1703
1704	  Also see: |netrw-C|           |g:netrw_browse_split|   |g:netrw_wiw|
1705		    |netrw-p| |netrw-P|   |g:netrw_chgwin|
1706		    |netrw-c-tab|       |g:netrw_winsize|
1707
1708						*netrw-:Sexplore*
1709:[N]Sexplore will always split the window before invoking the local-directory
1710	  browser.  As with Explore, the splitting is normally done
1711	  horizontally.
1712:[N]Sexplore! [dir] is like :Sexplore, but the splitting will be done vertically.
1713
1714						*netrw-:Texplore*
1715:Texplore  [dir] does a |:tabnew| before generating the browser window
1716
1717						*netrw-:Vexplore*
1718:[N]Vexplore  [dir] does an :Explore with |:leftabove|  vertical splitting.
1719:[N]Vexplore! [dir] does an :Explore with |:rightbelow| vertical splitting.
1720
1721The optional parameters are:
1722
1723 [N]: This parameter will override |g:netrw_winsize| to specify the quantity of
1724      rows and/or columns the new explorer window should have.
1725      Otherwise, the |g:netrw_winsize| variable, if it has been specified by the
1726      user, is used to control the quantity of rows and/or columns new
1727      explorer windows should have.
1728
1729 [dir]: By default, these explorer commands use the current file's directory.
1730        However, one may explicitly provide a directory (path) to use instead;
1731	ie. >
1732
1733	:Explore /some/path
1734<
1735						*netrw-:Rexplore*
1736:Rexplore  This command is a little different from the other Explore commands
1737	   as it doesn't necessarily open an Explorer window.
1738
1739	   Return to Explorer~
1740	   When one edits a file using netrw which can occur, for example,
1741	   when pressing <cr> while the cursor is atop a filename in a netrw
1742	   browser window, a :Rexplore issued while editing that file will
1743	   return the display to that of the last netrw browser display in
1744	   that window.
1745
1746	   Return from Explorer~
1747	   Conversely, when one is editing a directory, issuing a :Rexplore
1748	   will return to editing the file that was last edited in that
1749	   window.
1750
1751	   The <2-leftmouse> map (which is only available under gvim and
1752	   cooperative terms) does the same as :Rexplore.
1753
1754Also see: |g:netrw_alto| |g:netrw_altv| |g:netrw_winsize|
1755
1756
1757*netrw-star* *netrw-starpat* *netrw-starstar* *netrw-starstarpat* *netrw-grep*
1758EXPLORING WITH STARS AND PATTERNS {{{2
1759
1760When Explore, Sexplore, Hexplore, or Vexplore are used with one of the
1761following four patterns Explore generates a list of files which satisfy the
1762request for the local file system.  These exploration patterns will not work
1763with remote file browsing.
1764
1765    */filepat	files in current directory which satisfy filepat
1766    **/filepat	files in current directory or below which satisfy the
1767		file pattern
1768    *//pattern	files in the current directory which contain the
1769		pattern (vimgrep is used)
1770    **//pattern	files in the current directory or below which contain
1771		the pattern (vimgrep is used)
1772<
1773The cursor will be placed on the first file in the list.  One may then
1774continue to go to subsequent files on that list via |:Nexplore| or to
1775preceding files on that list with |:Pexplore|.  Explore will update the
1776directory and place the cursor appropriately.
1777
1778A plain >
1779	:Explore
1780will clear the explore list.
1781
1782If your console or gui produces recognizable shift-up or shift-down sequences,
1783then you'll likely find using shift-downarrow and shift-uparrow convenient.
1784They're mapped by netrw as follows:
1785
1786	<s-down>  == Nexplore, and
1787	<s-up>    == Pexplore.
1788
1789As an example, consider
1790>
1791	:Explore */*.c
1792	:Nexplore
1793	:Nexplore
1794	:Pexplore
1795<
1796The status line will show, on the right hand side of the status line, a
1797message like "Match 3 of 20".
1798
1799Associated setting variables:
1800	|g:netrw_keepdir|          |g:netrw_browse_split|
1801	|g:netrw_fastbrowse|       |g:netrw_ftp_browse_reject|
1802	|g:netrw_ftp_list_cmd|     |g:netrw_ftp_sizelist_cmd|
1803	|g:netrw_ftp_timelist_cmd| |g:netrw_list_cmd|
1804	|g:netrw_liststyle|
1805
1806
1807DISPLAYING INFORMATION ABOUT FILE				*netrw-qf* {{{2
1808
1809With the cursor atop a filename, pressing "qf" will reveal the file's size
1810and last modification timestamp.  Currently this capability is only available
1811for local files.
1812
1813
1814EDIT FILE OR DIRECTORY HIDING LIST	*netrw-ctrl-h* *netrw-edithide* {{{2
1815
1816The "<ctrl-h>" map brings up a requestor allowing the user to change the
1817file/directory hiding list contained in |g:netrw_list_hide|.  The hiding list
1818consists of one or more patterns delimited by commas.  Files and/or
1819directories satisfying these patterns will either be hidden (ie. not shown) or
1820be the only ones displayed (see |netrw-a|).
1821
1822The "gh" mapping (see |netrw-gh|) quickly alternates between the usual
1823hiding list and the hiding of files or directories that begin with ".".
1824
1825As an example, >
1826	let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+'
1827Effectively, this makes the effect of a |netrw-gh| command the initial setting.
1828What it means:
1829
1830	\(^\|\s\s\)   : if the line begins with the following, -or-
1831	                two consecutive spaces are encountered
1832	\zs           : start the hiding match now
1833	\.            : if it now begins with a dot
1834	\S\+          : and is followed by one or more non-whitespace
1835	                characters
1836
1837Associated setting variables: |g:netrw_hide| |g:netrw_list_hide|
1838Associated topics: |netrw-a| |netrw-gh| |netrw-mh|
1839
1840					*netrw-sort-sequence*
1841EDITING THE SORTING SEQUENCE		*netrw-S* *netrw-sortsequence* {{{2
1842
1843When "Sorted by" is name, one may specify priority via the sorting sequence
1844(g:netrw_sort_sequence).  The sorting sequence typically prioritizes the
1845name-listing by suffix, although any pattern will do.  Patterns are delimited
1846by commas.  The default sorting sequence is (all one line):
1847
1848For Unix: >
1849	'[\/]$,\<core\%(\.\d\+\)\=,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,
1850	\.info$,\.swp$,\.bak$,\~$'
1851<
1852Otherwise: >
1853	'[\/]$,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,
1854	\.swp$,\.bak$,\~$'
1855<
1856The lone * is where all filenames not covered by one of the other patterns
1857will end up.  One may change the sorting sequence by modifying the
1858g:netrw_sort_sequence variable (either manually or in your <.vimrc>) or by
1859using the "S" map.
1860
1861Related topics:               |netrw-s|               |netrw-S|
1862Associated setting variables: |g:netrw_sort_sequence| |g:netrw_sort_options|
1863
1864
1865EXECUTING FILE UNDER CURSOR VIA SYSTEM()			*netrw-X* {{{2
1866
1867Pressing X while the cursor is atop an executable file will yield a prompt
1868using the filename asking for any arguments.  Upon pressing a [return], netrw
1869will then call |system()| with that command and arguments.  The result will be
1870displayed by |:echomsg|, and so |:messages| will repeat display of the result.
1871Ansi escape sequences will be stripped out.
1872
1873See |cmdline-window| for directions for more on how to edit the arguments.
1874
1875
1876FORCING TREATMENT AS A FILE OR DIRECTORY	*netrw-gd* *netrw-gf* {{{2
1877
1878Remote symbolic links (ie. those listed via ssh or ftp) are problematic
1879in that it is difficult to tell whether they link to a file or to a
1880directory.
1881
1882To force treatment as a file: use >
1883	gf
1884<
1885To force treatment as a directory: use >
1886	gd
1887<
1888
1889GOING UP							*netrw--* {{{2
1890
1891To go up a directory, press "-" or press the <cr> when atop the ../ directory
1892entry in the listing.
1893
1894Netrw will use the command in |g:netrw_list_cmd| to perform the directory
1895listing operation after changing HOSTNAME to the host specified by the
1896user-prpvided url.  By default netrw provides the command as: >
1897
1898	ssh HOSTNAME ls -FLa
1899<
1900where the HOSTNAME becomes the [user@]hostname as requested by the attempt to
1901read.  Naturally, the user may override this command with whatever is
1902preferred.  The NetList function which implements remote browsing
1903expects that directories will be flagged by a trailing slash.
1904
1905
1906HIDING FILES OR DIRECTORIES			*netrw-a* *netrw-hiding* {{{2
1907
1908Netrw's browsing facility allows one to use the hiding list in one of three
1909ways: ignore it, hide files which match, and show only those files which
1910match.
1911
1912If no files have been marked via |netrw-mf|:
1913
1914The "a" map allows the user to cycle through the three hiding modes.
1915
1916The |g:netrw_list_hide| variable holds a comma delimited list of patterns
1917based on regular expressions (ex. ^.*\.obj$,^\.) which specify the hiding list.
1918(also see |netrw-ctrl-h|)  To set the hiding list, use the <c-h> map.  As an
1919example, to hide files which begin with a ".", one may use the <c-h> map to
1920set the hiding list to '^\..*' (or one may put let g:netrw_list_hide= '^\..*'
1921in one's <.vimrc>).  One may then use the "a" key to show all files, hide
1922matching files, or to show only the matching files.
1923
1924	Example: \.[ch]$
1925		This hiding list command will hide/show all *.c and *.h files.
1926
1927	Example: \.c$,\.h$
1928		This hiding list command will also hide/show all *.c and *.h
1929		files.
1930
1931Don't forget to use the "a" map to select the mode (normal/hiding/show) you
1932want!
1933
1934If files have been marked using |netrw-mf|, then this command will:
1935
1936  if showing all files or non-hidden files:
1937   modify the g:netrw_list_hide list by appending the marked files to it
1938   and showing only non-hidden files.
1939
1940  else if showing hidden files only:
1941   modify the g:netrw_list_hide list by removing the marked files from it
1942   and showing only non-hidden files.
1943  endif
1944
1945					*netrw-gh* *netrw-hide*
1946As a quick shortcut, one may press >
1947	gh
1948to toggle between hiding files which begin with a period (dot) and not hiding
1949them.
1950
1951Associated setting variables: |g:netrw_list_hide|  |g:netrw_hide|
1952Associated topics: |netrw-a| |netrw-ctrl-h| |netrw-mh|
1953
1954					*netrw-gitignore*
1955Netrw provides a helper function 'netrw_gitignore#Hide()' that, when used with
1956|g:netrw_list_hide| automatically hides all git-ignored files.
1957
1958'netrw_gitignore#Hide' searches for patterns in the following files: >
1959
1960	'./.gitignore'
1961	'./.git/info/exclude'
1962	global gitignore file: `git config --global core.excludesfile`
1963	system gitignore file: `git config --system core.excludesfile`
1964<
1965Files that do not exist, are ignored.
1966Git-ignore patterns are taken from existing files, and converted to patterns for
1967hiding files. For example, if you had '*.log' in your '.gitignore' file, it
1968would be converted to '.*\.log'.
1969
1970To use this function, simply assign its output to |g:netrw_list_hide| option.  >
1971
1972	Example: let g:netrw_list_hide= netrw_gitignore#Hide()
1973		Git-ignored files are hidden in Netrw.
1974
1975	Example: let g:netrw_list_hide= netrw_gitignore#Hide('my_gitignore_file')
1976		Function can take additional files with git-ignore patterns.
1977
1978	Example: g:netrw_list_hide= netrw_gitignore#Hide() . '.*\.swp$'
1979		Combining 'netrw_gitignore#Hide' with custom patterns.
1980<
1981
1982IMPROVING BROWSING			*netrw-listhack* *netrw-ssh-hack* {{{2
1983
1984Especially with the remote directory browser, constantly entering the password
1985is tedious.
1986
1987For Linux/Unix systems, the book "Linux Server Hacks - 100 industrial strength
1988tips & tools" by Rob Flickenger (O'Reilly, ISBN 0-596-00461-3) gives a tip
1989for setting up no-password ssh and scp and discusses associated security
1990issues.  It used to be available at http://hacks.oreilly.com/pub/h/66 ,
1991but apparently that address is now being redirected to some "hackzine".
1992I'll attempt a summary based on that article and on a communication from
1993Ben Schmidt:
1994
1995	1. Generate a public/private key pair on the local machine
1996	   (ssh client): >
1997		ssh-keygen -t rsa
1998		(saving the file in ~/.ssh/id_rsa as prompted)
1999<
2000	2. Just hit the <CR> when asked for passphrase (twice) for no
2001	   passphrase.  If you do use a passphrase, you will also need to use
2002	   ssh-agent so you only have to type the passphrase once per session.
2003	   If you don't use a passphrase, simply logging onto your local
2004	   computer or getting access to the keyfile in any way will suffice
2005	   to access any ssh servers which have that key authorized for login.
2006
2007	3. This creates two files: >
2008		~/.ssh/id_rsa
2009		~/.ssh/id_rsa.pub
2010<
2011	4. On the target machine (ssh server): >
2012		cd
2013		mkdir -p .ssh
2014		chmod 0700 .ssh
2015<
2016	5. On your local machine (ssh client): (one line) >
2017		ssh {serverhostname}
2018		  cat '>>' '~/.ssh/authorized_keys2' < ~/.ssh/id_rsa.pub
2019<
2020	   or, for OpenSSH, (one line) >
2021		ssh {serverhostname}
2022		  cat '>>' '~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub
2023<
2024You can test it out with >
2025	ssh {serverhostname}
2026and you should be log onto the server machine without further need to type
2027anything.
2028
2029If you decided to use a passphrase, do: >
2030	ssh-agent $SHELL
2031	ssh-add
2032	ssh {serverhostname}
2033You will be prompted for your key passphrase when you use ssh-add, but not
2034subsequently when you use ssh.  For use with vim, you can use >
2035	ssh-agent vim
2036and, when next within vim, use >
2037	:!ssh-add
2038Alternatively, you can apply ssh-agent to the terminal you're planning on
2039running vim in: >
2040	ssh-agent xterm &
2041and do ssh-add whenever you need.
2042
2043For Windows, folks on the vim mailing list have mentioned that Pageant helps
2044with avoiding the constant need to enter the password.
2045
2046Kingston Fung wrote about another way to avoid constantly needing to enter
2047passwords:
2048
2049    In order to avoid the need to type in the password for scp each time, you
2050    provide a hack in the docs to set up a non password ssh account. I found a
2051    better way to do that: I can use a regular ssh account which uses a
2052    password to access the material without the need to key-in the password
2053    each time. It's good for security and convenience. I tried ssh public key
2054    authorization + ssh-agent, implementing this, and it works! Here are two
2055    links with instructions:
2056
2057    http://www.ibm.com/developerworks/library/l-keyc2/
2058    http://sial.org/howto/openssh/publickey-auth/
2059
2060
2061    Ssh hints:
2062
2063	Thomer Gil has provided a hint on how to speed up netrw+ssh:
2064	    http://thomer.com/howtos/netrw_ssh.html
2065
2066	Alex Young has several hints on speeding ssh up:
2067	    http://usevim.com/2012/03/16/editing-remote-files/
2068
2069
2070LISTING BOOKMARKS AND HISTORY		*netrw-qb* *netrw-listbookmark* {{{2
2071
2072Pressing "qb" (query bookmarks) will list both the bookmarked directories and
2073directory traversal history.
2074
2075Related Topics:
2076	|netrw-gb| how to return (go) to a bookmark
2077	|netrw-mb| how to make a bookmark
2078	|netrw-mB| how to delete bookmarks
2079	|netrw-u|  change to a predecessor directory via the history stack
2080	|netrw-U|  change to a successor   directory via the history stack
2081
2082MAKING A NEW DIRECTORY					*netrw-d* {{{2
2083
2084With the "d" map one may make a new directory either remotely (which depends
2085on the global variable g:netrw_mkdir_cmd) or locally (which depends on the
2086global variable g:netrw_localmkdir).  Netrw will issue a request for the new
2087directory's name.  A bare <CR> at that point will abort the making of the
2088directory.  Attempts to make a local directory that already exists (as either
2089a file or a directory) will be detected, reported on, and ignored.
2090
2091Related topics: |netrw-D|
2092Associated setting variables:	|g:netrw_localmkdir|   |g:netrw_mkdir_cmd|
2093				|g:netrw_remote_mkdir| |netrw-%|
2094
2095
2096MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY	*netrw-cd* {{{2
2097
2098By default, |g:netrw_keepdir| is 1.  This setting means that the current
2099directory will not track the browsing directory. (done for backwards
2100compatibility with v6's file explorer).
2101
2102Setting g:netrw_keepdir to 0 tells netrw to make vim's current directory
2103track netrw's browsing directory.
2104
2105However, given the default setting for g:netrw_keepdir of 1 where netrw
2106maintains its own separate notion of the current directory, in order to make
2107the two directories the same, use the "cd" map (type cd).  That map will
2108set Vim's notion of the current directory to netrw's current browsing
2109directory.
2110
2111|netrw-cd| : This map's name was changed from "c" to cd (see |netrw-cd|).
2112           This change was done to allow for |netrw-cb| and |netrw-cB| maps.
2113
2114Associated setting variable: |g:netrw_keepdir|
2115
2116MARKING FILES					*netrw-:MF*	*netrw-mf* {{{2
2117	(also see |netrw-mr|)
2118
2119Netrw provides several ways to mark files:
2120
2121	* One may mark files with the cursor atop a filename and
2122	  then pressing "mf".
2123
2124	* With gvim, in addition one may mark files with
2125	  <s-leftmouse>. (see |netrw-mouse|)
2126
2127	* One may use the :MF command, which takes a list of
2128	  files (for local directories, the list may include
2129	  wildcards -- see |glob()|) >
2130
2131		:MF *.c
2132<
2133	  (Note that :MF uses |<f-args>| to break the line
2134	  at spaces)
2135
2136	* Mark files using the |argument-list| (|netrw-mA|)
2137
2138	* Mark files based upon a |location-list| (|netrw-qL|)
2139
2140	* Mark files based upon the quickfix list (|netrw-qF|)
2141	  (|quickfix-error-lists|)
2142
2143The following netrw maps make use of marked files:
2144
2145    |netrw-a|	Hide marked files/directories
2146    |netrw-D|	Delete marked files/directories
2147    |netrw-ma|	Move marked files' names to |arglist|
2148    |netrw-mA|	Move |arglist| filenames to marked file list
2149    |netrw-mb|	Append marked files to bookmarks
2150    |netrw-mB|	Delete marked files from bookmarks
2151    |netrw-mc|	Copy marked files to target
2152    |netrw-md|	Apply vimdiff to marked files
2153    |netrw-me|	Edit marked files
2154    |netrw-mF|	Unmark marked files
2155    |netrw-mg|	Apply vimgrep to marked files
2156    |netrw-mm|	Move marked files to target
2157    |netrw-mp|	Print marked files
2158    |netrw-ms|	Netrw will source marked files
2159    |netrw-mt|	Set target for |netrw-mm| and |netrw-mc|
2160    |netrw-mT|	Generate tags using marked files
2161    |netrw-mv|	Apply vim command to marked files
2162    |netrw-mx|	Apply shell command to marked files
2163    |netrw-mX|	Apply shell command to marked files, en bloc
2164    |netrw-mz|	Compress/Decompress marked files
2165    |netrw-O|	Obtain marked files
2166    |netrw-R|	Rename marked files
2167
2168One may unmark files one at a time the same way one marks them; ie. place
2169the cursor atop a marked file and press "mf".  This process also works
2170with <s-leftmouse> using gvim.  One may unmark all files by pressing
2171"mu" (see |netrw-mu|).
2172
2173Marked files are highlighted using the "netrwMarkFile" highlighting group,
2174which by default is linked to "Identifier" (see Identifier under
2175|group-name|).  You may change the highlighting group by putting something
2176like >
2177
2178	highlight clear netrwMarkFile
2179	hi link netrwMarkFile ..whatever..
2180<
2181into $HOME/.vim/after/syntax/netrw.vim .
2182
2183If the mouse is enabled and works with your vim, you may use <s-leftmouse> to
2184mark one or more files.  You may mark multiple files by dragging the shifted
2185leftmouse.  (see |netrw-mouse|)
2186
2187			*markfilelist* *global_markfilelist* *local_markfilelist*
2188All marked files are entered onto the global marked file list; there is only
2189one such list.  In addition, every netrw buffer also has its own buffer-local
2190marked file list; since netrw buffers are associated with specific
2191directories, this means that each directory has its own local marked file
2192list.  The various commands which operate on marked files use one or the other
2193of the marked file lists.
2194
2195Known Problem: if one is using tree mode (|g:netrw_liststyle|) and several
2196directories have files with the same name,  then marking such a file will
2197result in all such files being highlighted as if they were all marked.  The
2198|markfilelist|, however, will only have the selected file in it.  This problem
2199is unlikely to be fixed.
2200
2201
2202UNMARKING FILES							*netrw-mF* {{{2
2203	(also see |netrw-mf|, |netrw-mu|)
2204
2205The "mF" command will unmark all files in the current buffer.  One may also use
2206mf (|netrw-mf|) on a specific, already marked, file to unmark just that file.
2207
2208MARKING FILES BY LOCATION LIST					*netrw-qL* {{{2
2209	(also see |netrw-mf|)
2210
2211One may convert |location-list|s into a marked file list using "qL".
2212You may then proceed with commands such as me (|netrw-me|) to edit them.
2213
2214
2215MARKING FILES BY QUICKFIX LIST					*netrw-qF* {{{2
2216	(also see |netrw-mf|)
2217
2218One may convert |quickfix-error-lists| into a marked file list using "qF".
2219You may then proceed with commands such as me (|netrw-me|) to edit them.
2220Quickfix error lists are generated, for example, by calls to |:vimgrep|.
2221
2222
2223MARKING FILES BY REGULAR EXPRESSION				*netrw-mr* {{{2
2224	(also see |netrw-mf|)
2225
2226One may also mark files by pressing "mr"; netrw will then issue a prompt,
2227"Enter regexp: ".  You may then enter a shell-style regular expression such
2228as *.c$ (see |glob()|).  For remote systems, glob() doesn't work -- so netrw
2229converts "*" into ".*" (see |regexp|) and marks files based on that.  In the
2230future I may make it possible to use |regexp|s instead of glob()-style
2231expressions (yet-another-option).
2232
2233See |cmdline-window| for directions on more on how to edit the regular
2234expression.
2235
2236
2237MARKED FILES, ARBITRARY VIM COMMAND				*netrw-mv*  {{{2
2238	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2239		      (uses the local marked-file list)
2240
2241The "mv" map causes netrw to execute an arbitrary vim command on each file on
2242the local marked file list, individually:
2243
2244	* 1split
2245	* sil! keepalt e file
2246	* run vim command
2247	* sil! keepalt wq!
2248
2249A prompt, "Enter vim command: ", will be issued to elicit the vim command you
2250wish used.  See |cmdline-window| for directions for more on how to edit the
2251command.
2252
2253
2254MARKED FILES, ARBITRARY SHELL COMMAND				*netrw-mx* {{{2
2255	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2256		      (uses the local marked-file list)
2257
2258Upon activation of the "mx" map, netrw will query the user for some (external)
2259command to be applied to all marked files.  All "%"s in the command will be
2260substituted with the name of each marked file in turn.  If no "%"s are in the
2261command, then the command will be followed by a space and a marked filename.
2262
2263Example:
2264	(mark files)
2265	mx
2266	Enter command: cat
2267
2268	The result is a series of shell commands:
2269	cat 'file1'
2270	cat 'file2'
2271	...
2272
2273
2274MARKED FILES, ARBITRARY SHELL COMMAND, EN BLOC 			*netrw-mX* {{{2
2275	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2276		      (uses the global marked-file list)
2277
2278Upon activation of the 'mX' map, netrw will query the user for some (external)
2279command to be applied to all marked files on the global marked file list.  The
2280"en bloc" means that one command will be executed on all the files at once: >
2281
2282	command files
2283
2284This approach is useful, for example, to select files and make a tarball: >
2285
2286	(mark files)
2287	mX
2288	Enter command: tar cf mynewtarball.tar
2289<
2290The command that will be run with this example:
2291
2292	tar cf mynewtarball.tar 'file1' 'file2' ...
2293
2294
2295MARKED FILES: ARGUMENT LIST				*netrw-ma* *netrw-mA*
2296	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2297		      (uses the global marked-file list)
2298
2299Using ma, one moves filenames from the marked file list to the argument list.
2300Using mA, one moves filenames from the argument list to the marked file list.
2301
2302See Also: |netrw-cb| |netrw-cB| |netrw-qF| |argument-list| |:args|
2303
2304
2305MARKED FILES: BUFFER LIST				*netrw-cb* *netrw-cB*
2306	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2307		      (uses the global marked-file list)
2308
2309Using cb, one moves  filenames from the marked file list to the buffer list.
2310Using cB, one copies filenames from the buffer list to the marked file list.
2311
2312See Also: |netrw-ma| |netrw-mA| |netrw-qF| |buffer-list| |:buffers|
2313
2314
2315MARKED FILES: COMPRESSION AND DECOMPRESSION		*netrw-mz* {{{2
2316	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2317		      (uses the local marked file list)
2318
2319If any marked files are compressed,   then "mz" will decompress them.
2320If any marked files are decompressed, then "mz" will compress them
2321using the command specified by |g:netrw_compress|; by default,
2322that's "gzip".
2323
2324For decompression, netrw uses a |Dictionary| of suffices and their
2325associated decompressing utilities; see |g:netrw_decompress|.
2326
2327Remember that one can mark multiple files by regular expression
2328(see |netrw-mr|); this is particularly useful to facilitate compressing and
2329decompressing a large number of files.
2330
2331Associated setting variables: |g:netrw_compress| |g:netrw_decompress|
2332
2333MARKED FILES: COPYING						*netrw-mc* {{{2
2334	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2335		      (Uses the global marked file list)
2336
2337Select a target directory with mt (|netrw-mt|).  Then change directory,
2338select file(s) (see |netrw-mf|), and press "mc".  The copy is done
2339from the current window (where one does the mf) to the target.
2340
2341If one does not have a target directory set with |netrw-mt|, then netrw
2342will query you for a directory to copy to.
2343
2344One may also copy directories and their contents (local only) to a target
2345directory.
2346
2347Associated setting variables:
2348	|g:netrw_localcopycmd|		|g:netrw_localcopycmdopt|
2349	|g:netrw_localcopydircmd|	|g:netrw_localcopydircmdopt|
2350	|g:netrw_ssh_cmd|
2351
2352MARKED FILES: DIFF						*netrw-md* {{{2
2353	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2354		      (uses the global marked file list)
2355
2356Use |vimdiff| to visualize difference between selected files (two or
2357three may be selected for this).  Uses the global marked file list.
2358
2359MARKED FILES: EDITING						*netrw-me* {{{2
2360	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2361		      (uses the global marked file list)
2362
2363The "me" command will place the marked files on the |arglist| and commence
2364editing them.  One may return the to explorer window with |:Rexplore|.
2365(use |:n| and |:p| to edit next and previous files in the arglist)
2366
2367MARKED FILES: GREP						*netrw-mg* {{{2
2368	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2369		      (uses the global marked file list)
2370
2371The "mg" command will apply |:vimgrep| to the marked files.
2372The command will ask for the requested pattern; one may then enter: >
2373
2374	/pattern/[g][j]
2375	! /pattern/[g][j]
2376	pattern
2377<
2378With /pattern/, editing will start with the first item on the |quickfix| list
2379that vimgrep sets up (see |:copen|, |:cnext|, |:cprevious|, |:cclose|).  The |:vimgrep|
2380command is in use, so without 'g' each line is added to quickfix list only
2381once; with 'g' every match is included.
2382
2383With /pattern/j, "mg" will winnow the current marked file list to just those
2384marked files also possessing the specified pattern.  Thus, one may use >
2385
2386	mr ...file-pattern...
2387	mg /pattern/j
2388<
2389to have a marked file list satisfying the file-pattern but also restricted to
2390files containing some desired pattern.
2391
2392
2393MARKED FILES: HIDING AND UNHIDING BY SUFFIX			*netrw-mh* {{{2
2394	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2395		      (uses the local marked file list)
2396
2397The "mh" command extracts the suffices of the marked files and toggles their
2398presence on the hiding list.  Please note that marking the same suffix
2399this way multiple times will result in the suffix's presence being toggled
2400for each file (so an even quantity of marked files having the same suffix
2401is the same as not having bothered to select them at all).
2402
2403Related topics: |netrw-a| |g:netrw_list_hide|
2404
2405MARKED FILES: MOVING						*netrw-mm* {{{2
2406	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2407		      (uses the global marked file list)
2408
2409	WARNING: moving files is more dangerous than copying them.
2410	A file being moved is first copied and then deleted; if the
2411	copy operation fails and the delete succeeds, you will lose
2412	the file.  Either try things out with unimportant files
2413	first or do the copy and then delete yourself using mc and D.
2414	Use at your own risk!
2415
2416Select a target directory with mt (|netrw-mt|).  Then change directory,
2417select file(s) (see |netrw-mf|), and press "mm".  The move is done
2418from the current window (where one does the mf) to the target.
2419
2420Associated setting variable: |g:netrw_localmovecmd| |g:netrw_ssh_cmd|
2421
2422MARKED FILES: PRINTING						*netrw-mp* {{{2
2423	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2424		      (uses the local marked file list)
2425
2426When "mp" is used, netrw will apply the |:hardcopy| command to marked files.
2427What netrw does is open each file in a one-line window, execute hardcopy, then
2428close the one-line window.
2429
2430
2431MARKED FILES: SOURCING						*netrw-ms* {{{2
2432	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2433		      (uses the local marked file list)
2434
2435With "ms", netrw will source the marked files (using vim's |:source| command)
2436
2437
2438MARKED FILES: SETTING THE TARGET DIRECTORY			*netrw-mt* {{{2
2439     (See |netrw-mf| and |netrw-mr| for how to mark files)
2440
2441Set the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|):
2442
2443  * If the cursor is atop a file name, then the netrw window's currently
2444    displayed directory is used for the copy/move-to target.
2445
2446  * Also, if the cursor is in the banner, then the netrw window's currently
2447    displayed directory is used for the copy/move-to target.
2448    Unless the target already is the current directory.  In which case,
2449    typing "mf" clears the target.
2450
2451  * However, if the cursor is atop a directory name, then that directory is
2452    used for the copy/move-to target
2453
2454  * One may use the :MT [directory] command to set the target	*netrw-:MT*
2455    This command uses |<q-args>|, so spaces in the directory name are
2456    permitted without escaping.
2457
2458  * With mouse-enabled vim or with gvim, one may select a target by using
2459    <c-leftmouse>
2460
2461There is only one copy/move-to target at a time in a vim session; ie. the
2462target is a script variable (see |s:var|) and is shared between all netrw
2463windows (in an instance of vim).
2464
2465When using menus and gvim, netrw provides a "Targets" entry which allows one
2466to pick a target from the list of bookmarks and history.
2467
2468Related topics:
2469      Marking Files......................................|netrw-mf|
2470      Marking Files by Regular Expression................|netrw-mr|
2471      Marked Files: Target Directory Using Bookmarks.....|netrw-Tb|
2472      Marked Files: Target Directory Using History.......|netrw-Th|
2473
2474
2475MARKED FILES: TAGGING						*netrw-mT* {{{2
2476	    (See |netrw-mf| and |netrw-mr| for how to mark files)
2477		      (uses the global marked file list)
2478
2479The "mT" mapping will apply the command in |g:netrw_ctags| (by default, it is
2480"ctags") to marked files.  For remote browsing, in order to create a tags file
2481netrw will use ssh (see |g:netrw_ssh_cmd|), and so ssh must be available for
2482this to work on remote systems.  For your local system, see |ctags| on how to
2483get a version.  I myself use hdrtags, currently available at
2484http://www.drchip.org/astronaut/src/index.html , and have >
2485
2486	let g:netrw_ctags= "hdrtag"
2487<
2488in my <.vimrc>.
2489
2490When a remote set of files are tagged, the resulting tags file is "obtained";
2491ie. a copy is transferred to the local system's directory.  The now local tags
2492file is then modified so that one may use it through the network.  The
2493modification made concerns the names of the files in the tags; each filename is
2494preceded by the netrw-compatible URL used to obtain it.  When one subsequently
2495uses one of the go to tag actions (|tags|), the URL will be used by netrw to
2496edit the desired file and go to the tag.
2497
2498Associated setting variables: |g:netrw_ctags| |g:netrw_ssh_cmd|
2499
2500MARKED FILES: TARGET DIRECTORY USING BOOKMARKS		*netrw-Tb* {{{2
2501
2502Sets the marked file copy/move-to target.
2503
2504The |netrw-qb| map will give you a list of bookmarks (and history).
2505One may choose one of the bookmarks to become your marked file
2506target by using [count]Tb (default count: 1).
2507
2508Related topics:
2509      Copying files to target............................|netrw-mc|
2510      Listing Bookmarks and History......................|netrw-qb|
2511      Marked Files: Setting The Target Directory.........|netrw-mt|
2512      Marked Files: Target Directory Using History.......|netrw-Th|
2513      Marking Files......................................|netrw-mf|
2514      Marking Files by Regular Expression................|netrw-mr|
2515      Moving files to target.............................|netrw-mm|
2516
2517
2518MARKED FILES: TARGET DIRECTORY USING HISTORY			*netrw-Th* {{{2
2519
2520Sets the marked file copy/move-to target.
2521
2522The |netrw-qb| map will give you a list of history (and bookmarks).
2523One may choose one of the history entries to become your marked file
2524target by using [count]Th (default count: 0; ie. the current directory).
2525
2526Related topics:
2527      Copying files to target............................|netrw-mc|
2528      Listing Bookmarks and History......................|netrw-qb|
2529      Marked Files: Setting The Target Directory.........|netrw-mt|
2530      Marked Files: Target Directory Using Bookmarks.....|netrw-Tb|
2531      Marking Files......................................|netrw-mf|
2532      Marking Files by Regular Expression................|netrw-mr|
2533      Moving files to target.............................|netrw-mm|
2534
2535
2536MARKED FILES: UNMARKING						*netrw-mu* {{{2
2537     (See |netrw-mf|, |netrw-mF|)
2538
2539The "mu" mapping will unmark all currently marked files.  This command differs
2540from "mF" as the latter only unmarks files in the current directory whereas
2541"mu" will unmark global and all buffer-local marked files.
2542(see |netrw-mF|)
2543
2544
2545				*netrw-browser-settings*
2546NETRW BROWSER VARIABLES		*netrw-browser-options* *netrw-browser-var* {{{2
2547
2548(if you're interested in the netrw file transfer settings, see |netrw-options|
2549 and |netrw-protocol|)
2550
2551The <netrw.vim> browser provides settings in the form of variables which
2552you may modify; by placing these settings in your <.vimrc>, you may customize
2553your browsing preferences.  (see also: |netrw-settings|)
2554>
2555   ---				-----------
2556   Var				Explanation
2557   ---				-----------
2558<  *g:netrw_altfile*		some like |CTRL-^| to return to the last
2559				edited file.  Choose that by setting this
2560				parameter to 1.
2561				Others like |CTRL-^| to return to the
2562				netrw browsing buffer.  Choose that by setting
2563				this parameter to 0.
2564				 default: =0
2565
2566  *g:netrw_alto*		change from above splitting to below splitting
2567				by setting this variable (see |netrw-o|)
2568				 default: =&sb           (see |'sb'|)
2569
2570  *g:netrw_altv*		change from left splitting to right splitting
2571				by setting this variable (see |netrw-v|)
2572				 default: =&spr          (see |'spr'|)
2573
2574  *g:netrw_banner*		enable/suppress the banner
2575				=0: suppress the banner
2576				=1: banner is enabled (default)
2577
2578  *g:netrw_bannerbackslash*	if this variable exists and is not zero, the
2579				banner will be displayed with backslashes
2580				rather than forward slashes.
2581
2582  *g:netrw_browse_split*	when browsing, <cr> will open the file by:
2583				=0: re-using the same window  (default)
2584				=1: horizontally splitting the window first
2585				=2: vertically   splitting the window first
2586				=3: open file in new tab
2587				=4: act like "P" (ie. open previous window)
2588				    Note that |g:netrw_preview| may be used
2589				    to get vertical splitting instead of
2590				    horizontal splitting.
2591				=[servername,tab-number,window-number]
2592				    Given a |List| such as this, a remote server
2593				    named by the "servername" will be used for
2594				    editing.  It will also use the specified tab
2595				    and window numbers to perform editing
2596				    (see |clientserver|, |netrw-ctrl-r|)
2597				This option does not affect the production of
2598				|:Lexplore| windows.
2599
2600				Related topics:
2601				    |g:netrw_alto|	|g:netrw_altv|
2602				    |netrw-C|		|netrw-cr|
2603				    |netrw-ctrl-r|
2604
2605  *g:netrw_browsex_viewer*	specify user's preference for a viewer: >
2606					"kfmclient exec"
2607					"gnome-open"
2608<				If >
2609					"-"
2610<				is used, then netrwFileHandler() will look for
2611				a script/function to handle the given
2612				extension.  (see |netrw_filehandler|).
2613
2614  *g:netrw_browsex_support_remote*
2615				specify if the specified viewer supports a
2616				remote URL.  (see |netrw-handler|).
2617
2618  *g:netrw_chgperm*		Unix/Linux: "chmod PERM FILENAME"
2619				Windows:    "cacls FILENAME /e /p PERM"
2620				Used to change access permission for a file.
2621
2622  *g:netrw_clipboard*		=1
2623  				By default, netrw will attempt to insure that
2624				the clipboard's values will remain unchanged.
2625				However, some users report that they have
2626				speed problems with this; consequently, this
2627				option, when set to zero,  lets such users
2628				prevent netrw from saving and restoring the
2629				clipboard (the latter is done only as needed).
2630				That means that if the clipboard is changed
2631				(inadvertently) by normal netrw operation that
2632				it will not be restored to its prior state.
2633
2634  *g:netrw_compress*		="gzip"
2635				Will compress marked files with this
2636				command
2637
2638  *g:Netrw_corehandler*		Allows one to specify something additional
2639				to do when handling <core> files via netrw's
2640				browser's "x" command (see |netrw-x|).  If
2641				present, g:Netrw_corehandler specifies
2642				either one or more function references
2643				(see |Funcref|).  (the capital g:Netrw...
2644				is required its holding a function reference)
2645
2646
2647  *g:netrw_ctags*		="ctags"
2648				The default external program used to create
2649				tags
2650
2651  *g:netrw_cursor*		= 2 (default)
2652				This option controls the use of the
2653				|'cursorline'| (cul) and |'cursorcolumn'|
2654				(cuc) settings by netrw:
2655
2656				Value   Thin-Long-Tree      Wide
2657				 =0      u-cul u-cuc      u-cul u-cuc
2658				 =1      u-cul u-cuc        cul u-cuc
2659				 =2        cul u-cuc        cul u-cuc
2660				 =3        cul u-cuc        cul   cuc
2661				 =4        cul   cuc        cul   cuc
2662				 =5      U-cul U-cuc      U-cul U-cuc
2663				 =6      U-cul U-cuc        cul U-cuc
2664				 =7        cul U-cuc        cul U-cuc
2665				 =8        cul U-cuc        cul   cuc
2666
2667				Where
2668				  u-cul : user's |'cursorline'|   initial setting used
2669				  u-cuc : user's |'cursorcolumn'| initial setting used
2670				  U-cul : user's |'cursorline'|   current setting used
2671				  U-cuc : user's |'cursorcolumn'| current setting used
2672				  cul   : |'cursorline'|   will be locally set
2673				  cuc   : |'cursorcolumn'| will be locally set
2674
2675				  The "initial setting" means the values of
2676				  the |'cuc'| and |'cul'| settings in effect when
2677				  netrw last saw |g:netrw_cursor| >= 5 or when
2678				  netrw was initially run.
2679
2680  *g:netrw_decompress*		= { ".gz"  : "gunzip" ,
2681				    ".bz2" : "bunzip2" ,
2682				    ".zip" : "unzip" ,
2683				    ".tar" : "tar -xf"}
2684				  A dictionary mapping suffices to
2685				  decompression programs.
2686
2687  *g:netrw_dirhistmax*            =10: controls maximum quantity of past
2688                                     history.  May be zero to suppress
2689				     history.
2690				     (related: |netrw-qb| |netrw-u| |netrw-U|)
2691
2692  *g:netrw_dynamic_maxfilenamelen* =32: enables dynamic determination of
2693				    |g:netrw_maxfilenamelen|, which affects
2694				    local file long listing.
2695
2696  *g:netrw_errorlvl*		=0: error levels greater than or equal to
2697				    this are permitted to be displayed
2698				    0: notes
2699				    1: warnings
2700				    2: errors
2701
2702  *g:netrw_fastbrowse*		=0: slow speed directory browsing;
2703				    never re-uses directory listings;
2704				    always obtains directory listings.
2705				=1: medium speed directory browsing;
2706				    re-use directory listings only
2707				    when remote directory browsing.
2708				    (default value)
2709				=2: fast directory browsing;
2710				    only obtains directory listings when the
2711				    directory hasn't been seen before
2712				    (or |netrw-ctrl-l| is used).
2713
2714				Fast browsing retains old directory listing
2715				buffers so that they don't need to be
2716				re-acquired.  This feature is especially
2717				important for remote browsing.  However, if
2718				a file is introduced or deleted into or from
2719				such directories, the old directory buffer
2720				becomes out-of-date.  One may always refresh
2721				such a directory listing with |netrw-ctrl-l|.
2722				This option gives the user the choice of
2723				trading off accuracy (ie. up-to-date listing)
2724				versus speed.
2725
2726  *g:netrw_ffkeep*		(default: doesn't exist)
2727				If this variable exists and is zero, then
2728				netrw will not do a save and restore for
2729				|'fileformat'|.
2730
2731  *g:netrw_fname_escape*	=' ?&;%'
2732				Used on filenames before remote reading/writing
2733
2734  *g:netrw_ftp_browse_reject*	ftp can produce a number of errors and warnings
2735				that can show up as "directories" and "files"
2736				in the listing.  This pattern is used to
2737				remove such embedded messages.  By default its
2738				value is:
2739				 '^total\s\+\d\+$\|
2740				 ^Trying\s\+\d\+.*$\|
2741				 ^KERBEROS_V\d rejected\|
2742				 ^Security extensions not\|
2743				 No such file\|
2744				 : connect to address [0-9a-fA-F:]*
2745				 : No route to host$'
2746
2747  *g:netrw_ftp_list_cmd*	options for passing along to ftp for directory
2748				listing.  Defaults:
2749				 unix or g:netrw_cygwin set: : "ls -lF"
2750				 otherwise                     "dir"
2751
2752
2753  *g:netrw_ftp_sizelist_cmd*	options for passing along to ftp for directory
2754				listing, sorted by size of file.
2755				Defaults:
2756				 unix or g:netrw_cygwin set: : "ls -slF"
2757				 otherwise                     "dir"
2758
2759  *g:netrw_ftp_timelist_cmd*	options for passing along to ftp for directory
2760				listing, sorted by time of last modification.
2761				Defaults:
2762				 unix or g:netrw_cygwin set: : "ls -tlF"
2763				 otherwise                     "dir"
2764
2765  *g:netrw_glob_escape*		='[]*?`{~$'  (unix)
2766				='[]*?`{$'  (windows
2767				These characters in directory names are
2768				escaped before applying glob()
2769
2770  *g:netrw_gx*			="<cfile>"
2771 				This option controls how gx (|netrw-gx|) picks
2772				up the text under the cursor.  See |expand()|
2773				for possibilities.
2774
2775  *g:netrw_hide*		Controlled by the "a" map (see |netrw-a|)
2776				=0 : show all
2777				=1 : show not-hidden files
2778				=2 : show hidden files only
2779				 default: =1
2780
2781  *g:netrw_home*		The home directory for where bookmarks and
2782				history are saved (as .netrwbook and
2783				.netrwhist).
2784				Netrw uses |expand()|on the string.
2785				 default: the first directory on the
2786				         |'runtimepath'|
2787
2788  *g:netrw_keepdir*		=1 (default) keep current directory immune from
2789				   the browsing directory.
2790				=0 keep the current directory the same as the
2791				   browsing directory.
2792				The current browsing directory is contained in
2793				b:netrw_curdir (also see |netrw-cd|)
2794
2795  *g:netrw_keepj*		="keepj" (default) netrw attempts to keep the
2796				         |:jumps| table unaffected.
2797				=""      netrw will not use |:keepjumps| with
2798					 exceptions only for the
2799					 saving/restoration of position.
2800
2801  *g:netrw_list_cmd*		command for listing remote directories
2802				 default: (if ssh is executable)
2803				          "ssh HOSTNAME ls -FLa"
2804
2805  *g:netrw_list_cmd_options*	If this variable exists, then its contents are
2806				appended to the g:netrw_list_cmd.  For
2807				example, use "2>/dev/null" to get rid of banner
2808				messages on unix systems.
2809
2810
2811  *g:netrw_liststyle*		Set the default listing style:
2812                                = 0: thin listing (one file per line)
2813                                = 1: long listing (one file per line with time
2814				     stamp information and file size)
2815				= 2: wide listing (multiple files in columns)
2816				= 3: tree style listing
2817
2818  *g:netrw_list_hide*		comma separated pattern list for hiding files
2819				Patterns are regular expressions (see |regexp|)
2820				There's some special support for git-ignore
2821				files: you may add the output from the helper
2822				function 'netrw_gitignore#Hide() automatically
2823				hiding all gitignored files.
2824				For more details see |netrw-gitignore|.
2825
2826				Examples:
2827				 let g:netrw_list_hide= '.*\.swp$'
2828				 let g:netrw_list_hide= netrw_gitignore#Hide().'.*\.swp$'
2829				default: ""
2830
2831  *g:netrw_localcopycmd*	="cp"           Linux/Unix/MacOS/Cygwin
2832				=expand("$COMSPEC")             Windows
2833				Copies marked files (|netrw-mf|) to target
2834				directory (|netrw-mt|, |netrw-mc|)
2835
2836  *g:netrw_localcopycmdopt*	=''             Linux/Unix/MacOS/Cygwin
2837  				=' \c copy'                     Windows
2838				Options for the |g:netrw_localcopycmd|
2839
2840  *g:netrw_localcopydircmd*	="cp"           Linux/Unix/MacOS/Cygwin
2841 				=expand("$COMSPEC")             Windows
2842				Copies directories to target directory.
2843				(|netrw-mc|, |netrw-mt|)
2844
2845  *g:netrw_localcopydircmdopt*	=" -R"          Linux/Unix/MacOS/Cygwin
2846				=" /c xcopy /e /c /h/ /i /k"    Windows
2847				Options for |g:netrw_localcopydircmd|
2848
2849  *g:netrw_localmkdir*		="mkdir"        Linux/Unix/MacOS/Cygwin
2850				=expand("$COMSPEC")             Windows
2851                                command for making a local directory
2852
2853  *g:netrw_localmkdiropt*	=""             Linux/Unix/MacOS/Cygwin
2854				=" /c mkdir"                    Windows
2855				Options for |g:netrw_localmkdir|
2856
2857  *g:netrw_localmovecmd*	="mv"           Linux/Unix/MacOS/Cygwin
2858				=expand("$COMSPEC")             Windows
2859				Moves marked files (|netrw-mf|) to target
2860				directory (|netrw-mt|, |netrw-mm|)
2861
2862  *g:netrw_localmovecmdopt*	=""             Linux/Unix/MacOS/Cygwin
2863				=" /c move"                     Windows
2864				Options for |g:netrw_localmovecmd|
2865
2866  *g:netrw_localrmdir*		="rmdir"        Linux/Unix/MacOS/Cygwin
2867 				=expand("$COMSPEC")             Windows
2868				Remove directory command (rmdir)
2869				This variable is only used if your vim is
2870				earlier than 7.4 or if your vim doesn't
2871				have patch#1107.  Otherwise, |delete()|
2872				is used with the "d" option.
2873
2874  *g:netrw_localrmdiropt*	=""             Linux/Unix/MacOS/Cygwin
2875				=" /c rmdir"                    Windows
2876				Options for |g:netrw_localrmdir|
2877
2878  *g:netrw_maxfilenamelen*	=32 by default, selected so as to make long
2879				    listings fit on 80 column displays.
2880				If your screen is wider, and you have file
2881				or directory names longer than 32 bytes,
2882				you may set this option to keep listings
2883				columnar.
2884
2885  *g:netrw_mkdir_cmd*		command for making a remote directory
2886				via ssh  (also see |g:netrw_remote_mkdir|)
2887				 default: "ssh USEPORT HOSTNAME mkdir"
2888
2889  *g:netrw_mousemaps*		  =1 (default) enables mouse buttons while
2890				   browsing to:
2891				     leftmouse       : open file/directory
2892				     shift-leftmouse : mark file
2893				     middlemouse     : same as P
2894				     rightmouse      : remove file/directory
2895				=0: disables mouse maps
2896
2897  *g:netrw_nobeval*		doesn't exist (default)
2898				If this variable exists, then balloon
2899				evaluation will be suppressed
2900				(see |'ballooneval'|)
2901
2902 *g:netrw_sizestyle*		not defined: actual bytes (default)
2903 				="b" : actual bytes       (default)
2904 				="h" : human-readable (ex. 5k, 4m, 3g)
2905				       uses 1000 base
2906 				="H" : human-readable (ex. 5K, 4M, 3G)
2907				       uses 1024 base
2908				The long listing (|netrw-i|) and query-file
2909				maps (|netrw-qf|) will display file size
2910				using the specified style.
2911
2912  *g:netrw_usetab*		if this variable exists and is non-zero, then
2913				the <tab> map supporting shrinking/expanding a
2914				Lexplore or netrw window will be enabled.
2915				(see |netrw-c-tab|)
2916
2917  *g:netrw_remote_mkdir*	command for making a remote directory
2918				via ftp  (also see |g:netrw_mkdir_cmd|)
2919				 default: "mkdir"
2920
2921  *g:netrw_retmap*		if it exists and is set to one, then:
2922				 * if in a netrw-selected file, AND
2923				 * no normal-mode <2-leftmouse> mapping exists,
2924				then the <2-leftmouse> will be mapped for easy
2925				return to the netrw browser window.
2926				 example: click once to select and open a file,
2927				          double-click to return.
2928
2929				Note that one may instead choose to:
2930				 * let g:netrw_retmap= 1, AND
2931				 * nmap <silent> YourChoice <Plug>NetrwReturn
2932				and have another mapping instead of
2933				<2-leftmouse> to invoke the return.
2934
2935				You may also use the |:Rexplore| command to do
2936				the same thing.
2937
2938				  default: =0
2939
2940  *g:netrw_rm_cmd*		command for removing remote files
2941				 default: "ssh USEPORT HOSTNAME rm"
2942
2943  *g:netrw_rmdir_cmd*		command for removing remote directories
2944				 default: "ssh USEPORT HOSTNAME rmdir"
2945
2946  *g:netrw_rmf_cmd*		command for removing remote softlinks
2947				 default: "ssh USEPORT HOSTNAME rm -f"
2948
2949  *g:netrw_servername*		use this variable to provide a name for
2950				|netrw-ctrl-r| to use for its server.
2951				 default: "NETRWSERVER"
2952
2953  *g:netrw_sort_by*		sort by "name", "time", "size", or
2954  				"exten".
2955				 default: "name"
2956
2957  *g:netrw_sort_direction*	sorting direction: "normal" or "reverse"
2958				 default: "normal"
2959
2960  *g:netrw_sort_options*	sorting is done using |:sort|; this
2961				variable's value is appended to the
2962				sort command.  Thus one may ignore case,
2963				for example, with the following in your
2964				.vimrc: >
2965					let g:netrw_sort_options="i"
2966<				 default: ""
2967
2968  *g:netrw_sort_sequence*	when sorting by name, first sort by the
2969				comma-separated pattern sequence.  Note that
2970				any filigree added to indicate filetypes
2971				should be accounted for in your pattern.
2972				 default: '[\/]$,*,\.bak$,\.o$,\.h$,
2973				           \.info$,\.swp$,\.obj$'
2974
2975  *g:netrw_special_syntax*	If true, then certain files will be shown
2976				using special syntax in the browser:
2977
2978					netrwBak     : *.bak
2979					netrwCompress: *.gz *.bz2 *.Z *.zip
2980					netrwCoreDump: core.\d\+
2981					netrwData    : *.dat
2982					netrwDoc     : *.doc,*.txt,*.pdf,
2983					               *.pdf,*.docx
2984					netrwHdr     : *.h
2985					netrwLex     : *.l *.lex
2986					netrwLib     : *.a *.so *.lib *.dll
2987					netrwMakefile: [mM]akefile *.mak
2988					netrwObj     : *.o *.obj
2989					netrwPix     : *.bmp,*.fit,*.fits,*.gif,
2990					               *.jpg,*.jpeg,*.pcx,*.ppc
2991					               *.pgm,*.png,*.psd,*.rgb
2992					               *.tif,*.xbm,*.xcf
2993					netrwTags    : tags ANmenu ANtags
2994					netrwTilde   : *
2995					netrwTmp     : tmp* *tmp
2996					netrwYacc    : *.y
2997
2998				In addition, those groups mentioned in
2999				|'suffixes'| are also added to the special
3000				file highlighting group.
3001				 These syntax highlighting groups are linked
3002				to netrwGray or Folded by default
3003				(see |hl-Folded|), but one may put lines like >
3004					hi link netrwCompress Visual
3005<				into one's <.vimrc> to use one's own
3006				preferences.  Alternatively, one may
3007				put such specifications into >
3008					.vim/after/syntax/netrw.vim.
3009<				 The netrwGray highlighting is set up by
3010				netrw when >
3011	       				* netrwGray has not been previously
3012					  defined
3013					* the gui is running
3014<				 As an example, I myself use a dark-background
3015				colorscheme with the following in
3016				.vim/after/syntax/netrw.vim: >
3017
3018 hi netrwCompress term=NONE cterm=NONE gui=NONE ctermfg=10 guifg=green  ctermbg=0 guibg=black
3019 hi netrwData	  term=NONE cterm=NONE gui=NONE ctermfg=9 guifg=blue ctermbg=0 guibg=black
3020 hi netrwHdr	  term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1
3021 hi netrwLex	  term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1
3022 hi netrwYacc	  term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1
3023 hi netrwLib	  term=NONE cterm=NONE gui=NONE ctermfg=14 guifg=yellow
3024 hi netrwObj	  term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red
3025 hi netrwTilde	  term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red
3026 hi netrwTmp	  term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red
3027 hi netrwTags	  term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red
3028 hi netrwDoc	  term=NONE cterm=NONE gui=NONE ctermfg=220 ctermbg=27 guifg=yellow2 guibg=Blue3
3029 hi netrwSymLink  term=NONE cterm=NONE gui=NONE ctermfg=220 ctermbg=27 guifg=grey60
3030<
3031  *g:netrw_ssh_browse_reject*	ssh can sometimes produce unwanted lines,
3032				messages, banners, and whatnot that one doesn't
3033				want masquerading as "directories" and "files".
3034				Use this pattern to remove such embedded
3035				messages.  By default its value is:
3036					 '^total\s\+\d\+$'
3037
3038  *g:netrw_ssh_cmd*		One may specify an executable command
3039				to use instead of ssh for remote actions
3040				such as listing, file removal, etc.
3041				 default: ssh
3042
3043 *g:netrw_suppress_gx_mesg*	=1 : browsers sometimes produce messages
3044				which are normally unwanted intermixed
3045				with the page.
3046				However, when using links, for example,
3047				those messages are what the browser produces.
3048				By setting this option to 0, netrw will not
3049				suppress browser messages.
3050
3051  *g:netrw_tmpfile_escape*	=' &;'
3052				escape() is applied to all temporary files
3053				to escape these characters.
3054
3055  *g:netrw_timefmt*		specify format string to vim's strftime().
3056				The default, "%c", is "the preferred date
3057				and time representation for the current
3058				locale" according to my manpage entry for
3059				strftime(); however, not all are satisfied
3060				with it.  Some alternatives:
3061				 "%a %d %b %Y %T",
3062				 " %a %Y-%m-%d  %I-%M-%S %p"
3063				 default: "%c"
3064
3065  *g:netrw_use_noswf*		netrw normally avoids writing swapfiles
3066				for browser buffers.  However, under some
3067				systems this apparently is causing nasty
3068				ml_get errors to appear; if you're getting
3069				ml_get errors, try putting
3070				  let g:netrw_use_noswf= 0
3071				in your .vimrc.
3072				  default: 1
3073
3074  *g:netrw_winsize*		specify initial size of new windows made with
3075				"o" (see |netrw-o|), "v" (see |netrw-v|),
3076				|:Hexplore| or |:Vexplore|.  The g:netrw_winsize
3077				is an integer describing the percentage of the
3078				current netrw buffer's window to be used for
3079				the new window.
3080				 If g:netrw_winsize is less than zero, then
3081				the absolute value of g:netrw_winsize will be
3082				used to specify the quantity of lines or
3083				columns for the new window.
3084				 If g:netrw_winsize is zero, then a normal
3085				split will be made (ie. |'equalalways'| will
3086				take effect, for example).
3087				 default: 50  (for 50%)
3088
3089  *g:netrw_wiw*			=1 specifies the minimum window width to use
3090				when shrinking a netrw/Lexplore window
3091				(see |netrw-c-tab|).
3092
3093  *g:netrw_xstrlen*		Controls how netrw computes string lengths,
3094				including multi-byte characters' string
3095				length. (thanks to N Weibull, T Mechelynck)
3096				=0: uses Vim's built-in strlen()
3097				=1: number of codepoints (Latin a + combining
3098				    circumflex is two codepoints)  (DEFAULT)
3099				=2: number of spacing codepoints (Latin a +
3100				    combining circumflex is one spacing
3101				    codepoint; a hard tab is one; wide and
3102				    narrow CJK are one each; etc.)
3103				=3: virtual length (counting tabs as anything
3104				    between 1 and |'tabstop'|, wide CJK as 2
3105				    rather than 1, Arabic alif as zero when
3106				    immediately preceded by lam, one
3107				    otherwise, etc)
3108
3109  *g:NetrwTopLvlMenu*		This variable specifies the top level
3110				menu name; by default, it's "Netrw.".  If
3111				you wish to change this, do so in your
3112				.vimrc.
3113
3114NETRW BROWSING AND OPTION INCOMPATIBILITIES	*netrw-incompatible* {{{2
3115
3116Netrw has been designed to handle user options by saving them, setting the
3117options to something that's compatible with netrw's needs, and then restoring
3118them.  However, the autochdir option: >
3119	:set acd
3120is problematic.  Autochdir sets the current directory to that containing the
3121file you edit; this apparently also applies to directories.  In other words,
3122autochdir sets the current directory to that containing the "file" (even if
3123that "file" is itself a directory).
3124
3125NETRW SETTINGS WINDOW				*netrw-settings-window* {{{2
3126
3127With the NetrwSettings.vim plugin, >
3128	:NetrwSettings
3129will bring up a window with the many variables that netrw uses for its
3130settings.  You may change any of their values; when you save the file, the
3131settings therein will be used.  One may also press "?" on any of the lines for
3132help on what each of the variables do.
3133
3134(also see: |netrw-browser-var| |netrw-protocol| |netrw-variables|)
3135
3136
3137==============================================================================
3138OBTAINING A FILE					*netrw-obtain* *netrw-O* {{{2
3139
3140If there are no marked files:
3141
3142    When browsing a remote directory, one may obtain a file under the cursor
3143    (ie.  get a copy on your local machine, but not edit it) by pressing the O
3144    key.
3145
3146If there are marked files:
3147
3148    The marked files will be obtained (ie. a copy will be transferred to your
3149    local machine, but not set up for editing).
3150
3151Only ftp and scp are supported for this operation (but since these two are
3152available for browsing, that shouldn't be a problem).  The status bar will
3153then show, on its right hand side, a message like "Obtaining filename".  The
3154statusline will be restored after the transfer is complete.
3155
3156Netrw can also "obtain" a file using the local browser.  Netrw's display
3157of a directory is not necessarily the same as Vim's "current directory",
3158unless |g:netrw_keepdir| is set to 0 in the user's <.vimrc>.  One may select
3159a file using the local browser (by putting the cursor on it) and pressing
3160"O" will then "obtain" the file; ie. copy it to Vim's current directory.
3161
3162Related topics:
3163 * To see what the current directory is, use |:pwd|
3164 * To make the currently browsed directory the current directory, see
3165   |netrw-cd|
3166 * To automatically make the currently browsed directory the current
3167   directory, see |g:netrw_keepdir|.
3168
3169					*netrw-newfile* *netrw-createfile*
3170OPEN A NEW FILE IN NETRW'S CURRENT DIRECTORY		*netrw-%* {{{2
3171
3172To open a new file in netrw's current directory, press "%".  This map
3173will query the user for a new filename; an empty file by that name will
3174be placed in the netrw's current directory (ie. b:netrw_curdir).
3175
3176If Lexplore (|netrw-:Lexplore|) is in use, the new file will be generated
3177in the |g:netrw_chgwin| window.
3178
3179Related topics:               |netrw-d|
3180
3181
3182PREVIEW WINDOW				*netrw-p* *netrw-preview* {{{2
3183
3184One may use a preview window by using the "p" key when the cursor is atop the
3185desired filename to be previewed.  The display will then split to show both
3186the browser (where the cursor will remain) and the file (see |:pedit|).  By
3187default, the split will be taken horizontally; one may use vertical splitting
3188if one has set |g:netrw_preview| first.
3189
3190An interesting set of netrw settings is: >
3191
3192	let g:netrw_preview   = 1
3193	let g:netrw_liststyle = 3
3194	let g:netrw_winsize   = 30
3195
3196These will:
3197
3198	1. Make vertical splitting the default for previewing files
3199	2. Make the default listing style "tree"
3200	3. When a vertical preview window is opened, the directory listing
3201	   will use only 30% of the columns available; the rest of the window
3202	   is used for the preview window.
3203
3204	Related: if you like this idea, you may also find :Lexplore
3205	         (|netrw-:Lexplore|) or |g:netrw_chgwin| of interest
3206
3207Also see: |g:netrw_chgwin| |netrw-P| |'previewwindow'| |CTRL-W_z| |:pclose|
3208
3209
3210PREVIOUS WINDOW					*netrw-P* *netrw-prvwin* {{{2
3211
3212To edit a file or directory under the cursor in the previously used (last
3213accessed) window (see :he |CTRL-W_p|), press a "P".  If there's only one
3214window, then the one window will be horizontally split (by default).
3215
3216If there's more than one window, the previous window will be re-used on
3217the selected file/directory.  If the previous window's associated buffer
3218has been modified, and there's only one window with that buffer, then
3219the user will be asked if s/he wishes to save the buffer first (yes,
3220no, or cancel).
3221
3222Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-v|
3223Associated setting variables:
3224   |g:netrw_alto|    control above/below splitting
3225   |g:netrw_altv|    control right/left splitting
3226   |g:netrw_preview| control horizontal vs vertical splitting
3227   |g:netrw_winsize| control initial sizing
3228
3229Also see: |g:netrw_chgwin| |netrw-p|
3230
3231
3232REFRESHING THE LISTING		*netrw-refresh* *netrw-ctrl-l* *netrw-ctrl_l* {{{2
3233
3234To refresh either a local or remote directory listing, press ctrl-l (<c-l>) or
3235hit the <cr> when atop the ./ directory entry in the listing.  One may also
3236refresh a local directory by using ":e .".
3237
3238
3239REVERSING SORTING ORDER		*netrw-r* *netrw-reverse* {{{2
3240
3241One may toggle between normal and reverse sorting order by pressing the
3242"r" key.
3243
3244Related topics:              |netrw-s|
3245Associated setting variable: |g:netrw_sort_direction|
3246
3247
3248RENAMING FILES OR DIRECTORIES	*netrw-move* *netrw-rename* *netrw-R* {{{2
3249
3250If there are no marked files: (see |netrw-mf|)
3251
3252    Renaming files and directories involves moving the cursor to the
3253    file/directory to be moved (renamed) and pressing "R".  You will then be
3254    queried for what you want the file/directory to be renamed to.  You may
3255    select a range of lines with the "V" command (visual selection), and then
3256    press "R"; you will be queried for each file as to what you want it
3257    renamed to.
3258
3259If there are marked files:  (see |netrw-mf|)
3260
3261    Marked files will be renamed (moved).  You will be queried as above in
3262    order to specify where you want the file/directory to be moved.
3263
3264    If you answer a renaming query with a "s/frompattern/topattern/", then
3265    subsequent files on the marked file list will be renamed by taking each
3266    name, applying that substitute, and renaming each file to the result.
3267    As an example : >
3268
3269    	mr  [query: reply with *.c]
3270	R   [query: reply with s/^\(.*\)\.c$/\1.cpp/]
3271<
3272    This example will mark all *.c files and then rename them to *.cpp
3273    files.  Netrw will protect you from overwriting local files without
3274    confirmation, but not remote ones.
3275
3276    The ctrl-X character has special meaning for renaming files: >
3277
3278    	<c-x>      : a single ctrl-x tells netrw to ignore the portion of the response
3279	             lying between the last '/' and the ctrl-x.
3280
3281	<c-x><c-x> : a pair of contiguous ctrl-x's tells netrw to ignore any
3282		     portion of the string preceding the double ctrl-x's.
3283<
3284    WARNING:~
3285
3286    Note that moving files is a dangerous operation; copies are safer.  That's
3287    because a "move" for remote files is actually a copy + delete -- and if
3288    the copy fails and the delete succeeds you may lose the file.
3289    Use at your own risk.
3290
3291The *g:netrw_rename_cmd* variable is used to implement remote renaming.  By
3292default its value is: >
3293
3294	ssh HOSTNAME mv
3295<
3296One may rename a block of files and directories by selecting them with
3297V (|linewise-visual|) when using thin style.
3298
3299See |cmdline-editing| for more on how to edit the command line; in particular,
3300you'll find <ctrl-f> (initiates cmdline window editing) and <ctrl-c> (uses the
3301command line under the cursor) useful in conjunction with the R command.
3302
3303
3304SELECTING SORTING STYLE			*netrw-s* *netrw-sort* {{{2
3305
3306One may select the sorting style by name, time, or (file) size.  The "s" map
3307allows one to circulate amongst the three choices; the directory listing will
3308automatically be refreshed to reflect the selected style.
3309
3310Related topics:               |netrw-r| |netrw-S|
3311Associated setting variables: |g:netrw_sort_by| |g:netrw_sort_sequence|
3312
3313
3314SETTING EDITING WINDOW		*netrw-editwindow* *netrw-C* *netrw-:NetrwC* {{{2
3315
3316One may select a netrw window for editing with the "C" mapping, using the
3317:NetrwC [win#] command, or by setting |g:netrw_chgwin| to the selected window
3318number.  Subsequent selection of a file to edit (|netrw-cr|) will use that
3319window.
3320
3321	* C : by itself, will select the current window holding a netrw buffer
3322	  for subsequent editing via |netrw-cr|.  The C mapping is only available
3323	  while in netrw buffers.
3324
3325	* [count]C : the count will be used as the window number to be used
3326	  for subsequent editing via |netrw-cr|.
3327
3328	* :NetrwC will set |g:netrw_chgwin| to the current window
3329
3330	* :NetrwC win#  will set |g:netrw_chgwin| to the specified window
3331	  number
3332
3333Using >
3334	let g:netrw_chgwin= -1
3335will restore the default editing behavior
3336(ie. subsequent editing will use the current window).
3337
3338Related topics:			|netrw-cr| |g:netrw_browse_split|
3339Associated setting variables:	|g:netrw_chgwin|
3340
3341
3342SHRINKING OR EXPANDING A NETRW OR LEXPLORE WINDOW	*netrw-c-tab* {{{2
3343
3344The <c-tab> key will toggle a netrw or |:Lexplore| window's width,
3345but only if |g:netrw_usetab| exists and is non-zero (and, of course,
3346only if your terminal supports differentiating <c-tab> from a plain
3347<tab>).
3348
3349  * If the current window is a netrw window, toggle its width
3350    (between |g:netrw_wiw| and its original width)
3351
3352  * Else if there is a |:Lexplore| window in the current tab, toggle
3353    its width
3354
3355  * Else bring up a |:Lexplore| window
3356
3357If |g:netrw_usetab| exists and is zero, or if there is a pre-existing mapping
3358for <c-tab>, then the <c-tab> will not be mapped.  One may map something other
3359than a <c-tab>, too: (but you'll still need to have had |g:netrw_usetab| set). >
3360
3361	nmap <unique> (whatever)	<Plug>NetrwShrink
3362<
3363Related topics:			|:Lexplore|
3364Associated setting variable:	|g:netrw_usetab|
3365
3366
3367USER SPECIFIED MAPS					*netrw-usermaps* {{{1
3368
3369One may make customized user maps.  Specify a variable, |g:Netrw_UserMaps|,
3370to hold a |List| of lists of keymap strings and function names: >
3371
3372	[["keymap-sequence","ExampleUserMapFunc"],...]
3373<
3374When netrw is setting up maps for a netrw buffer, if |g:Netrw_UserMaps|
3375exists, then the internal function netrw#UserMaps(islocal) is called.
3376This function goes through all the entries in the |g:Netrw_UserMaps| list:
3377
3378	* sets up maps: >
3379		nno <buffer> <silent> KEYMAP-SEQUENCE
3380		:call s:UserMaps(islocal,"ExampleUserMapFunc")
3381<	* refreshes if result from that function call is the string
3382	  "refresh"
3383	* if the result string is not "", then that string will be
3384	  executed (:exe result)
3385	* if the result is a List, then the above two actions on results
3386	  will be taken for every string in the result List
3387
3388The user function is passed one argument; it resembles >
3389
3390	fun! ExampleUserMapFunc(islocal)
3391<
3392where a:islocal is 1 if its a local-directory system call or 0 when
3393remote-directory system call.
3394
3395			        *netrw-call*  *netrw-expose*  *netrw-modify*
3396Use netrw#Expose("varname")          to access netrw-internal (script-local)
3397				     variables.
3398Use netrw#Modify("varname",newvalue) to change netrw-internal variables.
3399Use netrw#Call("funcname"[,args])    to call a netrw-internal function with
3400				     specified arguments.
3401
3402Example: Get a copy of netrw's marked file list: >
3403
3404	let netrwmarkfilelist= netrw#Expose("netrwmarkfilelist")
3405<
3406Example: Modify the value of netrw's marked file list: >
3407
3408	call netrw#Modify("netrwmarkfilelist",[])
3409<
3410Example: Clear netrw's marked file list via a mapping on gu >
3411    " ExampleUserMap: {{{2
3412    fun! ExampleUserMap(islocal)
3413      call netrw#Modify("netrwmarkfilelist",[])
3414      call netrw#Modify('netrwmarkfilemtch_{bufnr("%")}',"")
3415      let retval= ["refresh"]
3416      return retval
3417    endfun
3418    let g:Netrw_UserMaps= [["gu","ExampleUserMap"]]
3419<
3420
342110. Problems and Fixes					*netrw-problems* {{{1
3422
3423	(This section is likely to grow as I get feedback)
3424	(also see |netrw-debug|)
3425								*netrw-p1*
3426	P1. I use windows 95, and my ftp dumps four blank lines at the      {{{2
3427	    end of every read.
3428
3429		See |netrw-fixup|, and put the following into your
3430		<.vimrc> file:
3431
3432			let g:netrw_win95ftp= 1
3433
3434								*netrw-p2*
3435	P2. I use Windows, and my network browsing with ftp doesn't sort by {{{2
3436	    time or size!  -or-  The remote system is a Windows server; why
3437	    don't I get sorts by time or size?
3438
3439		Windows' ftp has a minimal support for ls (ie. it doesn't
3440		accept sorting options).  It doesn't support the -F which
3441		gives an explanatory character (ABC/ for "ABC is a directory").
3442		Netrw then uses "dir" to get both its thin and long listings.
3443		If you think your ftp does support a full-up ls, put the
3444		following into your <.vimrc>: >
3445
3446			let g:netrw_ftp_list_cmd    = "ls -lF"
3447			let g:netrw_ftp_timelist_cmd= "ls -tlF"
3448			let g:netrw_ftp_sizelist_cmd= "ls -slF"
3449<
3450		Alternatively, if you have cygwin on your Windows box, put
3451		into your <.vimrc>: >
3452
3453			let g:netrw_cygwin= 1
3454<
3455		This problem also occurs when the remote system is Windows.
3456		In this situation, the various g:netrw_ftp_[time|size]list_cmds
3457		are as shown above, but the remote system will not correctly
3458		modify its listing behavior.
3459
3460
3461								*netrw-p3*
3462	P3. I tried rcp://user@host/ (or protocol other than ftp) and netrw {{{2
3463	    used ssh!  That wasn't what I asked for...
3464
3465		Netrw has two methods for browsing remote directories: ssh
3466		and ftp.  Unless you specify ftp specifically, ssh is used.
3467		When it comes time to do download a file (not just a directory
3468		listing), netrw will use the given protocol to do so.
3469
3470								*netrw-p4*
3471	P4. I would like long listings to be the default.                   {{{2
3472
3473		Put the following statement into your |.vimrc|: >
3474
3475			let g:netrw_liststyle= 1
3476<
3477		Check out |netrw-browser-var| for more customizations that
3478		you can set.
3479
3480								*netrw-p5*
3481	P5. My times come up oddly in local browsing                        {{{2
3482
3483		Does your system's strftime() accept the "%c" to yield dates
3484		such as "Sun Apr 27 11:49:23 1997"?  If not, do a
3485		"man strftime" and find out what option should be used.  Then
3486		put it into your |.vimrc|: >
3487
3488			let g:netrw_timefmt= "%X"  (where X is the option)
3489<
3490								*netrw-p6*
3491	P6. I want my current directory to track my browsing.               {{{2
3492	    How do I do that?
3493
3494	    Put the following line in your |.vimrc|:
3495>
3496		let g:netrw_keepdir= 0
3497<
3498								*netrw-p7*
3499	P7. I use Chinese (or other non-ascii) characters in my filenames,  {{{2
3500	    and netrw (Explore, Sexplore, Hexplore, etc) doesn't display them!
3501
3502		(taken from an answer provided by Wu Yongwei on the vim
3503		mailing list)
3504		I now see the problem. Your code page is not 936, right? Vim
3505		seems only able to open files with names that are valid in the
3506		current code page, as are many other applications that do not
3507		use the Unicode version of Windows APIs. This is an OS-related
3508		issue. You should not have such problems when the system
3509		locale uses UTF-8, such as modern Linux distros.
3510
3511		(...it is one more reason to recommend that people use utf-8!)
3512
3513								*netrw-p8*
3514	P8. I'm getting "ssh is not executable on your system" -- what do I {{{2
3515	    do?
3516
3517		(Dudley Fox) Most people I know use putty for windows ssh.  It
3518		is a free ssh/telnet application. You can read more about it
3519		here:
3520
3521		http://www.chiark.greenend.org.uk/~sgtatham/putty/ Also:
3522
3523		(Marlin Unruh) This program also works for me. It's a single
3524		executable, so he/she can copy it into the Windows\System32
3525		folder and create a shortcut to it.
3526
3527		(Dudley Fox) You might also wish to consider plink, as it
3528		sounds most similar to what you are looking for. plink is an
3529		application in the putty suite.
3530
3531           http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter7.html#plink
3532
3533		(Vissale Neang) Maybe you can try OpenSSH for windows, which
3534		can be obtained from:
3535
3536		http://sshwindows.sourceforge.net/
3537
3538		It doesn't need the full Cygwin package.
3539
3540		(Antoine Mechelynck) For individual Unix-like programs needed
3541		for work in a native-Windows environment, I recommend getting
3542		them from the GnuWin32 project on sourceforge if it has them:
3543
3544		    http://gnuwin32.sourceforge.net/
3545
3546		Unlike Cygwin, which sets up a Unix-like virtual machine on
3547		top of Windows, GnuWin32 is a rewrite of Unix utilities with
3548		Windows system calls, and its programs works quite well in the
3549		cmd.exe "Dos box".
3550
3551		(dave) Download WinSCP and use that to connect to the server.
3552		In Preferences > Editors, set gvim as your editor:
3553
3554			- Click "Add..."
3555			- Set External Editor (adjust path as needed, include
3556			  the quotes and !.! at the end):
3557			    "c:\Program Files\Vim\vim82\gvim.exe" !.!
3558			- Check that the filetype in the box below is
3559			  {asterisk}.{asterisk} (all files), or whatever types
3560			  you want (cec: change {asterisk} to * ; I had to
3561			  write it that way because otherwise the helptags
3562			  system thinks it's a tag)
3563			- Make sure it's at the top of the listbox (click it,
3564			  then click "Up" if it's not)
3565		If using the Norton Commander style, you just have to hit <F4>
3566		to edit a file in a local copy of gvim.
3567
3568		(Vit Gottwald) How to generate public/private key and save
3569		public key it on server: >
3570  http://www.chiark.greenend.org.uk/~sgtatham/putty/0.60/htmldoc/Chapter8.html#pubkey-gettingready
3571			(8.3 Getting ready for public key authentication)
3572<
3573		How to use a private key with 'pscp': >
3574
3575  http://www.chiark.greenend.org.uk/~sgtatham/putty/0.60/htmldoc/Chapter5.html
3576			(5.2.4 Using public key authentication with PSCP)
3577<
3578		(Ben Schmidt) I find the ssh included with cwRsync is
3579		brilliant, and install cwRsync or cwRsyncServer on most
3580		Windows systems I come across these days. I guess COPSSH,
3581		packed by the same person, is probably even better for use as
3582		just ssh on Windows, and probably includes sftp, etc. which I
3583		suspect the cwRsync doesn't, though it might
3584
3585		(cec) To make proper use of these suggestions above, you will
3586		need to modify the following user-settable variables in your
3587		.vimrc:
3588
3589		|g:netrw_ssh_cmd| |g:netrw_list_cmd|  |g:netrw_mkdir_cmd|
3590		|g:netrw_rm_cmd|  |g:netrw_rmdir_cmd| |g:netrw_rmf_cmd|
3591
3592		The first one (|g:netrw_ssh_cmd|) is the most important; most
3593		of the others will use the string in g:netrw_ssh_cmd by
3594		default.
3595
3596						*netrw-p9* *netrw-ml_get*
3597	P9. I'm browsing, changing directory, and bang!  ml_get errors      {{{2
3598	    appear and I have to kill vim.  Any way around this?
3599
3600		Normally netrw attempts to avoid writing swapfiles for
3601		its temporary directory buffers.  However, on some systems
3602		this attempt appears to be causing ml_get errors to
3603		appear.  Please try setting |g:netrw_use_noswf| to 0
3604		in your <.vimrc>: >
3605			let g:netrw_use_noswf= 0
3606<
3607								*netrw-p10*
3608	P10. I'm being pestered with "[something] is a directory" and       {{{2
3609	     "Press ENTER or type command to continue" prompts...
3610
3611		The "[something] is a directory" prompt is issued by Vim,
3612		not by netrw, and there appears to be no way to work around
3613		it.  Coupled with the default cmdheight of 1, this message
3614		causes the "Press ENTER..." prompt.  So:  read |hit-enter|;
3615		I also suggest that you set your |'cmdheight'| to 2 (or more) in
3616		your <.vimrc> file.
3617
3618								*netrw-p11*
3619	P11. I want to have two windows; a thin one on the left and my      {{{2
3620	     editing window on the right.  How may I accomplish this?
3621
3622	     You probably want netrw running as in a side window.  If so, you
3623	     will likely find that ":[N]Lexplore" does what you want.  The
3624	     optional "[N]" allows you to select the quantity of columns you
3625	     wish the |:Lexplore|r window to start with (see |g:netrw_winsize|
3626	     for how this parameter works).
3627
3628	     Previous solution:
3629
3630		* Put the following line in your <.vimrc>:
3631			let g:netrw_altv = 1
3632		* Edit the current directory:  :e .
3633		* Select some file, press v
3634		* Resize the windows as you wish (see |CTRL-W_<| and
3635		  |CTRL-W_>|).  If you're using gvim, you can drag
3636		  the separating bar with your mouse.
3637		* When you want a new file, use  ctrl-w h  to go back to the
3638		  netrw browser, select a file, then press P  (see |CTRL-W_h|
3639		  and |netrw-P|).  If you're using gvim, you can press
3640		  <leftmouse> in the browser window and then press the
3641		  <middlemouse> to select the file.
3642
3643
3644								*netrw-p12*
3645	P12. My directory isn't sorting correctly, or unwanted letters are  {{{2
3646	     appearing in the listed filenames, or things aren't lining
3647	     up properly in the wide listing, ...
3648
3649	     This may be due to an encoding problem.  I myself usually use
3650	     utf-8, but really only use ascii (ie. bytes from 32-126).
3651	     Multibyte encodings use two (or more) bytes per character.
3652	     You may need to change |g:netrw_sepchr| and/or |g:netrw_xstrlen|.
3653
3654								*netrw-p13*
3655	P13. I'm a Windows + putty + ssh user, and when I attempt to        {{{2
3656	     browse, the directories are missing trailing "/"s so netrw treats
3657	     them as file transfers instead of as attempts to browse
3658	     subdirectories.  How may I fix this?
3659
3660	     (mikeyao) If you want to use vim via ssh and putty under Windows,
3661	     try combining the use of pscp/psftp with plink.  pscp/psftp will
3662	     be used to connect and plink will be used to execute commands on
3663	     the server, for example: list files and directory using 'ls'.
3664
3665	     These are the settings I use to do this:
3666>
3667	    " list files, it's the key setting, if you haven't set,
3668	    " you will get a blank buffer
3669	    let g:netrw_list_cmd = "plink HOSTNAME ls -Fa"
3670	    " if you haven't add putty directory in system path, you should
3671	    " specify scp/sftp command.  For examples:
3672	    "let g:netrw_sftp_cmd = "d:\\dev\\putty\\PSFTP.exe"
3673	    "let g:netrw_scp_cmd = "d:\\dev\\putty\\PSCP.exe"
3674<
3675								*netrw-p14*
3676	P14. I would like to speed up writes using Nwrite and scp/ssh       {{{2
3677	     style connections.  How?  (Thomer M. Gil)
3678
3679	     Try using ssh's ControlMaster and ControlPath (see the ssh_config
3680	     man page) to share multiple ssh connections over a single network
3681	     connection. That cuts out the cryptographic handshake on each
3682	     file write, sometimes speeding it up by an order of magnitude.
3683	     (see  http://thomer.com/howtos/netrw_ssh.html)
3684	     (included by permission)
3685
3686	     Add the following to your ~/.ssh/config: >
3687
3688		 # you change "*" to the hostname you care about
3689		 Host *
3690		   ControlMaster auto
3691		   ControlPath /tmp/%r@%h:%p
3692
3693<	     Then create an ssh connection to the host and leave it running: >
3694
3695		 ssh -N host.domain.com
3696
3697<	     Now remotely open a file with Vim's Netrw and enjoy the
3698	     zippiness: >
3699
3700		vim scp://host.domain.com//home/user/.bashrc
3701<
3702								*netrw-p15*
3703	P15. How may I use a double-click instead of netrw's usual single   {{{2
3704	     click to open a file or directory?  (Ben Fritz)
3705
3706	     First, disable netrw's mapping with >
3707		    let g:netrw_mousemaps= 0
3708<	     and then create a netrw buffer only mapping in
3709	     $HOME/.vim/after/ftplugin/netrw.vim: >
3710		    nmap <buffer> <2-leftmouse> <CR>
3711<	     Note that setting g:netrw_mousemaps to zero will turn off
3712	     all netrw's mouse mappings, not just the <leftmouse> one.
3713	     (see |g:netrw_mousemaps|)
3714
3715								*netrw-p16*
3716	P16. When editing remote files (ex. :e ftp://hostname/path/file),   {{{2
3717	     under Windows I get an |E303| message complaining that its unable
3718	     to open a swap file.
3719
3720	     (romainl) It looks like you are starting Vim from a protected
3721	     directory.  Start netrw from your $HOME or other writable
3722	     directory.
3723
3724								*netrw-p17*
3725	P17. Netrw is closing buffers on its own.                           {{{2
3726	     What steps will reproduce the problem?
3727		1. :Explore, navigate directories, open a file
3728		2. :Explore, open another file
3729		3. Buffer opened in step 1 will be closed. o
3730	    What is the expected output? What do you see instead?
3731		I expect both buffers to exist, but only the last one does.
3732
3733	   (Lance) Problem is caused by "set autochdir" in .vimrc.
3734	   (drchip) I am able to duplicate this problem with |'acd'| set.
3735	            It appears that the buffers are not exactly closed;
3736		    a ":ls!" will show them (although ":ls" does not).
3737
3738								*netrw-P18*
3739	P18. How to locally edit a file that's only available via           {{{2
3740	     another server accessible via ssh?
3741	     See http://stackoverflow.com/questions/12469645/
3742	     "Using Vim to Remotely Edit A File on ServerB Only
3743	      Accessible From ServerA"
3744
3745								*netrw-P19*
3746	P19. How do I get numbering on in directory listings?               {{{2
3747		With |g:netrw_bufsettings|, you can control netrw's buffer
3748		settings; try putting >
3749		  let g:netrw_bufsettings="noma nomod nu nobl nowrap ro nornu"
3750<		in your .vimrc.  If you'd like to have relative numbering
3751		instead, try >
3752		  let g:netrw_bufsettings="noma nomod nonu nobl nowrap ro rnu"
3753<
3754								*netrw-P20*
3755	P20. How may I have gvim start up showing a directory listing?      {{{2
3756		Try putting the following code snippet into your .vimrc: >
3757		    augroup VimStartup
3758		      au!
3759		      au VimEnter * if expand("%") == "" && argc() == 0 &&
3760		      \ (v:servername =~ 'GVIM\d*' || v:servername == "")
3761		      \ | e . | endif
3762		    augroup END
3763<		You may use Lexplore instead of "e" if you're so inclined.
3764		This snippet assumes that you have client-server enabled
3765		(ie. a "huge" vim version).
3766
3767								*netrw-P21*
3768	P21. I've made a directory (or file) with an accented character,    {{{2
3769		but netrw isn't letting me enter that directory/read that file:
3770
3771		Its likely that the shell or o/s is using a different encoding
3772		than you have vim (netrw) using.  A patch to vim supporting
3773		"systemencoding" may address this issue in the future; for
3774		now, just have netrw use the proper encoding.  For example: >
3775
3776			au FileType netrw set enc=latin1
3777<
3778								*netrw-P22*
3779	P22. I get an error message when I try to copy or move a file:      {{{2
3780
3781		**error** (netrw) tried using g:netrw_localcopycmd<cp>; it doesn't work!
3782
3783	     What's wrong?
3784
3785	     Netrw uses several system level commands to do things (see
3786
3787		 |g:netrw_localcopycmd|, |g:netrw_localmovecmd|,
3788		 |g:netrw_localrmdir|, |g:netrw_mkdir_cmd|).
3789
3790	    You may need to adjust the default commands for one or more of
3791	    these commands by setting them properly in your .vimrc.  Another
3792	    source of difficulty is that these commands use vim's local
3793	    directory, which may not be the same as the browsing directory
3794	    shown by netrw (see |g:netrw_keepdir|).
3795
3796
3797==============================================================================
379811. Debugging Netrw Itself				*netrw-debug* {{{1
3799
3800Step 1: check that the problem you've encountered hasn't already been resolved
3801by obtaining a copy of the latest (often developmental) netrw at:
3802
3803	http://www.drchip.org/astronaut/vim/index.html#NETRW
3804
3805The <netrw.vim> script is typically installed on systems as something like:
3806>
3807	/usr/local/share/vim/vim8x/plugin/netrwPlugin.vim
3808	/usr/local/share/vim/vim8x/autoload/netrw.vim
3809		(see output of :echo &rtp)
3810<
3811which is loaded automatically at startup (assuming :set nocp).  If you
3812installed a new netrw, then it will be located at >
3813
3814	$HOME/.vim/plugin/netrwPlugin.vim
3815	$HOME/.vim/autoload/netrw.vim
3816<
3817Step 2: assuming that you've installed the latest version of netrw,
3818check that your problem is really due to netrw.  Create a file
3819called netrw.vimrc with the following contents: >
3820
3821	set nocp
3822	so $HOME/.vim/plugin/netrwPlugin.vim
3823<
3824Then run netrw as follows: >
3825
3826	vim -u netrw.vimrc --noplugins -i NONE [some path here]
3827<
3828Perform whatever netrw commands you need to, and check that the problem is
3829still present.  This procedure sidesteps any issues due to personal .vimrc
3830settings, .viminfo file, and other plugins.  If the problem does not appear,
3831then you need to determine which setting in your .vimrc is causing the
3832conflict with netrw or which plugin(s) is/are involved.
3833
3834Step 3: If the problem still is present, then get a debugging trace from
3835netrw:
3836
3837	1. Get the <Decho.vim> script, available as:
3838
3839	     http://www.drchip.org/astronaut/vim/index.html#DECHO
3840	   or
3841	     http://vim.sourceforge.net/scripts/script.php?script_id=120
3842
3843	  Decho.vim is provided as a "vimball"; see |vimball-intro|.  You
3844	  should edit the Decho.vba.gz file and source it in: >
3845
3846	  	vim Decho.vba.gz
3847		:so %
3848		:q
3849<
3850	2. To turn on debug tracing in netrw, then edit the <netrw.vim>
3851	   file by typing: >
3852
3853		vim netrw.vim
3854		:DechoOn
3855		:wq
3856<
3857	   To restore to normal non-debugging behavior, re-edit <netrw.vim>
3858	   and type >
3859
3860		vim netrw.vim
3861		:DechoOff
3862		:wq
3863<
3864	   This command, provided by <Decho.vim>, will comment out all
3865	   Decho-debugging statements (Dfunc(), Dret(), Decho(), Dredir()).
3866
3867	3. Then bring up vim and attempt to evoke the problem by doing a
3868	   transfer or doing some browsing.  A set of messages should appear
3869	   concerning the steps that <netrw.vim> took in attempting to
3870	   read/write your file over the network in a separate tab or
3871	   server vim window.
3872
3873	   Change the netrw.vimrc file to include the Decho plugin: >
3874
3875		set nocp
3876		so $HOME/.vim/plugin/Decho.vim
3877		so $HOME/.vim/plugin/netrwPlugin.vim
3878<
3879	   You should continue to run vim with >
3880
3881		vim -u netrw.vimrc --noplugins -i NONE [some path here]
3882<
3883	   to avoid entanglements with options and other plugins.
3884
3885	   To save the file: under linux, the output will be in a separate
3886	   remote server window; in it, just save the file with >
3887
3888	   	:w! DBG
3889
3890<	   Under a vim that doesn't support clientserver, your debugging
3891	   output will appear in another tab: >
3892
3893		:tabnext
3894		:set bt=
3895		:w! DBG
3896<
3897	   Furthermore, it'd be helpful if you would type >
3898
3899		:Dsep <command>
3900
3901<	   where <command> is the command you're about to type next,
3902	   thereby making it easier to associate which part of the
3903	   debugging trace is due to which command.
3904
3905	   Please send that information to <netrw.vim>'s maintainer along
3906	   with the o/s you're using and the vim version that you're using
3907	   (see |:version|)  (remove the embedded NOSPAM first) >
3908
3909		[email protected]
3910<
3911==============================================================================
391212. History						*netrw-history* {{{1
3913
3914	v171:	Oct 09, 2020	* included code in s:NetrwOptionsSafe()
3915				  to allow |'bh'| to be set to delete when
3916				  rather than hide when g:netrw_fastbrowse
3917				  was zero.
3918				* Installed |g:netrw_clipboard| setting
3919				* Installed option bypass for |'guioptions'|
3920				  a/A settings
3921				* Changed popup_beval() to |popup_atcursor|()
3922				  in netrw#ErrorMsg (lacygoill). Apparently
3923				  popup_beval doesn't reliably close the
3924				  popup when the mouse is moved.
3925				* VimEnter() now using win_execute to examine
3926				  buffers for an attempt to open a directory.
3927				  Avoids issues with popups/terminal from
3928				  command line. (lacygoill)
3929		Jun 28, 2021	* (zeertzjq) provided a patch for use of
3930				  xmap,xno instead of vmap,vno in
3931				  netrwPlugin.vim. Avoids entanglement with
3932				  select mode.
3933		Jul 14, 2021	* Fixed problem addressed by tst976; opening
3934				  a file using tree mode, going up a
3935				  directory, and opening a file there was
3936				  opening the file in the wrong directory.
3937		Jul 28, 2021	* (Ingo Karkat) provided a patch fixing an
3938				  E488 error with netrwPlugin.vim
3939				  (occurred for vim versions < 8.02)
3940	v170:	Mar 11, 2020	* (reported by Reiner Herrmann) netrw+tree
3941				  would not hide with the ^\..* pattern
3942				  correctly.
3943				* (Marcin Szamotulski) NetrwOptionRestore
3944				  did not restore options correctly that
3945				  had a single quote in the option string.
3946		Apr 13, 2020	* implemented error handling via popup
3947				  windows (see |popup_beval()|)
3948		Apr 30, 2020	* (reported by Manatsu Takahashi) while
3949				  using Lexplore, a modified file could
3950				  be overwritten.  Sol'n: will not overwrite,
3951				  but will emit an |E37| (although one cannot
3952				  add an ! to override)
3953		Jun 07, 2020	* (reported by Jo Totland) repeatedly invoking
3954				  :Lexplore and quitting it left unused
3955				  hidden buffers.  Netrw will now set netrw
3956				  buffers created by :Lexplore to |'bh'|=wipe.
3957	v169:	Dec 20, 2019	* (reported by amkarthik) that netrw's x
3958				  (|netrw-x|) would throw an error when
3959				  attempting to open a local directory.
3960	v168:	Dec 12, 2019	* scp timeout error message not reported,
3961				  hopefully now fixed (Shane Xb Qian)
3962	v167:	Nov 29, 2019	* netrw does a save&restore on @* and @+.
3963				  That causes problems with the clipboard.
3964				  Now restores occurs only if @* or @+ have
3965				  been changed.
3966				* netrw will change @* or @+ less often.
3967				  Never if I happen to have caught all the
3968				  operations that modify the unnamed
3969				  register (which also writes @*).
3970				* Modified hiding behavior so that "s"
3971				  will not ignore hiding.
3972	v166:	Nov 06, 2019	* Removed a space from a nmap for "-"
3973				* Numerous debugging statement changes
3974	v163:	Dec 05, 2017	* (Cristi Balan) reported that a setting ('sel')
3975				  was left changed
3976				* (Holger Mitschke) reported a problem with
3977				  saving and restoring history.  Fixed.
3978				* Hopefully I fixed a nasty bug that caused a
3979				  file rename to wipe out a buffer that it
3980				  should not have wiped out.
3981				* (Holger Mitschke) amended this help file
3982				  with additional |g:netrw_special_syntax|
3983				  items
3984				* Prioritized wget over curl for
3985				  g:netrw_http_cmd
3986	v162:	Sep 19, 2016	* (haya14busa) pointed out two syntax errors
3987				  with a patch; these are now fixed.
3988		Oct 26, 2016	* I started using mate-terminal and found that
3989				  x and gx (|netrw-x| and |netrw-gx|) were no
3990				  longer working.  Fixed (using atril when
3991				  $DESKTOP_SESSION is "mate").
3992		Nov 04, 2016	* (Martin Vuille) pointed out that @+ was
3993				  being restored with keepregstar rather than
3994				  keepregplus.
3995		Nov 09, 2016	* Broke apart the command from the options,
3996				  mostly for Windows.  Introduced new netrw
3997				  settings: |g:netrw_localcopycmdopt|
3998				  |g:netrw_localcopydircmdopt| |g:netrw_localmkdiropt|
3999				  |g:netrw_localmovecmdopt| |g:netrw_localrmdiropt|
4000		Nov 21, 2016	* (mattn) provided a patch for preview; swapped
4001				  winwidth() with winheight()
4002		Nov 22, 2016	* (glacambre) reported that files containing
4003				  spaces weren't being obtained properly via
4004				  scp.  Fix: apparently using single quotes
4005				  such as with 'file name' wasn't enough; the
4006				  spaces inside the quotes also had to be
4007				  escaped (ie. 'file\ name').
4008				* Also fixed obtain (|netrw-O|) to be able to
4009				  obtain files with spaces in their names
4010		Dec 20, 2016	* (xc1427) Reported that using "I" (|netrw-I|)
4011				  when atop "Hiding" in the banner also caused
4012				  the active-banner hiding control to occur
4013		Jan 03, 2017	* (Enno Nagel) reported that attempting to
4014				  apply netrw to a directory that was without
4015				  read permission caused a syntax error.
4016		Jan 13, 2017	* (Ingo Karkat) provided a patch which makes
4017				  using netrw#Call() better.  Now returns
4018				  value of internal routines return, for example.
4019		Jan 13, 2017	* (Ingo Karkat) changed netrw#FileUrlRead to
4020				  use |:edit| instead of |:read|.  I also
4021				  changed the routine name to netrw#FileUrlEdit.
4022		Jan 16, 2017	* (Sayem) reported a problem where :Lexplore
4023				  could generate a new listing buffer and
4024				  window instead of toggling the netrw display.
4025				  Unfortunately, the directions for eliciting
4026				  the problem weren't complete, so I may or
4027				  may not have fixed that issue.
4028		Feb 06, 2017	* Implemented cb and cB.  Changed "c" to "cd".
4029				  (see |netrw-cb|, |netrw-cB|, and |netrw-cd|)
4030		Mar 21, 2017	* previously, netrw would specify (safe) settings
4031				  even when the setting was already safe for
4032				  netrw.  Netrw now attempts to leave such
4033				  already-netrw-safe settings alone.
4034				  (affects s:NetrwOptionRestore() and
4035				  s:NetrwSafeOptions(); also introduced
4036				  s:NetrwRestoreSetting())
4037		Jun 26, 2017	* (Christian Brabandt) provided a patch to
4038				  allow curl to follow redirects (ie. -L
4039				  option)
4040		Jun 26, 2017	* (Callum Howard) reported a problem with
4041				  :Lexpore not removing the Lexplore window
4042				  after a change-directory
4043		Aug 30, 2017	* (Ingo Karkat) one cannot switch to the
4044				  previously edited file (e.g. with CTRL-^)
4045				  after editing a file:// URL.  Patch to
4046				  have a "keepalt" included.
4047		Oct 17, 2017	* (Adam Faryna) reported that gn (|netrw-gn|)
4048				  did not work on directories in the current
4049				  tree
4050	v157:	Apr 20, 2016	* (Nicola) had set up a "nmap <expr> ..." with
4051				  a function that returned a 0 while silently
4052				  invoking a shell command.  The shell command
4053				  activated a ShellCmdPost event which in turn
4054				  called s:LocalBrowseRefresh().  That looks
4055				  over all netrw buffers for changes needing
4056				  refreshes.  However, inside a |:map-<expr>|,
4057				  tab and window changes are disallowed.  Fixed.
4058				  (affects netrw's s:LocalBrowseRefresh())
4059				* |g:netrw_localrmdir| not used any more, but
4060				  the relevant patch that causes |delete()| to
4061				  take over was #1107 (not #1109).
4062				* |expand()| is now used on |g:netrw_home|;
4063				  consequently, g:netrw_home may now use
4064				  environment variables
4065				* s:NetrwLeftmouse and s:NetrwCLeftmouse will
4066				  return without doing anything if invoked
4067				  when inside a non-netrw window
4068		Jun 15, 2016	* gx now calls netrw#GX() which returns
4069				  the word under the cursor.  The new
4070				  wrinkle: if one is in a netrw buffer,
4071				  then netrw's s:NetrwGetWord().
4072		Jun 22, 2016	* Netrw was executing all its associated
4073				  Filetype commands silently; I'm going
4074				  to try doing that "noisily" and see if
4075				  folks have a problem with that.
4076		Aug 12, 2016	* Changed order of tool selection for
4077				  handling http://... viewing.
4078				  (Nikolay Aleksandrovich Pavlov)
4079		Aug 21, 2016	* Included hiding/showing/all for tree
4080				  listings
4081				* Fixed refresh (^L) for tree listings
4082	v156:	Feb 18, 2016	* Changed =~ to =~# where appropriate
4083		Feb 23, 2016	* s:ComposePath(base,subdir) now uses
4084				  fnameescape() on the base portion
4085		Mar 01, 2016	* (gt_macki) reported where :Explore would
4086				  make file unlisted. Fixed (tst943)
4087		Apr 04, 2016	* (reported by John Little) netrw normally
4088				  suppresses browser messages, but sometimes
4089				  those "messages" are what is wanted.
4090				  See |g:netrw_suppress_gx_mesg|
4091		Apr 06, 2016	* (reported by Carlos Pita) deleting a remote
4092				  file was giving an error message.  Fixed.
4093		Apr 08, 2016	* (Charles Cooper) had a problem with an
4094				  undefined b:netrw_curdir.  He also provided
4095				  a fix.
4096		Apr 20, 2016	* Changed s:NetrwGetBuffer(); now uses
4097				  dictionaries.  Also fixed the "No Name"
4098				  buffer problem.
4099	v155:	Oct 29, 2015	* (Timur Fayzrakhmanov) reported that netrw's
4100				  mapping of ctrl-l was not allowing refresh of
4101				  other windows when it was done in a netrw
4102				  window.
4103		Nov 05, 2015	* Improved s:TreeSqueezeDir() to use search()
4104				  instead of a loop
4105				* NetrwBrowse() will return line to
4106				  w:netrw_bannercnt if cursor ended up in
4107				  banner
4108		Nov 16, 2015	* Added a <Plug>NetrwTreeSqueeze (|netrw-s-cr|)
4109		Nov 17, 2015	* Commented out imaps -- perhaps someone can
4110				  tell me how they're useful and should be
4111				  retained?
4112		Nov 20, 2015	* Added |netrw-ma| and |netrw-mA| support
4113		Nov 20, 2015	* gx (|netrw-gx|) on a URL downloaded the
4114				  file in addition to simply bringing up the
4115				  URL in a browser.  Fixed.
4116		Nov 23, 2015	* Added |g:netrw_sizestyle| support
4117		Nov 27, 2015	* Inserted a lot of <c-u>s into various netrw
4118				  maps.
4119		Jan 05, 2016	* |netrw-qL| implemented to mark files based
4120				  upon |location-list|s; similar to |netrw-qF|.
4121		Jan 19, 2016	* using - call delete(directoryname,"d") -
4122				  instead of using g:netrw_localrmdir if
4123				  v7.4 + patch#1107 is available
4124		Jan 28, 2016	* changed to using |winsaveview()| and
4125				  |winrestview()|
4126		Jan 28, 2016	* s:NetrwTreePath() now does a save and
4127				  restore of view
4128		Feb 08, 2016	* Fixed a tree-listing problem with remote
4129				  directories
4130	v154:	Feb 26, 2015	* (Yuri Kanivetsky) reported a situation where
4131				  a file was not treated properly as a file
4132				  due to g:netrw_keepdir == 1
4133		Mar 25, 2015	* (requested by Ben Friz) one may now sort by
4134				  extension
4135		Mar 28, 2015	* (requested by Matt Brooks) netrw has a lot
4136				  of buffer-local mappings; however, some
4137				  plugins (such as vim-surround) set up
4138				  conflicting mappings that cause vim to wait.
4139				  The "<nowait>" modifier has been included
4140				  with most of netrw's mappings to avoid that
4141				  delay.
4142		Jun 26, 2015	* |netrw-gn| mapping implemted
4143				* :Ntree NotADir resulted in having
4144				  the tree listing expand in the error messages
4145				  window.  Fixed.
4146		Jun 29, 2015	* Attempting to delete a file remotely caused
4147				  an error with "keepsol" mentioned; fixed.
4148		Jul 08, 2015	* Several changes to keep the |:jumps| table
4149				  correct when working with
4150				  |g:netrw_fastbrowse| set to 2
4151				* wide listing with accented characters fixed
4152				  (using %-S instead of %-s with a |printf()|
4153		Jul 13, 2015	* (Daniel Hahler) CheckIfKde() could be true
4154				  but kfmclient not installed.  Changed order
4155				  in netrw#BrowseX(): checks if kde and
4156				  kfmclient, then will use xdg-open on a unix
4157				  system (if xdg-open is executable)
4158		Aug 11, 2015	* (McDonnell) tree listing mode wouldn't
4159				  select a file in a open subdirectory.
4160				* (McDonnell) when multiple subdirectories
4161				  were concurrently open in tree listing
4162				  mode, a ctrl-L wouldn't refresh properly.
4163				* The netrw:target menu showed duplicate
4164				  entries
4165		Oct 13, 2015	* (mattn) provided an exception to handle
4166				  windows with shellslash set but no shell
4167		Oct 23, 2015	* if g:netrw_usetab and <c-tab> now used
4168				  to control whether NetrwShrink is used
4169				  (see |netrw-c-tab|)
4170	v153:	May 13, 2014	* added another |g:netrw_ffkeep| usage {{{2
4171		May 14, 2014	* changed s:PerformListing() so that it
4172				  always sets ft=netrw for netrw buffers
4173				  (ie. even when syntax highlighting is
4174				  off, not available, etc)
4175		May 16, 2014	* introduced the |netrw-ctrl-r| functionality
4176		May 17, 2014	* introduced the |netrw-:NetrwMB| functionality
4177				* mb and mB (|netrw-mb|, |netrw-mB|) will
4178				  add/remove marked files from bookmark list
4179		May 20, 2014	* (Enno Nagel) reported that :Lex <dirname>
4180				  wasn't working.  Fixed.
4181		May 26, 2014	* restored test to prevent leftmouse window
4182				  resizing from causing refresh.
4183				  (see s:NetrwLeftmouse())
4184				* fixed problem where a refresh caused cursor
4185				  to go just under the banner instead of
4186				  staying put
4187		May 28, 2014	* (László Bimba) provided a patch for opening
4188				  the |:Lexplore| window 100% high, optionally
4189				  on the right, and will work with remote
4190				  files.
4191		May 29, 2014	* implemented :NetrwC  (see |netrw-:NetrwC|)
4192		Jun 01, 2014	* Removed some "silent"s from commands used
4193				  to implemented scp://... and pscp://...
4194				  directory listing.  Permits request for
4195				  password to appear.
4196		Jun 05, 2014	* (Enno Nagel) reported that user maps "/"
4197				  caused problems with "b" and "w", which
4198				  are mapped (for wide listings only) to
4199				  skip over files rather than just words.
4200		Jun 10, 2014	* |g:netrw_gx| introduced to allow users to
4201				  override default "<cfile>" with the gx
4202				  (|netrw-gx|) map
4203		Jun 11, 2014	* gx (|netrw-gx|), with |'autowrite'| set,
4204				  will write modified files.  s:NetrwBrowseX()
4205				  will now save, turn off, and restore the
4206				  |'autowrite'| setting.
4207		Jun 13, 2014	* added visual map for gx use
4208		Jun 15, 2014	* (Enno Nagel) reported that with having hls
4209				  set and wide listing style in use, that the
4210				  b and w maps caused unwanted highlighting.
4211		Jul 05, 2014	* |netrw-mv| and |netrw-mX| commands included
4212		Jul 09, 2014	* |g:netrw_keepj| included, allowing optional
4213				  keepj
4214		Jul 09, 2014	* fixing bugs due to previous update
4215		Jul 21, 2014	* (Bruno Sutic) provided an updated
4216				  netrw_gitignore.vim
4217		Jul 30, 2014	* (Yavuz Yetim) reported that editing two
4218				  remote files of the same name caused the
4219				  second instance to have a "temporary"
4220				  name.  Fixed: now they use the same buffer.
4221		Sep 18, 2014	* (Yasuhiro Matsumoto) provided a patch which
4222				  allows scp and windows local paths to work.
4223		Oct 07, 2014	* gx (see |netrw-gx|) when atop a directory,
4224				  will now do |gf| instead
4225		Nov 06, 2014	* For cygwin: cygstart will be available for
4226				  netrw#BrowseX() to use if its executable.
4227		Nov 07, 2014	* Began support for file://... urls.  Will use
4228				  |g:netrw_file_cmd| (typically elinks or links)
4229		Dec 02, 2014	* began work on having mc (|netrw-mc|) copy
4230				  directories.  Works for linux machines,
4231				  cygwin+vim, but not for windows+gvim.
4232		Dec 02, 2014	* in tree mode, netrw was not opening
4233				  directories via symbolic links.
4234		Dec 02, 2014	* added resolved link information to
4235				  thin and tree modes
4236		Dec 30, 2014	* (issue#231) |:ls| was not showing
4237				  remote-file buffers reliably.  Fixed.
4238	v152:	Apr 08, 2014	* uses the |'noswapfile'| option (requires {{{2
4239				  vim 7.4 with patch 213)
4240				* (Enno Nagel) turn |'rnu'| off in netrw
4241				  buffers.
4242				* (Quinn Strahl) suggested that netrw
4243				  allow regular window splitting to occur,
4244				  thereby allowing |'equalalways'| to take
4245				  effect.
4246				* (qingtian zhao) normally, netrw will
4247				  save and restore the |'fileformat'|;
4248				  however, sometimes that isn't wanted
4249		Apr 14, 2014	* whenever netrw marks a buffer as ro,
4250				  it will also mark it as nomod.
4251		Apr 16, 2014	* sftp protocol now supported by
4252				  netrw#Obtain(); this means that one
4253				  may use "mc" to copy a remote file
4254				  to a local file using sftp, and that
4255				  the |netrw-O| command can obtain remote
4256				  files via sftp.
4257				* added [count]C support (see |netrw-C|)
4258		Apr 18, 2014	* when |g:netrw_chgwin| is one more than
4259				  the last window, then vertically split
4260				  the last window and use it as the
4261				  chgwin window.
4262		May 09, 2014	* SavePosn was "saving filename under cursor"
4263				  from a non-netrw window when using :Rex.
4264	v151:	Jan 22, 2014	* extended :Rexplore to return to buffer {{{2
4265				  prior to Explore or editing a directory
4266				* (Ken Takata) netrw gave error when
4267				  clipboard was disabled.  Sol'n: Placed
4268				  several if has("clipboard") tests in.
4269				* Fixed ftp://X@Y@Z// problem; X@Y now
4270				  part of user id, and only Z is part of
4271				  hostname.
4272				* (A Loumiotis) reported that completion
4273				  using a directory name containing spaces
4274				  did not work.  Fixed with a retry in
4275				  netrw#Explore() which removes the
4276				  backslashes vim inserted.
4277		Feb 26, 2014	* :Rexplore now records the current file
4278				   using w:netrw_rexfile when returning via
4279				  |:Rexplore|
4280		Mar 08, 2014	* (David Kotchan) provided some patches
4281				  allowing netrw to work properly with
4282				  windows shares.
4283				* Multiple one-liner help messages available
4284				  by pressing <cr> while atop the "Quick
4285				  Help" line
4286				* worked on ShellCmdPost, FocusGained event
4287				  handling.
4288				* |:Lexplore| path: will be used to update
4289				  a left-side netrw browsing directory.
4290		Mar 12, 2014	* |netrw-s-cr|: use <s-cr>  to close
4291				  tree directory implemented
4292		Mar 13, 2014	* (Tony Mechylynck) reported that using
4293				  the browser with ftp on a directory,
4294				  and selecting a gzipped txt file, that
4295				  an E19 occurred (which was issued by
4296				  gzip.vim).  Fixed.
4297		Mar 14, 2014	* Implemented :MF and :MT (see |netrw-:MF|
4298				  and |netrw-:MT|, respectively)
4299		Mar 17, 2014	* |:Ntree| [dir] wasn't working properly; fixed
4300		Mar 18, 2014	* Changed all uses of set to setl
4301		Mar 18, 2014	* Commented the netrw_btkeep line in
4302				  s:NetrwOptionSave(); the effect is that
4303				  netrw buffers will remain as |'bt'|=nofile.
4304				  This should prevent swapfiles being created
4305				  for netrw buffers.
4306		Mar 20, 2014	* Changed all uses of lcd to use s:NetrwLcd()
4307				  instead.  Consistent error handling results
4308				  and it also handles Window's shares
4309				* Fixed |netrw-d| command when applied with ftp
4310				* https: support included for netrw#NetRead()
4311	v150:	Jul 12, 2013	* removed a "keepalt" to allow ":e #" to {{{2
4312				  return to the netrw directory listing
4313		Jul 13, 2013	* (Jonas Diemer) suggested changing
4314				  a <cWORD> to <cfile>.
4315		Jul 21, 2013	* (Yuri Kanivetsky) reported that netrw's
4316				  use of mkdir did not produce directories
4317				  following the user's umask.
4318		Aug 27, 2013	* introduced |g:netrw_altfile| option
4319		Sep 05, 2013	* s:Strlen() now uses |strdisplaywidth()|
4320				  when available, by default
4321		Sep 12, 2013	* (Selyano Baldo) reported that netrw wasn't
4322				  opening some directories properly from the
4323				  command line.
4324		Nov 09, 2013	* |:Lexplore| introduced
4325				* (Ondrej Platek) reported an issue with
4326				  netrw's trees (P15).  Fixed.
4327				* (Jorge Solis) reported that "t" in
4328				  tree mode caused netrw to forget its
4329				  line position.
4330		Dec 05, 2013	* Added <s-leftmouse> file marking
4331				  (see |netrw-mf|)
4332		Dec 05, 2013	* (Yasuhiro Matsumoto) Explore should use
4333				  strlen() instead s:Strlen() when handling
4334				  multibyte chars with strpart()
4335				  (ie. strpart() is byte oriented, not
4336				  display-width oriented).
4337		Dec 09, 2013	* (Ken Takata) Provided a patch; File sizes
4338				  and a portion of timestamps were wrongly
4339				  highlighted with the directory color when
4340				  setting `:let g:netrw_liststyle=1` on Windows.
4341				* (Paul Domaskis) noted that sometimes
4342				  cursorline was activating in non-netrw
4343				  windows.  All but one setting of cursorline
4344				  was done via setl; there was one that was
4345				  overlooked.  Fixed.
4346		Dec 24, 2013	* (esquifit) asked that netrw allow the
4347				  /cygdrive prefix be a user-alterable
4348				  parameter.
4349		Jan 02, 2014	* Fixed a problem with netrw-based ballon
4350				  evaluation (ie. netrw#NetrwBaloonHelp()
4351				  not having been loaded error messages)
4352		Jan 03, 2014	* Fixed a problem with tree listings
4353				* New command installed: |:Ntree|
4354		Jan 06, 2014	* (Ivan Brennan) reported a problem with
4355				  |netrw-P|.  Fixed.
4356		Jan 06, 2014	* Fixed a problem with |netrw-P| when the
4357				  modified file was to be abandoned.
4358		Jan 15, 2014	* (Matteo Cavalleri) reported that when the
4359				  banner is suppressed and tree listing is
4360				  used, a blank line was left at the top of
4361				  the display.  Fixed.
4362		Jan 20, 2014	* (Gideon Go) reported that, in tree listing
4363				  style, with a previous window open, that
4364				  the wrong directory was being used to open
4365				  a file.  Fixed. (P21)
4366	v149:	Apr 18, 2013	* in wide listing format, now have maps for {{{2
4367				  w and b to move to next/previous file
4368		Apr 26, 2013	* one may now copy files in the same
4369				  directory; netrw will issue requests for
4370				  what names the files should be copied under
4371		Apr 29, 2013	* Trying Benzinger's problem again.  Seems
4372				  that commenting out the BufEnter and
4373				  installing VimEnter (only) works.  Weird
4374				  problem!  (tree listing, vim -O Dir1 Dir2)
4375		May 01, 2013	* :Explore ftp://... wasn't working.  Fixed.
4376		May 02, 2013	* introduced |g:netrw_bannerbackslash| as
4377				  requested by Paul Domaskis.
4378		Jul 03, 2013	* Explore now avoids splitting when a buffer
4379				  will be hidden.
4380	v148:	Apr 16, 2013	* changed Netrw's Style menu to allow direct {{{2
4381				  choice of listing style, hiding style, and
4382				  sorting style
4383
4384==============================================================================
438513. Todo						*netrw-todo* {{{1
4386
438707/29/09 : banner	:|g:netrw_banner| can be used to suppress the
4388	   suppression	  banner.  This feature is new and experimental,
4389			  so its in the process of being debugged.
439009/04/09 : "gp"		: See if it can be made to work for remote systems.
4391			: See if it can be made to work with marked files.
4392
4393==============================================================================
439414. Credits						*netrw-credits* {{{1
4395
4396	Vim editor	by Bram Moolenaar (Thanks, Bram!)
4397	dav		support by C Campbell
4398	fetch		support by Bram Moolenaar and C Campbell
4399	ftp		support by C Campbell <[email protected]>
4400	http		support by Bram Moolenaar <[email protected]>
4401	rcp
4402	rsync		support by C Campbell (suggested by Erik Warendorph)
4403	scp		support by raf <[email protected]>
4404	sftp		support by C Campbell
4405
4406	inputsecret(), BufReadCmd, BufWriteCmd contributed by C Campbell
4407
4408	Jérôme Augé		-- also using new buffer method with ftp+.netrc
4409	Bram Moolenaar		-- obviously vim itself, :e and v:cmdarg use,
4410	                           fetch,...
4411	Yasuhiro Matsumoto	-- pointing out undo+0r problem and a solution
4412	Erik Warendorph		-- for several suggestions (g:netrw_..._cmd
4413				   variables, rsync etc)
4414	Doug Claar		-- modifications to test for success with ftp
4415	                           operation
4416
4417==============================================================================
4418Modelines: {{{1
4419vim:tw=78:ts=8:ft=help:noet:norl:fdm=marker
4420