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