home *** CD-ROM | disk | FTP | other *** search
Text File | 2012-05-31 | 120.4 KB | 2,974 lines |
- *pi_netrw.txt* For Vim version 7.3. Last change: 2012 Apr 05
-
- -----------------------------------------------------
- NETRW REFERENCE MANUAL by Charles E. Campbell, Jr.
- -----------------------------------------------------
- Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
- (remove NOSPAM from Campbell's email first)
-
- Copyright: Copyright (C) 1999-2012 Charles E Campbell, Jr *netrw-copyright*
- The VIM LICENSE applies to the files in this package, including
- netrw.vim, pi_netrw.txt, netrwFileHandlers.vim, netrwSettings.vim, and
- syntax/netrw.vim. Like anything else that's free, netrw.vim and its
- associated files are provided *as is* and comes with no warranty of
- any kind, either expressed or implied. No guarantees of
- merchantability. No guarantees of suitability for any purpose. By
- using this plugin, you agree that in no event will the copyright
- holder be liable for any damages resulting from the use of this
- software. Use at your own risk!
-
-
- *dav* *ftp* *netrw-file* *rcp* *scp*
- *davs* *http* *netrw.vim* *rsync* *sftp*
- *fetch* *netrw* *network*
-
- ==============================================================================
- 1. Contents *netrw-contents* {{{1
-
- 1. Contents.............................................|netrw-contents|
- 2. Starting With Netrw..................................|netrw-start|
- 3. Netrw Reference......................................|netrw-ref|
- EXTERNAL APPLICATIONS AND PROTOCOLS................|netrw-externapp|
- READING............................................|netrw-read|
- WRITING............................................|netrw-write|
- SOURCING...........................................|netrw-source|
- DIRECTORY LISTING..................................|netrw-dirlist|
- CHANGING THE USERID AND PASSWORD...................|netrw-chgup|
- VARIABLES AND SETTINGS.............................|netrw-variables|
- PATHS..............................................|netrw-path|
- 4. Network-Oriented File Transfer.......................|netrw-xfer|
- NETRC..............................................|netrw-netrc|
- PASSWORD...........................................|netrw-passwd|
- 5. Activation...........................................|netrw-activate|
- 6. Transparent Remote File Editing......................|netrw-transparent|
- 7. Ex Commands..........................................|netrw-ex|
- 8. Variables and Options................................|netrw-variables|
- 9. Browsing.............................................|netrw-browse|
- Introduction To Browsing...........................|netrw-intro-browse|
- Quick Reference: Maps..............................|netrw-browse-maps|
- Quick Reference: Commands..........................|netrw-browse-cmds|
- Bookmarking A Directory............................|netrw-mb|
- Browsing...........................................|netrw-cr|
- Browsing With A Horizontally Split Window..........|netrw-o|
- Browsing With A New Tab............................|netrw-t|
- Browsing With A Vertically Split Window............|netrw-v|
- Change Listing Style.(thin wide long tree).........|netrw-i|
- Changing To A Bookmarked Directory.................|netrw-gb|
- Changing To A Predecessor Directory................|netrw-u|
- Changing To A Successor Directory..................|netrw-U|
- Customizing Browsing With A User Function..........|netrw-x|
- Deleting Bookmarks.................................|netrw-mB|
- Deleting Files Or Directories......................|netrw-D|
- Directory Exploring Commands.......................|netrw-explore|
- Exploring With Stars and Patterns..................|netrw-star|
- Displaying Information About File..................|netrw-qf|
- Edit File Or Directory Hiding List.................|netrw-ctrl-h|
- Editing The Sorting Sequence.......................|netrw-S|
- Forcing treatment as a file or directory...........|netrw-gd| |netrw-gf|
- Going Up...........................................|netrw--|
- Hiding Files Or Directories........................|netrw-a|
- Improving Browsing.................................|netrw-ssh-hack|
- Listing Bookmarks And History......................|netrw-qb|
- Making A New Directory.............................|netrw-d|
- Making The Browsing Directory The Current Directory|netrw-c|
- Marking Files......................................|netrw-mf|
- Marking Files By Regular Expression................|netrw-mr|
- Marked Files: Arbitrary Command....................|netrw-mx|
- Marked Files: Compression And Decompression........|netrw-mz|
- Marked Files: Copying..............................|netrw-mc|
- Marked Files: Diff.................................|netrw-md|
- Marked Files: Editing..............................|netrw-me|
- Marked Files: Grep.................................|netrw-mg|
- Marked Files: Hiding and Unhiding by Suffix........|netrw-mh|
- Marked Files: Moving...............................|netrw-mm|
- Marked Files: Printing.............................|netrw-mp|
- Marked Files: Sourcing.............................|netrw-ms|
- Marked Files: Tagging..............................|netrw-mT|
- Marked Files: Setting the Target Directory.........|netrw-mt|
- Marked Files: Unmarking............................|netrw-mu|
- Netrw Browser Variables............................|netrw-browser-var|
- Netrw Browsing And Option Incompatibilities........|netrw-incompatible|
- Netrw Settings Window..............................|netrw-settings-window|
- Obtaining A File...................................|netrw-O|
- Preview Window.....................................|netrw-p|
- Previous Window....................................|netrw-P|
- Refreshing The Listing.............................|netrw-ctrl-l|
- Renaming Files Or Directories......................|netrw-move|
- Reversing Sorting Order............................|netrw-r|
- Selecting Sorting Style............................|netrw-s|
- Setting Editing Window.............................|netrw-C|
- 10. Problems and Fixes...................................|netrw-problems|
- 11. Debugging Netrw Itself...............................|netrw-debug|
- 12. History..............................................|netrw-history|
- 13. Todo.................................................|netrw-todo|
- 14. Credits..............................................|netrw-credits|
-
- {Vi does not have any of this}
-
- ==============================================================================
- 2. Starting With Netrw *netrw-start* {{{1
-
- Netrw makes reading files, writing files, browsing over a network, and
- local browsing easy! First, make sure that you have plugins enabled, so
- you'll need to have at least the following in your <.vimrc>:
- (or see |netrw-activate|) >
-
- set nocp " 'compatible' is not set
- filetype plugin on " plugins are enabled
- <
- (see |'cp'| and |:filetype-plugin-on|)
-
- Netrw supports "transparent" editing of files on other machines using urls
- (see |netrw-transparent|). As an example of this, let's assume you have an
- account on some other machine; if you can use scp, try: >
-
- vim scp://hostname/path/to/file
- <
- Want to make ssh/scp easier to use? Check out |netrw-ssh-hack|!
-
- So, what if you have ftp, not ssh/scp? That's easy, too; try >
-
- vim ftp://hostname/path/to/file
- <
- Want to make ftp simpler to use? See if your ftp supports a file called
- <.netrc> -- typically it goes in your home directory, has read/write
- permissions for only the user to read (ie. not group, world, other, etc),
- and has lines resembling >
-
- machine HOSTNAME login USERID password "PASSWORD"
- machine HOSTNAME login USERID password "PASSWORD"
- ...
- default login USERID password "PASSWORD"
- <
- Windows' ftp doesn't support .netrc; however, one may have in one's .vimrc: >
-
- let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE'
- <
- Netrw will substitute the host's machine name for MACHINE from the url it is
- attempting to open, and so one may specify >
- userid
- password
- for each site in a separate file in c:\Users\Myself\.
-
- Now about browsing -- when you just want to look around before editing a
- file. For browsing on your current host, just "edit" a directory: >
-
- vim .
- vim /home/userid/path
- <
- For browsing on a remote host, "edit" a directory (but make sure that
- the directory name is followed by a "/"): >
-
- vim scp://hostname/
- vim ftp://hostname/path/to/dir/
- <
- See |netrw-browse| for more!
-
- There are more protocols supported by netrw than just scp and ftp, too: see the
- next section, |netrw-externapp|, on how to use these external applications with
- netrw and vim.
-
- PREVENTING LOADING *netrw-noload*
-
- If you want to use plugins, but for some reason don't wish to use netrw, then
- you need to avoid loading both the plugin and the autoload portions of netrw.
- You may do so by placing the following two lines in your <.vimrc>: >
-
- :let g:loaded_netrw = 1
- :let g:loaded_netrwPlugin = 1
- <
-
- ==============================================================================
- 3. Netrw Reference *netrw-ref* {{{1
-
- Netrw supports several protocols in addition to scp and ftp as mentioned
- in |netrw-start|. These include dav, fetch, http,... well, just look
- at the list in |netrw-externapp|. Each protocol is associated with a
- variable which holds the default command supporting that protocol.
-
- EXTERNAL APPLICATIONS AND PROTOCOLS *netrw-externapp* {{{2
-
- Protocol Variable Default Value
- -------- ---------------- -------------
- dav: *g:netrw_dav_cmd* = "cadaver" if cadaver is executable
- dav: g:netrw_dav_cmd = "curl -o" elseif curl is available
- fetch: *g:netrw_fetch_cmd* = "fetch -o" if fetch is available
- ftp: *g:netrw_ftp_cmd* = "ftp"
- http: *g:netrw_http_cmd* = "elinks" if elinks is available
- http: g:netrw_http_cmd = "links" elseif links is available
- http: g:netrw_http_cmd = "curl" elseif curl is available
- http: g:netrw_http_cmd = "wget" elseif wget is available
- http: g:netrw_http_cmd = "fetch" elseif fetch is available
- rcp: *g:netrw_rcp_cmd* = "rcp"
- rsync: *g:netrw_rsync_cmd* = "rsync -a"
- scp: *g:netrw_scp_cmd* = "scp -q"
- sftp: *g:netrw_sftp_cmd* = "sftp"
-
- *g:netrw_http_xcmd* : the option string for http://... protocols are
- specified via this variable and may be independently overridden. By
- default, the option arguments for the http-handling commands are: >
-
- elinks : "-source >"
- links : "-source >"
- curl : "-o"
- wget : "-q -O"
- fetch : "-o"
- <
- For example, if your system has elinks, and you'd rather see the
- page using an attempt at rendering the text, you may wish to have >
- let g:netrw_http_xcmd= "-dump >"
- < in your .vimrc.
-
-
- READING *netrw-read* *netrw-nread* {{{2
-
- Generally, one may just use the url notation with a normal editing
- command, such as >
-
- :e ftp://[user@]machine/path
- <
- Netrw also provides the Nread command:
-
- :Nread ? give help
- :Nread "machine:path" uses rcp
- :Nread "machine path" uses ftp w/ <.netrc>
- :Nread "machine id password path" uses ftp
- :Nread "dav://machine[:port]/path" uses cadaver
- :Nread "fetch://[user@]machine/path" uses fetch
- :Nread "ftp://[user@]machine[[:#]port]/path" uses ftp w/ <.netrc>
- :Nread "http://[user@]machine/path" uses http uses wget
- :Nread "rcp://[user@]machine/path" uses rcp
- :Nread "rsync://[user@]machine[:port]/path" uses rsync
- :Nread "scp://[user@]machine[[:#]port]/path" uses scp
- :Nread "sftp://[user@]machine/path" uses sftp
-
- WRITING *netrw-write* *netrw-nwrite* {{{2
-
- One may just use the url notation with a normal file writing
- command, such as >
-
- :w ftp://[user@]machine/path
- <
- Netrw also provides the Nwrite command:
-
- :Nwrite ? give help
- :Nwrite "machine:path" uses rcp
- :Nwrite "machine path" uses ftp w/ <.netrc>
- :Nwrite "machine id password path" uses ftp
- :Nwrite "dav://machine[:port]/path" uses cadaver
- :Nwrite "ftp://[user@]machine[[:#]port]/path" uses ftp w/ <.netrc>
- :Nwrite "rcp://[user@]machine/path" uses rcp
- :Nwrite "rsync://[user@]machine[:port]/path" uses rsync
- :Nwrite "scp://[user@]machine[[:#]port]/path" uses scp
- :Nwrite "sftp://[user@]machine/path" uses sftp
- http: not supported!
-
- SOURCING *netrw-source* {{{2
-
- One may just use the url notation with the normal file sourcing
- command, such as >
-
- :so ftp://[user@]machine/path
- <
- Netrw also provides the Nsource command:
-
- :Nsource ? give help
- :Nsource "dav://machine[:port]/path" uses cadaver
- :Nsource "fetch://[user@]machine/path" uses fetch
- :Nsource "ftp://[user@]machine[[:#]port]/path" uses ftp w/ <.netrc>
- :Nsource "http://[user@]machine/path" uses http uses wget
- :Nsource "rcp://[user@]machine/path" uses rcp
- :Nsource "rsync://[user@]machine[:port]/path" uses rsync
- :Nsource "scp://[user@]machine[[:#]port]/path" uses scp
- :Nsource "sftp://[user@]machine/path" uses sftp
-
- DIRECTORY LISTING *netrw-trailingslash* *netrw-dirlist* {{{2
-
- One may browse a directory to get a listing by simply attempting to
- edit the directory: >
-
- :e scp://[user]@hostname/path/
- :e ftp://[user]@hostname/path/
- <
- For remote directory listings (ie. those using scp or ftp), that
- trailing "/" is necessary (the slash tells netrw to treat the argument
- as a directory to browse instead of as a file to download).
-
- The Nread command may also be used to accomplish this (again, that
- trailing slash is necessary): >
-
- :Nread [protocol]://[user]@hostname/path/
- <
- *netrw-login* *netrw-password*
- CHANGING USERID AND PASSWORD *netrw-chgup* *netrw-userpass* {{{2
-
- Attempts to use ftp will prompt you for a user-id and a password.
- These will be saved in global variables |g:netrw_uid| and
- |s:netrw_passwd|; subsequent use of ftp will re-use those two strings,
- thereby simplifying use of ftp. However, if you need to use a
- different user id and/or password, you'll want to call |NetUserPass()|
- first. To work around the need to enter passwords, check if your ftp
- supports a <.netrc> file in your home directory. Also see
- |netrw-passwd| (and if you're using ssh/scp hoping to figure out how
- to not need to use passwords for scp, look at |netrw-ssh-hack|).
-
- :NetUserPass [uid [password]] -- prompts as needed
- :call NetUserPass() -- prompts for uid and password
- :call NetUserPass("uid") -- prompts for password
- :call NetUserPass("uid","password") -- sets global uid and password
-
- NETRW VARIABLES AND SETTINGS *netrw-variables* {{{2
- (Also see:
- |netrw-browser-var| : netrw browser option variables
- |netrw-protocol| : file transfer protocol option variables
- |netrw-settings| : additional file transfer options
- |netrw-browser-options| : these options affect browsing directories
- )
-
- Netrw provides a lot of variables which allow you to customize netrw to your
- preferences. One way to look at them is via the command :NetrwSettings (see
- |netrw-settings|) which will display your current netrw settings. Most such
- settings are described below, in |netrw-browser-options|, and in
- |netrw-externapp|:
-
- *b:netrw_lastfile* last file Network-read/written retained on a
- per-buffer basis (supports plain :Nw )
-
- *g:netrw_bufsettings* the settings that netrw buffers have
- (default) noma nomod nonu nowrap ro nobl
-
- *g:netrw_chgwin* specifies a window number where file edits will take
- place. (also see |netrw-C|)
- (default) not defined
-
- *g:Netrw_funcref* specifies a function (or functions) to be called when
- netrw edits a file. The file is first edited, and
- then the function reference (|Funcref|) is called.
- This variable may also hold a |List| of Funcrefs.
- (default) not defined. (the capital in g:Netrw...
- is required by its holding a function reference)
- >
- Example: place in .vimrc; affects all file opening
- fun! MyFuncRef()
- endfun
- let g:Netrw_funcref= function("MyFuncRef")
- <
- *g:netrw_ftp* if it doesn't exist, use default ftp
- =0 use default ftp (uid password)
- =1 use alternate ftp method (user uid password)
- If you're having trouble with ftp, try changing the
- value of this variable to see if the alternate ftp
- method works for your setup.
-
- *g:netrw_ftp_options* Chosen by default, these options are supposed to turn
- interactive prompting off and to restrain ftp from
- attempting auto-login upon initial connection.
- However, it appears that not all ftp implementations
- support this (ex. ncftp).
- ="-i -n"
-
- *g:netrw_ftpextracmd* default: doesn't exist
- If this variable exists, then any string it contains
- will be placed into the commands set to your ftp
- client. As an example:
- ="passive"
-
- *g:netrw_ftpmode* ="binary" (default)
- ="ascii"
-
- *g:netrw_ignorenetrc* =0 (default for linux, cygwin)
- =1 If you have a <.netrc> file but it doesn't work and
- you want it ignored, then set this variable as
- shown. (default for Windows + cmd.exe)
-
- *g:netrw_menu* =0 disable netrw's menu
- =1 (default) netrw's menu enabled
-
- *g:netrw_nogx* if this variable exists, then the "gx" map will not
- be available (see |netrw-gx|)
-
- *g:netrw_uid* (ftp) user-id, retained on a per-vim-session basis
- *s:netrw_passwd* (ftp) password, retained on a per-vim-session basis
-
- *g:netrw_preview* =0 (default) preview window shown in a horizontally
- split window
- =1 preview window shown in a vertically split window.
- Also affects the "previous window" (see |netrw-P|) in
- the same way.
-
- *g:netrw_scpport* = "-P" : option to use to set port for scp
- *g:netrw_sshport* = "-p" : option to use to set port for ssh
-
- *g:netrw_sepchr* =\0xff
- =\0x01 for enc == euc-jp (and perhaps it should be for
- others, too, please let me know)
- Separates priority codes from filenames internally.
- See |netrw-p12|.
-
- *g:netrw_silent* =0 : transfers done normally
- =1 : transfers done silently
-
- *g:netrw_use_errorwindow* =1 : messages from netrw will use a separate one
- line window. This window provides reliable
- delivery of messages. (default)
- =0 : messages from netrw will use echoerr ;
- messages don't always seem to show up this
- way, but one doesn't have to quit the window.
-
- *g:netrw_win95ftp* =1 if using Win95, will remove four trailing blank
- lines that o/s's ftp "provides" on transfers
- =0 force normal ftp behavior (no trailing line removal)
-
- *g:netrw_cygwin* =1 assume scp under windows is from cygwin. Also
- permits network browsing to use ls with time and
- size sorting (default if windows)
- =0 assume Windows' scp accepts windows-style paths
- Network browsing uses dir instead of ls
- This option is ignored if you're using unix
-
- *g:netrw_use_nt_rcp* =0 don't use the rcp of WinNT, Win2000 and WinXP
- =1 use WinNT's rcp in binary mode (default)
-
- PATHS *netrw-path* {{{2
-
- Paths to files are generally user-directory relative for most protocols.
- It is possible that some protocol will make paths relative to some
- associated directory, however.
- >
- example: vim scp://user@host/somefile
- example: vim scp://user@host/subdir1/subdir2/somefile
- <
- where "somefile" is in the "user"'s home directory. If you wish to get a
- file using root-relative paths, use the full path:
- >
- example: vim scp://user@host//somefile
- example: vim scp://user@host//subdir1/subdir2/somefile
- <
-
- ==============================================================================
- 4. Network-Oriented File Transfer *netrw-xfer* {{{1
-
- Network-oriented file transfer under Vim is implemented by a VimL-based script
- (<netrw.vim>) using plugin techniques. It currently supports both reading and
- writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch,
- dav/cadaver, rsync, or sftp.
-
- http is currently supported read-only via use of wget or fetch.
-
- <netrw.vim> is a standard plugin which acts as glue between Vim and the
- various file transfer programs. It uses autocommand events (BufReadCmd,
- FileReadCmd, BufWriteCmd) to intercept reads/writes with url-like filenames. >
-
- ex. vim ftp://hostname/path/to/file
- <
- The characters preceding the colon specify the protocol to use; in the
- example, it's ftp. The <netrw.vim> script then formulates a command or a
- series of commands (typically ftp) which it issues to an external program
- (ftp, scp, etc) which does the actual file transfer/protocol. Files are read
- from/written to a temporary file (under Unix/Linux, /tmp/...) which the
- <netrw.vim> script will clean up.
-
- Now, a word about Jan Minář's "FTP User Name and Password Disclosure"; first,
- ftp is not a secure protocol. User names and passwords are transmitted "in
- the clear" over the internet; any snooper tool can pick these up; this is not
- a netrw thing, this is a ftp thing. If you're concerned about this, please
- try to use scp or sftp instead.
-
- Netrw re-uses the user id and password during the same vim session and so long
- as the remote hostname remains the same.
-
- Jan seems to be a bit confused about how netrw handles ftp; normally multiple
- commands are performed in a "ftp session", and he seems to feel that the
- uid/password should only be retained over one ftp session. However, netrw
- does every ftp operation in a separate "ftp session"; so remembering the
- uid/password for just one "ftp session" would be the same as not remembering
- the uid/password at all. IMHO this would rapidly grow tiresome as one
- browsed remote directories, for example.
-
- On the other hand, thanks go to Jan M. for pointing out the many
- vulnerabilities that netrw (and vim itself) had had in handling "crafted"
- filenames. The |shellescape()| and |fnameescape()| functions were written in
- response by Bram Moolenaar to handle these sort of problems, and netrw has
- been modified to use them. Still, my advice is, if the "filename" looks like
- a vim command that you aren't comfortable with having executed, don't open it.
-
- *netrw-putty* *netrw-pscp* *netrw-psftp*
- One may modify any protocol's implementing external application by setting a
- variable (ex. scp uses the variable g:netrw_scp_cmd, which is defaulted to
- "scp -q"). As an example, consider using PuTTY: >
-
- let g:netrw_scp_cmd = '"c:\Program Files\PuTTY\pscp.exe" -q -batch'
- let g:netrw_sftp_cmd= '"c:\Program Files\PuTTY\psftp.exe"'
- <
- (note: it has been reported that windows 7 with putty v0.6's "-batch" option
- doesn't work, so its best to leave it off for that system)
-
- See |netrw-p8| for more about putty, pscp, psftp, etc.
-
- Ftp, an old protocol, seems to be blessed by numerous implementations.
- Unfortunately, some implementations are noisy (ie., add junk to the end of the
- file). Thus, concerned users may decide to write a NetReadFixup() function
- that will clean up after reading with their ftp. Some Unix systems (ie.,
- FreeBSD) provide a utility called "fetch" which uses the ftp protocol but is
- not noisy and more convenient, actually, for <netrw.vim> to use.
- Consequently, if "fetch" is available (ie. executable), it may be preferable
- to use it for ftp://... based transfers.
-
- For rcp, scp, sftp, and http, one may use network-oriented file transfers
- transparently; ie.
- >
- vim rcp://[user@]machine/path
- vim scp://[user@]machine/path
- <
- If your ftp supports <.netrc>, then it too can be transparently used
- if the needed triad of machine name, user id, and password are present in
- that file. Your ftp must be able to use the <.netrc> file on its own, however.
- >
- vim ftp://[user@]machine[[:#]portnumber]/path
- <
- Windows provides an ftp (typically c:\Windows\System32\ftp.exe) which uses
- an option, -s:filename (filename can and probably should be a full path)
- which contains ftp commands which will be automatically run whenever ftp
- starts. You may use this feature to enter a user and password for one site: >
- userid
- password
- < *netrw-windows-netrc* *netrw-windows-s*
- If |g:netrw_ftp_cmd| contains -s:[path/]MACHINE, then (on Windows machines only)
- netrw will substitute the current machine name requested for ftp connections
- for MACHINE. Hence one can have multiple machine.ftp files containing login
- and password for ftp. Example: >
-
- let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE'
- vim ftp://myhost.somewhere.net/
- will use a file >
- C:\Users\Myself\myhost.ftp
- <
- Often, ftp will need to query the user for the userid and password.
- The latter will be done "silently"; ie. asterisks will show up instead of
- the actually-typed-in password. Netrw will retain the userid and password
- for subsequent read/writes from the most recent transfer so subsequent
- transfers (read/write) to or from that machine will take place without
- additional prompting.
-
- *netrw-urls*
- +=================================+============================+============+
- | Reading | Writing | Uses |
- +=================================+============================+============+
- | DAV: | | |
- | dav://host/path | | cadaver |
- | :Nread dav://host/path | :Nwrite dav://host/path | cadaver |
- +---------------------------------+----------------------------+------------+
- | DAV + SSL: | | |
- | davs://host/path | | cadaver |
- | :Nread davs://host/path | :Nwrite davs://host/path | cadaver |
- +---------------------------------+----------------------------+------------+
- | FETCH: | | |
- | fetch://[user@]host/path | | |
- | fetch://[user@]host:http/path | Not Available | fetch |
- | :Nread fetch://[user@]host/path| | |
- +---------------------------------+----------------------------+------------+
- | FILE: | | |
- | file:///* | file:///* | |
- | file://localhost/* | file://localhost/* | |
- +---------------------------------+----------------------------+------------+
- | FTP: (*3) | (*3) | |
- | ftp://[user@]host/path | ftp://[user@]host/path | ftp (*2) |
- | :Nread ftp://host/path | :Nwrite ftp://host/path | ftp+.netrc |
- | :Nread host path | :Nwrite host path | ftp+.netrc |
- | :Nread host uid pass path | :Nwrite host uid pass path | ftp |
- +---------------------------------+----------------------------+------------+
- | HTTP: wget is executable: (*4) | | |
- | http://[user@]host/path | Not Available | wget |
- +---------------------------------+----------------------------+------------+
- | HTTP: fetch is executable (*4) | | |
- | http://[user@]host/path | Not Available | fetch |
- +---------------------------------+----------------------------+------------+
- | RCP: | | |
- | rcp://[user@]host/path | rcp://[user@]host/path | rcp |
- +---------------------------------+----------------------------+------------+
- | RSYNC: | | |
- | rsync://[user@]host/path | rsync://[user@]host/path | rsync |
- | :Nread rsync://host/path | :Nwrite rsync://host/path | rsync |
- | :Nread rcp://host/path | :Nwrite rcp://host/path | rcp |
- +---------------------------------+----------------------------+------------+
- | SCP: | | |
- | scp://[user@]host/path | scp://[user@]host/path | scp |
- | :Nread scp://host/path | :Nwrite scp://host/path | scp (*1) |
- +---------------------------------+----------------------------+------------+
- | SFTP: | | |
- | sftp://[user@]host/path | sftp://[user@]host/path | sftp |
- | :Nread sftp://host/path | :Nwrite sftp://host/path | sftp (*1) |
- +=================================+============================+============+
-
- (*1) For an absolute path use scp://machine//path.
-
- (*2) if <.netrc> is present, it is assumed that it will
- work with your ftp client. Otherwise the script will
- prompt for user-id and password.
-
- (*3) for ftp, "machine" may be machine#port or machine:port
- if a different port is needed than the standard ftp port
-
- (*4) for http:..., if wget is available it will be used. Otherwise,
- if fetch is available it will be used.
-
- Both the :Nread and the :Nwrite ex-commands can accept multiple filenames.
-
-
- NETRC *netrw-netrc*
-
- The <.netrc> file, typically located in your home directory, contains lines
- therein which map a hostname (machine name) to the user id and password you
- prefer to use with it.
-
- The typical syntax for lines in a <.netrc> file is given as shown below.
- Ftp under Unix usually supports <.netrc>; ftp under Windows usually doesn't.
- >
- machine {full machine name} login {user-id} password "{password}"
- default login {user-id} password "{password}"
-
- Your ftp client must handle the use of <.netrc> on its own, but if the
- <.netrc> file exists, an ftp transfer will not ask for the user-id or
- password.
-
- Note:
- Since this file contains passwords, make very sure nobody else can
- read this file! Most programs will refuse to use a .netrc that is
- readable for others. Don't forget that the system administrator can
- still read the file! Ie. for Linux/Unix: chmod 600 .netrc
-
- Even though Windows' ftp clients typically do not support .netrc, netrw has
- a work-around: see |netrw-windows-s|.
-
-
- PASSWORD *netrw-passwd*
-
- The script attempts to get passwords for ftp invisibly using |inputsecret()|,
- a built-in Vim function. See |netrw-userpass| for how to change the password
- after one has set it.
-
- Unfortunately there doesn't appear to be a way for netrw to feed a password to
- scp. Thus every transfer via scp will require re-entry of the password.
- However, |netrw-ssh-hack| can help with this problem.
-
-
- ==============================================================================
- 5. Activation *netrw-activate* {{{1
-
- Network-oriented file transfers are available by default whenever Vim's
- |'nocompatible'| mode is enabled. Netrw's script files reside in your
- system's plugin, autoload, and syntax directories; just the
- plugin/netrwPlugin.vim script is sourced automatically whenever you bring up
- vim. The main script in autoload/netrw.vim is only loaded when you actually
- use netrw. I suggest that, at a minimum, you have at least the following in
- your <.vimrc> customization file: >
-
- set nocp
- if version >= 600
- filetype plugin indent on
- endif
- <
-
- ==============================================================================
- 6. Transparent Remote File Editing *netrw-transparent* {{{1
-
- Transparent file transfers occur whenever a regular file read or write
- (invoked via an |:autocmd| for |BufReadCmd|, |BufWriteCmd|, or |SourceCmd|
- events) is made. Thus one may read, write, or source files across networks
- just as easily as if they were local files! >
-
- vim ftp://[user@]machine/path
- ...
- :wq
-
- See |netrw-activate| for more on how to encourage your vim to use plugins
- such as netrw.
-
-
- ==============================================================================
- 7. Ex Commands *netrw-ex* {{{1
-
- The usual read/write commands are supported. There are also a few
- additional commands available. Often you won't need to use Nwrite or
- Nread as shown in |netrw-transparent| (ie. simply use >
- :e url
- :r url
- :w url
- instead, as appropriate) -- see |netrw-urls|. In the explanations
- below, a {netfile} is an url to a remote file.
-
- *:Nwrite* *:Nw*
- :[range]Nw[rite] Write the specified lines to the current
- file as specified in b:netrw_lastfile.
- (related: |netrw-nwrite|)
-
- :[range]Nw[rite] {netfile} [{netfile}]...
- Write the specified lines to the {netfile}.
-
- *:Nread* *:Nr*
- :Nr[ead] Read the lines from the file specified in b:netrw_lastfile
- into the current buffer. (related: |netrw-nread|)
-
- :Nr[ead] {netfile} {netfile}...
- Read the {netfile} after the current line.
-
- *:Nsource* *:Ns*
- :Ns[ource] {netfile}
- Source the {netfile}.
- To start up vim using a remote .vimrc, one may use
- the following (all on one line) (tnx to Antoine Mechelynck) >
- vim -u NORC -N
- --cmd "runtime plugin/netrwPlugin.vim"
- --cmd "source scp://HOSTNAME/.vimrc"
- < (related: |netrw-source|)
-
- :call NetUserPass() *NetUserPass()*
- If g:netrw_uid and s:netrw_passwd don't exist,
- this function will query the user for them.
- (related: |netrw-userpass|)
-
- :call NetUserPass("userid")
- This call will set the g:netrw_uid and, if
- the password doesn't exist, will query the user for it.
- (related: |netrw-userpass|)
-
- :call NetUserPass("userid","passwd")
- This call will set both the g:netrw_uid and s:netrw_passwd.
- The user-id and password are used by ftp transfers. One may
- effectively remove the user-id and password by using empty
- strings (ie. "").
- (related: |netrw-userpass|)
-
- :NetrwSettings This command is described in |netrw-settings| -- used to
- display netrw settings and change netrw behavior.
-
-
- ==============================================================================
- 8. Variables and Options *netrw-var* *netrw-settings* {{{1
-
- (also see: |netrw-options| |netrw-variables| |netrw-protocol|
- |netrw-browser-settings| |netrw-browser-options| )
-
- The <netrw.vim> script provides several variables which act as options to
- affect <netrw.vim>'s file transfer behavior. These variables typically may be
- set in the user's <.vimrc> file: (see also |netrw-settings| |netrw-protocol|)
- *netrw-options*
- >
- -------------
- Netrw Options
- -------------
- Option Meaning
- -------------- -----------------------------------------------
- <
- b:netrw_col Holds current cursor position (during NetWrite)
- g:netrw_cygwin =1 assume scp under windows is from cygwin
- (default/windows)
- =0 assume scp under windows accepts windows
- style paths (default/else)
- g:netrw_ftp =0 use default ftp (uid password)
- g:netrw_ftpmode ="binary" (default)
- ="ascii" (your choice)
- g:netrw_ignorenetrc =1 (default)
- if you have a <.netrc> file but you don't
- want it used, then set this variable. Its
- mere existence is enough to cause <.netrc>
- to be ignored.
- b:netrw_lastfile Holds latest method/machine/path.
- b:netrw_line Holds current line number (during NetWrite)
- g:netrw_silent =0 transfers done normally
- =1 transfers done silently
- g:netrw_uid Holds current user-id for ftp.
- g:netrw_use_nt_rcp =0 don't use WinNT/2K/XP's rcp (default)
- =1 use WinNT/2K/XP's rcp, binary mode
- g:netrw_win95ftp =0 use unix-style ftp even if win95/98/ME/etc
- =1 use default method to do ftp >
- -----------------------------------------------------------------------
- <
- *netrw-internal-variables*
- The script will also make use of the following variables internally, albeit
- temporarily.
- >
- -------------------
- Temporary Variables
- -------------------
- Variable Meaning
- -------- ------------------------------------
- <
- b:netrw_method Index indicating rcp/ftp+.netrc/ftp
- w:netrw_method (same as b:netrw_method)
- g:netrw_machine Holds machine name parsed from input
- b:netrw_fname Holds filename being accessed >
- ------------------------------------------------------------
- <
- *netrw-protocol*
-
- Netrw supports a number of protocols. These protocols are invoked using the
- variables listed below, and may be modified by the user.
- >
- ------------------------
- Protocol Control Options
- ------------------------
- Option Type Setting Meaning
- --------- -------- -------------- ---------------------------
- <
- netrw_ftp variable =doesn't exist userid set by "user userid"
- =0 userid set by "user userid"
- =1 userid set by "userid"
- NetReadFixup function =doesn't exist no change
- =exists Allows user to have files
- read via ftp automatically
- transformed however they wish
- by NetReadFixup()
- g:netrw_dav_cmd variable ="cadaver" if cadaver is executable
- g:netrw_dav_cmd variable ="curl -o" elseif curl is executable
- g:netrw_fetch_cmd variable ="fetch -o" if fetch is available
- g:netrw_ftp_cmd variable ="ftp"
- g:netrw_http_cmd variable ="fetch -o" if fetch is available
- g:netrw_http_cmd variable ="wget -O" else if wget is available
- g:netrw_list_cmd variable ="ssh USEPORT HOSTNAME ls -Fa"
- g:netrw_rcp_cmd variable ="rcp"
- g:netrw_rsync_cmd variable ="rsync -a"
- g:netrw_scp_cmd variable ="scp -q"
- g:netrw_sftp_cmd variable ="sftp" >
- -------------------------------------------------------------------------
- <
- *netrw-ftp*
-
- The g:netrw_..._cmd options (|g:netrw_ftp_cmd| and |g:netrw_sftp_cmd|)
- specify the external program to use handle the ftp protocol. They may
- include command line options (such as -p for passive mode). Example: >
-
- let g:netrw_ftp_cmd= "ftp -p"
- <
- Browsing is supported by using the |g:netrw_list_cmd|; the substring
- "HOSTNAME" will be changed via substitution with whatever the current request
- is for a hostname.
-
- Two options (|g:netrw_ftp| and |netrw-fixup|) both help with certain ftp's
- that give trouble . In order to best understand how to use these options if
- ftp is giving you troubles, a bit of discussion is provided on how netrw does
- ftp reads.
-
- For ftp, netrw typically builds up lines of one of the following formats in a
- temporary file:
- >
- IF g:netrw_ftp !exists or is not 1 IF g:netrw_ftp exists and is 1
- ---------------------------------- ------------------------------
- <
- open machine [port] open machine [port]
- user userid password userid password
- [g:netrw_ftpmode] password
- [g:netrw_ftpextracmd] [g:netrw_ftpmode]
- get filename tempfile [g:netrw_extracmd]
- get filename tempfile >
- ---------------------------------------------------------------------
- <
- The |g:netrw_ftpmode| and |g:netrw_ftpextracmd| are optional.
-
- Netrw then executes the lines above by use of a filter:
- >
- :%! {g:netrw_ftp_cmd} -i [-n]
- <
- where
- g:netrw_ftp_cmd is usually "ftp",
- -i tells ftp not to be interactive
- -n means don't use netrc and is used for Method #3 (ftp w/o <.netrc>)
-
- If <.netrc> exists it will be used to avoid having to query the user for
- userid and password. The transferred file is put into a temporary file.
- The temporary file is then read into the main editing session window that
- requested it and the temporary file deleted.
-
- If your ftp doesn't accept the "user" command and immediately just demands a
- userid, then try putting "let netrw_ftp=1" in your <.vimrc>.
-
- *netrw-cadaver*
- To handle the SSL certificate dialog for untrusted servers, one may pull
- down the certificate and place it into /usr/ssl/cert.pem. This operation
- renders the server treatment as "trusted".
-
- *netrw-fixup* *netreadfixup*
- If your ftp for whatever reason generates unwanted lines (such as AUTH
- messages) you may write a NetReadFixup() function:
- >
- function! NetReadFixup(method,line1,line2)
- " a:line1: first new line in current file
- " a:line2: last new line in current file
- if a:method == 1 "rcp
- elseif a:method == 2 "ftp + <.netrc>
- elseif a:method == 3 "ftp + machine,uid,password,filename
- elseif a:method == 4 "scp
- elseif a:method == 5 "http/wget
- elseif a:method == 6 "dav/cadaver
- elseif a:method == 7 "rsync
- elseif a:method == 8 "fetch
- elseif a:method == 9 "sftp
- else " complain
- endif
- endfunction
- >
- The NetReadFixup() function will be called if it exists and thus allows you to
- customize your reading process. As a further example, <netrw.vim> contains
- just such a function to handle Windows 95 ftp. For whatever reason, Windows
- 95's ftp dumps four blank lines at the end of a transfer, and so it is
- desirable to automate their removal. Here's some code taken from <netrw.vim>
- itself:
- >
- if has("win95") && g:netrw_win95ftp
- fun! NetReadFixup(method, line1, line2)
- if method == 3 " ftp (no <.netrc>)
- let fourblanklines= line2 - 3
- silent fourblanklines.",".line2."g/^\s*/d"
- endif
- endfunction
- endif
- >
-
- ==============================================================================
- 9. Browsing *netrw-browsing* *netrw-browse* *netrw-help* {{{1
- *netrw-browser* *netrw-dir* *netrw-list*
-
- INTRODUCTION TO BROWSING *netrw-intro-browse* {{{2
- (Quick References: |netrw-quickmaps| |netrw-quickcoms|)
-
- Netrw supports the browsing of directories on your local system and on remote
- hosts; browsing includes listing files and directories, entering directories,
- editing files therein, deleting files/directories, making new directories,
- moving (renaming) files and directories, copying files and directories, etc.
- One may mark files and execute any system command on them! The Netrw browser
- generally implements the previous explorer's maps and commands for remote
- directories, although details (such as pertinent global variable names)
- necessarily differ. To browse a directory, simply "edit" it! >
-
- vim /your/directory/
- vim .
- vim c:\your\directory\
- <
- (Related topics: |netrw-cr| |netrw-o| |netrw-p| |netrw-P| |netrw-t|
- |netrw-mf| |netrw-mx| |netrw-D| |netrw-R| |netrw-v| )
-
- The Netrw remote file and directory browser handles two protocols: ssh and
- ftp. The protocol in the url, if it is ftp, will cause netrw also to use ftp
- in its remote browsing. Specifying any other protocol will cause it to be
- used for file transfers; but the ssh protocol will be used to do remote
- browsing.
-
- To use Netrw's remote directory browser, simply attempt to read a "file" with
- a trailing slash and it will be interpreted as a request to list a directory:
- >
- vim [protocol]://[user@]hostname/path/
- <
- where [protocol] is typically scp or ftp. As an example, try: >
-
- vim ftp://ftp.home.vim.org/pub/vim/
- <
- For local directories, the trailing slash is not required. Again, because it's
- easy to miss: to browse remote directories, the url must terminate with a
- slash!
-
- If you'd like to avoid entering the password repeatedly for remote directory
- listings with ssh or scp, see |netrw-ssh-hack|. To avoid password entry with
- ftp, see |netrw-netrc| (if your ftp supports it).
-
- There are several things you can do to affect the browser's display of files:
-
- * To change the listing style, press the "i" key (|netrw-i|).
- Currently there are four styles: thin, long, wide, and tree.
- To make that change "permanent", see |g:netrw_liststyle|.
-
- * To hide files (don't want to see those xyz~ files anymore?) see
- |netrw-ctrl-h|.
-
- * Press s to sort files by name, time, or size.
-
- See |netrw-browse-cmds| for all the things you can do with netrw!
-
- *netrw-getftype* *netrw-filigree* *netrw-ftype*
- The |getftype()| function is used to append a bit of filigree to indicate
- filetype to locally listed files:
-
- directory : /
- executable : *
- fifo : |
- links : @
- sockets : =
-
- The filigree also affects the |g:netrw_sort_sequence|.
-
-
- QUICK HELP *netrw-quickhelp* {{{2
- (Use ctrl-] to select a topic)~
- Intro to Browsing...............................|netrw-intro-browse|
- Quick Reference: Maps.........................|netrw-quickmap|
- Quick Reference: Commands.....................|netrw-browse-cmds|
- Hiding
- Edit hiding list..............................|netrw-ctrl-h|
- Hiding Files or Directories...................|netrw-a|
- Hiding/Unhiding by suffix.....................|netrw-mh|
- Hiding dot-files.............................|netrw-gh|
- Listing Style
- Select listing style (thin/long/wide/tree)....|netrw-i|
- Associated setting variable...................|g:netrw_liststyle|
- Shell command used to perform listing.........|g:netrw_list_cmd|
- Quick file info...............................|netrw-qf|
- Sorted by
- Select sorting style (name/time/size).........|netrw-s|
- Editing the sorting sequence..................|netrw-S|
- Sorting options...............................|g:netrw_sort_options|
- Associated setting variable...................|g:netrw_sort_sequence|
- Reverse sorting order.........................|netrw-r|
-
-
- *netrw-quickmap* *netrw-quickmaps*
- QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
- >
- --- ----------------- ----
- Map Quick Explanation Link
- --- ----------------- ----
- < <F1> Causes Netrw to issue help
- <cr> Netrw will enter the directory or read the file |netrw-cr|
- <del> Netrw will attempt to remove the file/directory |netrw-del|
- - Makes Netrw go up one directory |netrw--|
- a Toggles between normal display, |netrw-a|
- hiding (suppress display of files matching g:netrw_list_hide)
- showing (display only files which match g:netrw_list_hide)
- c Make browsing directory the current directory |netrw-c|
- C Setting the editing window |netrw-C|
- d Make a directory |netrw-d|
- D Attempt to remove the file(s)/directory(ies) |netrw-D|
- gb Go to previous bookmarked directory |netrw-gb|
- gh Quick hide/unhide of dot-files |netrw-gh|
- <c-h> Edit file hiding list |netrw-ctrl-h|
- i Cycle between thin, long, wide, and tree listings |netrw-i|
- <c-l> Causes Netrw to refresh the directory listing |netrw-ctrl-l|
- mb Bookmark current directory |netrw-mb|
- mc Copy marked files to marked-file target directory |netrw-mc|
- md Apply diff to marked files (up to 3) |netrw-md|
- me Place marked files on arg list and edit them |netrw-me|
- mf Mark a file |netrw-mf|
- mh Toggle marked file suffices' presence on hiding list |netrw-mh|
- mm Move marked files to marked-file target directory |netrw-mm|
- mp Print marked files |netrw-mp|
- mr Mark files satisfying a shell-style |regexp| |netrw-mr|
- mt Current browsing directory becomes markfile target |netrw-mt|
- mT Apply ctags to marked files |netrw-mT|
- mu Unmark all marked files |netrw-mu|
- mx Apply arbitrary shell command to marked files |netrw-mx|
- mz Compress/decompress marked files |netrw-mz|
- o Enter the file/directory under the cursor in a new |netrw-o|
- browser window. A horizontal split is used.
- O Obtain a file specified by cursor |netrw-O|
- p Preview the file |netrw-p|
- P Browse in the previously used window |netrw-P|
- qb List bookmarked directories and history |netrw-qb|
- qf Display information on file |netrw-qf|
- r Reverse sorting order |netrw-r|
- R Rename the designed file(s)/directory(ies) |netrw-R|
- s Select sorting style: by name, time, or file size |netrw-s|
- S Specify suffix priority for name-sorting |netrw-S|
- t Enter the file/directory under the cursor in a new tab|netrw-t|
- u Change to recently-visited directory |netrw-u|
- U Change to subsequently-visited directory |netrw-U|
- v Enter the file/directory under the cursor in a new |netrw-v|
- browser window. A vertical split is used.
- x View file with an associated program |netrw-x|
-
- % Open a new file in netrw's current directory |netrw-%|
-
- *netrw-mouse* *netrw-leftmouse* *netrw-middlemouse* *netrw-rightmouse*
- <leftmouse> (gvim only) selects word under mouse as if a <cr>
- had been pressed (ie. edit file, change directory)
- <middlemouse> (gvim only) same as P selecting word under mouse;
- see |netrw-P|
- <rightmouse> (gvim only) delete file/directory using word under
- mouse
- <2-leftmouse> (gvim only) when:
- * in a netrw-selected file, AND
- * |g:netrw_retmap| == 1 AND
- * the user doesn't already have a <2-leftmouse> mapping
- defined before netrw is autoloaded,
- then a double clicked leftmouse button will return
- to the netrw browser window. See |g:netrw_retmap|.
- <s-leftmouse> (gvim only) like mf, will mark files
-
- (to disable mouse buttons while browsing: |g:netrw_mousemaps|)
-
- *netrw-quickcom* *netrw-quickcoms*
- QUICK REFERENCE: COMMANDS *netrw-explore-cmds* *netrw-browse-cmds* {{{2
- :NetrwClean[!] ...........................................|netrw-clean|
- :NetrwSettings ...........................................|netrw-settings|
- :Explore[!] [dir] Explore directory of current file......|netrw-explore|
- :Hexplore[!] [dir] Horizontal Split & Explore.............|netrw-explore|
- :Nexplore[!] [dir] Vertical Split & Explore...............|netrw-explore|
- :Pexplore[!] [dir] Vertical Split & Explore...............|netrw-explore|
- :Rexplore Return to Explorer.....................|netrw-explore|
- :Sexplore[!] [dir] Split & Explore directory .............|netrw-explore|
- :Texplore[!] [dir] Tab & Explore..........................|netrw-explore|
- :Vexplore[!] [dir] Vertical Split & Explore...............|netrw-explore|
-
- BOOKMARKING A DIRECTORY *netrw-mb* *netrw-bookmark* *netrw-bookmarks* {{{2
-
- One may easily "bookmark" a directory by using >
-
- mb
- <
- Bookmarks are retained in between sessions in a $HOME/.netrwbook file, and are
- kept in sorted order.
-
- Related Topics:
- |netrw-gb| how to return (go) to a bookmark
- |netrw-mB| how to delete bookmarks
- |netrw-qb| how to list bookmarks
-
-
- BROWSING *netrw-cr* {{{2
-
- Browsing is simple: move the cursor onto a file or directory of interest.
- Hitting the <cr> (the return key) will select the file or directory.
- Directories will themselves be listed, and files will be opened using the
- protocol given in the original read request.
-
- CAVEAT: There are four forms of listing (see |netrw-i|). Netrw assumes that
- two or more spaces delimit filenames and directory names for the long and
- wide listing formats. Thus, if your filename or directory name has two or
- more sequential spaces embedded in it, or any trailing spaces, then you'll
- need to use the "thin" format to select it.
-
- The |g:netrw_browse_split| option, which is zero by default, may be used to
- cause the opening of files to be done in a new window or tab instead of the
- default. When the option is one or two, the splitting will be taken
- horizontally or vertically, respectively. When the option is set to three, a
- <cr> will cause the file to appear in a new tab.
-
-
- When using the gui (gvim), one may select a file by pressing the <leftmouse>
- button. In addition, if
-
- *|g:netrw_retmap| == 1 AND (its default value is 0)
- * in a netrw-selected file, AND
- * the user doesn't already have a <2-leftmouse> mapping defined before
- netrw is loaded
-
- then a doubly-clicked leftmouse button will return to the netrw browser
- window.
-
- Netrw attempts to speed up browsing, especially for remote browsing where one
- may have to enter passwords, by keeping and re-using previously obtained
- directory listing buffers. The |g:netrw_fastbrowse| variable is used to
- control this behavior; one may have slow browsing (no buffer re-use), medium
- speed browsing (re-use directory buffer listings only for remote directories),
- and fast browsing (re-use directory buffer listings as often as possible).
- The price for such re-use is that when changes are made (such as new files
- are introduced into a directory), the listing may become out-of-date. One may
- always refresh directory listing buffers by pressing ctrl-L (see
- |netrw-ctrl-l|).
-
-
- Related topics: |netrw-o| |netrw-p| |netrw-P| |netrw-t| |netrw-v|
- Associated setting variables: |g:netrw_browse_split| |g:netrw_fastbrowse|
- |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd|
- |g:netrw_ftp_timelist_cmd| |g:netrw_ssh_cmd|
- |g:netrw_ssh_browse_reject| |g:netrw_use_noswf|
-
-
- BROWSING WITH A HORIZONTALLY SPLIT WINDOW *netrw-o* *netrw-horiz* {{{2
-
- Normally one enters a file or directory using the <cr>. However, the "o" map
- allows one to open a new window to hold the new directory listing or file. A
- horizontal split is used. (for vertical splitting, see |netrw-v|)
-
- Normally, the o key splits the window horizontally with the new window and
- cursor at the top.
-
- Associated setting variables: |g:netrw_alto| |g:netrw_winsize|
-
- Related Actions |netrw-cr| |netrw-p| |netrw-t| |netrw-T| |netrw-v|
- Associated setting variables:
- |g:netrw_alto| control above/below splitting
- |g:netrw_winsize| control initial sizing
-
- BROWSING WITH A NEW TAB *netrw-t* *netrw-T* {{{2
-
- Normally one enters a file or directory using the <cr>. The "t" map
- allows one to open a new window holding the new directory listing or file in
- a new tab. The "T" version puts the file or directory into a background tab
- (see |gT|)
-
- Related Actions |netrw-cr| |netrw-o| |netrw-p| |netrw-v|
- Associated setting variables:
- |g:netrw_winsize| control initial sizing
-
- BROWSING WITH A VERTICALLY SPLIT WINDOW *netrw-v* {{{2
-
- Normally one enters a file or directory using the <cr>. However, the "v" map
- allows one to open a new window to hold the new directory listing or file. A
- vertical split is used. (for horizontal splitting, see |netrw-o|)
-
- Normally, the v key splits the window vertically with the new window and
- cursor at the left.
-
- There is only one tree listing buffer; using "v" on a displayed subdirectory
- will split the screen, but the same buffer will be shown twice.
-
- Associated setting variable: |g:netrw_altv| |g:netrw_winsize|
-
- Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-T| |netrw-v|
- Associated setting variables:
- |g:netrw_altv| control right/left splitting
- |g:netrw_winsize| control initial sizing
-
-
- CHANGE LISTING STYLE (THIN LONG WIDE TREE) *netrw-i* {{{2
-
- The "i" map cycles between the thin, long, wide, and tree listing formats.
-
- The thin listing format gives just the files' and directories' names.
-
- The long listing is either based on the "ls" command via ssh for remote
- directories or displays the filename, file size (in bytes), and the time and
- date of last modification for local directories. With the long listing
- format, netrw is not able to recognize filenames which have trailing spaces.
- Use the thin listing format for such files.
-
- The wide listing format uses two or more contiguous spaces to delineate
- filenames; when using that format, netrw won't be able to recognize or use
- filenames which have two or more contiguous spaces embedded in the name or any
- trailing spaces. The thin listing format will, however, work with such files.
- This listing format is the most compact.
-
- The tree listing format has a top directory followed by files and directories
- preceded by a "|". One may open and close directories by pressing the <cr>
- key while atop the directory name.
-
- One may make a preferred listing style your default; see |g:netrw_liststyle|.
- As an example, by putting the following line in your .vimrc, >
- let g:netrw_liststyle= 4
- the tree style will become your default listing style.
-
- One typical way to use the netrw tree display is to: >
-
- vim .
- (use i until a tree display shows)
- navigate to a file
- v (edit as desired in vertically split window)
- ctrl-w h (to return to the netrw listing)
- P (edit newly selected file in the previous window)
- ctrl-w h (to return to the netrw listing)
- P (edit newly selected file in the previous window)
- ...etc...
- <
- Associated setting variables: |g:netrw_liststyle| |g:netrw_maxfilenamelen|
- |g:netrw_timefmt| |g:netrw_list_cmd|
-
- CHANGE FILE PERMISSION *netrw-gp* {{{2
-
- "gp" will ask you for a new permission for the file named under the cursor.
- Currently, this only works for local files.
-
- Associated setting variables: |g:netrw_chgperm|
-
-
- CHANGING TO A BOOKMARKED DIRECTORY *netrw-gb* {{{2
-
- To change directory back to a bookmarked directory, use
-
- {cnt}gb
-
- Any count may be used to reference any of the bookmarks.
-
- Related Topics:
- |netrw-mB| how to delete bookmarks
- |netrw-mb| how to make a bookmark
- |netrw-qb| how to list bookmarks
-
-
- CHANGING TO A PREDECESSOR DIRECTORY *netrw-u* *netrw-updir* {{{2
-
- Every time you change to a new directory (new for the current session),
- netrw will save the directory in a recently-visited directory history
- list (unless |g:netrw_dirhistmax| is zero; by default, it's ten). With the
- "u" map, one can change to an earlier directory (predecessor). To do
- the opposite, see |netrw-U|.
-
-
- CHANGING TO A SUCCESSOR DIRECTORY *netrw-U* *netrw-downdir* {{{2
-
- With the "U" map, one can change to a later directory (successor).
- This map is the opposite of the "u" map. (see |netrw-u|) Use the
- q map to list both the bookmarks and history. (see |netrw-qb|)
-
-
- NETRW CLEAN *netrw-clean* *:NetrwClean*
-
- With :NetrwClean one may easily remove netrw from one's home directory;
- more precisely, from the first directory on your |'runtimepath'|.
-
- With :NetrwClean!, netrw will remove netrw from all directories on your
- |'runtimepath'|.
-
- With either form of the command, netrw will first ask for confirmation
- that the removal is in fact what you want to do. If netrw doesn't have
- permission to remove a file, it will issue an error message.
-
- *netrw-gx*
- CUSTOMIZING BROWSING WITH A USER FUNCTION *netrw-x* *netrw-handler* {{{2
- (also see |netrw_filehandler|)
-
- Certain files, such as html, gif, jpeg, (word/office) doc, etc, files, are
- best seen with a special handler (ie. a tool provided with your computer).
- Netrw allows one to invoke such special handlers by: >
-
- * when Exploring, hit the "x" key
- * when editing, hit gx with the cursor atop the special filename
- < (not available if the |g:netrw_nogx| variable exists)
-
- Netrw determines which special handler by the following method:
-
- * if |g:netrw_browsex_viewer| exists, then it will be used to attempt to
- view files. Examples of useful settings (place into your <.vimrc>): >
-
- :let g:netrw_browsex_viewer= "kfmclient exec"
- < or >
- :let g:netrw_browsex_viewer= "gnome-open"
- <
- If g:netrw_browsex_viewer == '-', then netrwFileHandler() will be
- invoked first (see |netrw_filehandler|).
-
- * for Windows 32 or 64, the url and FileProtocolHandler dlls are used.
- * for Gnome (with gnome-open): gnome-open is used.
- * for KDE (with kfmclient) : kfmclient is used.
- * for Mac OS X : open is used.
- * otherwise the netrwFileHandler plugin is used.
-
- The file's suffix is used by these various approaches to determine an
- appropriate application to use to "handle" these files. Such things as
- OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript (*.ps,
- *.eps) can be handled.
-
- *netrw_filehandler*
-
- The "x" map applies a function to a file, based on its extension. Of course,
- the handler function must exist for it to be called!
- >
- Ex. mypgm.html x ->
- NFH_html("scp://user@host/some/path/mypgm.html")
- <
- Users may write their own netrw File Handler functions to support more
- suffixes with special handling. See <autoload/netrwFileHandlers.vim> for
- examples on how to make file handler functions. As an example: >
-
- " NFH_suffix(filename)
- fun! NFH_suffix(filename)
- ..do something special with filename..
- endfun
- <
- These functions need to be defined in some file in your .vim/plugin
- (vimfiles\plugin) directory. Vim's function names may not have punctuation
- characters (except for the underscore) in them. To support suffices that
- contain such characters, netrw will first convert the suffix using the
- following table: >
-
- @ -> AT ! -> EXCLAMATION % -> PERCENT
- : -> COLON = -> EQUAL ? -> QUESTION
- , -> COMMA - -> MINUS ; -> SEMICOLON
- $ -> DOLLAR + -> PLUS ~ -> TILDE
- <
- So, for example: >
-
- file.rcs,v -> NFH_rcsCOMMAv()
- <
- If more such translations are necessary, please send me email: >
- NdrOchip at ScampbellPfamily.AbizM - NOSPAM
- with a request.
-
- Associated setting variable: |g:netrw_browsex_viewer|
-
- *netrw-curdir*
- DELETING BOOKMARKS *netrw-mB* {{{2
-
- To delete a bookmark, use >
-
- {cnt}mB
- <
- Related Topics:
- |netrw-gb| how to return (go) to a bookmark
- |netrw-mb| how to make a bookmark
- |netrw-qb| how to list bookmarks
-
-
- DELETING FILES OR DIRECTORIES *netrw-delete* *netrw-D* *netrw-del* {{{2
-
- If files have not been marked with |netrw-mf|: (local marked file list)
-
- Deleting/removing files and directories involves moving the cursor to the
- file/directory to be deleted and pressing "D". Directories must be empty
- first before they can be successfully removed. If the directory is a
- softlink to a directory, then netrw will make two requests to remove the
- directory before succeeding. Netrw will ask for confirmation before doing
- the removal(s). You may select a range of lines with the "V" command
- (visual selection), and then pressing "D".
-
- If files have been marked with |netrw-mf|: (local marked file list)
-
- Marked files (and empty directories) will be deleted; again, you'll be
- asked to confirm the deletion before it actually takes place.
-
- The |g:netrw_rm_cmd|, |g:netrw_rmf_cmd|, and |g:netrw_rmdir_cmd| variables are
- used to control the attempts to remove files and directories. The
- g:netrw_rm_cmd is used with files, and its default value is:
-
- g:netrw_rm_cmd: ssh HOSTNAME rm
-
- The g:netrw_rmdir_cmd variable is used to support the removal of directories.
- Its default value is:
-
- g:netrw_rmdir_cmd: ssh HOSTNAME rmdir
-
- If removing a directory fails with g:netrw_rmdir_cmd, netrw then will attempt
- to remove it again using the g:netrw_rmf_cmd variable. Its default value is:
-
- g:netrw_rmf_cmd: ssh HOSTNAME rm -f
-
- Related topics: |netrw-d|
- Associated setting variable: |g:netrw_localrmdir| |g:netrw_rm_cmd|
- |g:netrw_rmdir_cmd| |g:netrw_ssh_cmd|
-
-
- *netrw-explore* *netrw-hexplore* *netrw-nexplore* *netrw-pexplore*
- *netrw-rexplore* *netrw-sexplore* *netrw-texplore* *netrw-vexplore*
- DIRECTORY EXPLORATION COMMANDS {{{2
-
- :[N]Explore[!] [dir]... Explore directory of current file *:Explore*
- :[N]Hexplore[!] [dir]... Horizontal Split & Explore *:Hexplore*
- :Rexplore ... Return to Explorer *:Rexplore*
- :[N]Sexplore[!] [dir]... Split&Explore current file's directory *:Sexplore*
- :Texplore [dir]... Tab & Explore *:Texplore*
- :[N]Vexplore[!] [dir]... Vertical Split & Explore *:Vexplore*
-
- Used with :Explore **/pattern : (also see |netrw-starstar|)
- :Nexplore............. go to next matching file *:Nexplore*
- :Pexplore............. go to previous matching file *:Pexplore*
-
- :Explore will open the local-directory browser on the current file's
- directory (or on directory [dir] if specified). The window will be
- split only if the file has been modified, otherwise the browsing
- window will take over that window. Normally the splitting is taken
- horizontally.
- :Explore! is like :Explore, but will use vertical splitting.
- :Sexplore will always split the window before invoking the local-directory
- browser. As with Explore, the splitting is normally done
- horizontally.
- :Sexplore! [dir] is like :Sexplore, but the splitting will be done vertically.
- :Hexplore [dir] does an :Explore with |:belowright| horizontal splitting.
- :Hexplore! [dir] does an :Explore with |:aboveleft| horizontal splitting.
- :Vexplore [dir] does an :Explore with |:leftabove| vertical splitting.
- :Vexplore! [dir] does an :Explore with |:rightbelow| vertical splitting.
- :Texplore [dir] does a tabnew before generating the browser window
-
- By default, these commands use the current file's directory. However, one may
- explicitly provide a directory (path) to use.
-
- The [N] will override |g:netrw_winsize| to specify the quantity of rows and/or
- columns the new explorer window should have.
-
- Otherwise, the |g:netrw_winsize| variable, if it has been specified by the
- user, is used to control the quantity of rows and/or columns new explorer
- windows should have.
-
- :Rexplore This command is a little different from the others. When one
- edits a file, for example by pressing <cr> when atop a file in
- a netrw browser window, :Rexplore will return the display to
- that of the last netrw browser window. It is a command version
- of the <2-leftmouse> map (which is only available under gvim and
- cooperative terms).
-
-
- *netrw-star* *netrw-starpat* *netrw-starstar* *netrw-starstarpat*
- EXPLORING WITH STARS AND PATTERNS
-
- When Explore, Sexplore, Hexplore, or Vexplore are used with one of the
- following four styles, Explore generates a list of files which satisfy
- the request. >
-
- */filepat files in current directory which satisfy filepat
- **/filepat files in current directory or below which satisfy the
- file pattern
- *//pattern files in the current directory which contain the
- pattern (vimgrep is used)
- **//pattern files in the current directory or below which contain
- the pattern (vimgrep is used)
- <
- The cursor will be placed on the first file in the list. One may then
- continue to go to subsequent files on that list via |:Nexplore| or to
- preceding files on that list with |:Pexplore|. Explore will update the
- directory and place the cursor appropriately.
-
- A plain >
- :Explore
- will clear the explore list.
-
- If your console or gui produces recognizable shift-up or shift-down sequences,
- then you'll likely find using shift-downarrow and shift-uparrow convenient.
- They're mapped by netrw:
-
- <s-down> == Nexplore, and
- <s-up> == Pexplore.
-
- As an example, consider
- >
- :Explore */*.c
- :Nexplore
- :Nexplore
- :Pexplore
- <
- The status line will show, on the right hand side of the status line, a
- message like "Match 3 of 20".
-
- Associated setting variables: |g:netrw_keepdir| |g:netrw_browse_split|
- |g:netrw_fastbrowse| |g:netrw_ftp_browse_reject|
- |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd|
- |g:netrw_ftp_timelist_cmd| |g:netrw_list_cmd|
- |g:netrw_liststyle|
-
-
- DISPLAYING INFORMATION ABOUT FILE *netrw-qf* {{{2
-
- With the cursor atop a filename, pressing "qf" will reveal the file's size
- and last modification timestamp. Currently this capability is only available
- for local files.
-
-
- EDIT FILE OR DIRECTORY HIDING LIST *netrw-ctrl-h* *netrw-edithide* {{{2
-
- The "<ctrl-h>" map brings up a requestor allowing the user to change the
- file/directory hiding list contained in |g:netrw_list_hide|. The hiding list
- consists of one or more patterns delimited by commas. Files and/or
- directories satisfying these patterns will either be hidden (ie. not shown) or
- be the only ones displayed (see |netrw-a|).
-
- The "gh" mapping (see |netrw-gh|) quickly alternates between the usual
- hiding list and the hiding of files or directories that begin with ".".
-
- As an example, >
- let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+'
- Effectively, this makes the effect of a |netrw-gh| command the initial setting.
- What it means:
-
- \(^\|\s\s\) : if the line begins with the following, -or-
- two consecutive spaces are encountered
- \zs : start the hiding match now
- \. : if it now begins with a dot
- \S\+ : and is followed by one or more non-whitespace
- characters
-
- Associated setting variables: |g:netrw_hide| |g:netrw_list_hide|
- Associated topics: |netrw-a| |netrw-gh| |netrw-mh|
-
- *netrw-sort-sequence*
- EDITING THE SORTING SEQUENCE *netrw-S* *netrw-sortsequence* {{{2
-
- When "Sorted by" is name, one may specify priority via the sorting sequence
- (g:netrw_sort_sequence). The sorting sequence typically prioritizes the
- name-listing by suffix, although any pattern will do. Patterns are delimited
- by commas. The default sorting sequence is (all one line):
-
- For Unix: >
- '[\/]$,\<core\%(\.\d\+\)\=,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,
- \.info$,\.swp$,\.bak$,\~$'
- <
- Otherwise: >
- '[\/]$,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,
- \.swp$,\.bak$,\~$'
- <
- The lone * is where all filenames not covered by one of the other patterns
- will end up. One may change the sorting sequence by modifying the
- g:netrw_sort_sequence variable (either manually or in your <.vimrc>) or by
- using the "S" map.
-
- Related topics: |netrw-s| |netrw-S|
- Associated setting variables: |g:netrw_sort_sequence| |g:netrw_sort_options|
-
-
- FORCING TREATMENT AS A FILE OR DIRECTORY *netrw-gd* *netrw-gf* {{{2
-
- Remote symbolic links (ie. those listed via ssh or ftp) are problematic
- in that it is difficult to tell whether they link to a file or to a
- directory.
-
- To force treatment as a file: use >
- gd
- <
- To force treatment as a directory: use >
- gf
- <
-
- GOING UP *netrw--* {{{2
-
- To go up a directory, press "-" or press the <cr> when atop the ../ directory
- entry in the listing.
-
- Netrw will use the command in |g:netrw_list_cmd| to perform the directory
- listing operation after changing HOSTNAME to the host specified by the
- user-provided url. By default netrw provides the command as:
-
- ssh HOSTNAME ls -FLa
-
- where the HOSTNAME becomes the [user@]hostname as requested by the attempt to
- read. Naturally, the user may override this command with whatever is
- preferred. The NetList function which implements remote browsing
- expects that directories will be flagged by a trailing slash.
-
-
- HIDING FILES OR DIRECTORIES *netrw-a* *netrw-hiding* {{{2
-
- Netrw's browsing facility allows one to use the hiding list in one of three
- ways: ignore it, hide files which match, and show only those files which
- match.
-
- If no files have been marked via |netrw-mf|:
-
- The "a" map allows the user to cycle through the three hiding modes.
-
- The |g:netrw_list_hide| variable holds a comma delimited list of patterns
- based on regular expressions (ex. ^.*\.obj$,^\.) which specify the hiding list.
- (also see |netrw-ctrl-h|) To set the hiding list, use the <c-h> map. As an
- example, to hide files which begin with a ".", one may use the <c-h> map to
- set the hiding list to '^\..*' (or one may put let g:netrw_list_hide= '^\..*'
- in one's <.vimrc>). One may then use the "a" key to show all files, hide
- matching files, or to show only the matching files.
-
- Example: \.[ch]$
- This hiding list command will hide/show all *.c and *.h files.
-
- Example: \.c$,\.h$
- This hiding list command will also hide/show all *.c and *.h
- files.
-
- Don't forget to use the "a" map to select the mode (normal/hiding/show) you
- want!
-
- If files have been marked using |netrw-mf|, then this command will:
-
- if showing all files or non-hidden files:
- modify the g:netrw_list_hide list by appending the marked files to it
- and showing only non-hidden files.
-
- else if showing hidden files only:
- modify the g:netrw_list_hide list by removing the marked files from it
- and showing only non-hidden files.
- endif
-
- *netrw-gh* *netrw-hide*
- As a quick shortcut, one may press >
- gh
- to toggle between hiding files which begin with a period (dot) and not hiding
- them.
-
- Associated setting variable: |g:netrw_list_hide|
- Associated topics: |netrw-a| |netrw-ctrl-h| |netrw-mh|
-
- IMPROVING BROWSING *netrw-listhack* *netrw-ssh-hack* {{{2
-
- Especially with the remote directory browser, constantly entering the password
- is tedious.
-
- For Linux/Unix systems, the book "Linux Server Hacks - 100 industrial strength
- tips & tools" by Rob Flickenger (O'Reilly, ISBN 0-596-00461-3) gives a tip
- for setting up no-password ssh and scp and discusses associated security
- issues. It used to be available at http://hacks.oreilly.com/pub/h/66 ,
- but apparently that address is now being redirected to some "hackzine".
- I'll attempt a summary based on that article and on a communication from
- Ben Schmidt:
-
- 1. Generate a public/private key pair on the local machine
- (ssh client): >
- ssh-keygen -t rsa
- (saving the file in ~/.ssh/id_rsa as prompted)
- <
- 2. Just hit the <CR> when asked for passphrase (twice) for no
- passphrase. If you do use a passphrase, you will also need to use
- ssh-agent so you only have to type the passphrase once per session.
- If you don't use a passphrase, simply logging onto your local
- computer or getting access to the keyfile in any way will suffice
- to access any ssh servers which have that key authorized for login.
-
- 3. This creates two files: >
- ~/.ssh/id_rsa
- ~/.ssh/id_rsa.pub
- <
- 4. On the target machine (ssh server): >
- cd
- mkdir -p .ssh
- chmod 0700 .ssh
- <
- 5. On your local machine (ssh client): (one line) >
- ssh {serverhostname}
- cat '>>' '~/.ssh/authorized_keys2' < ~/.ssh/id_rsa.pub
- <
- or, for OpenSSH, (one line) >
- ssh {serverhostname}
- cat '>>' '~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub
- <
- You can test it out with >
- ssh {serverhostname}
- and you should be log onto the server machine without further need to type
- anything.
-
- If you decided to use a passphrase, do: >
- ssh-agent $SHELL
- ssh-add
- ssh {serverhostname}
- You will be prompted for your key passphrase when you use ssh-add, but not
- subsequently when you use ssh. For use with vim, you can use >
- ssh-agent vim
- and, when next within vim, use >
- :!ssh-add
- Alternatively, you can apply ssh-agent to the terminal you're planning on
- running vim in: >
- ssh-agent xterm &
- and do ssh-add whenever you need.
-
- For Windows, folks on the vim mailing list have mentioned that Pageant helps
- with avoiding the constant need to enter the password.
-
- Kingston Fung wrote about another way to avoid constantly needing to enter
- passwords:
-
- In order to avoid the need to type in the password for scp each time, you
- provide a hack in the docs to set up a non password ssh account. I found a
- better way to do that: I can use a regular ssh account which uses a
- password to access the material without the need to key-in the password
- each time. It's good for security and convenience. I tried ssh public key
- authorization + ssh-agent, implementing this, and it works! Here are two
- links with instructions:
-
- http://www.ibm.com/developerworks/library/l-keyc2/
- http://sial.org/howto/openssh/publickey-auth/
-
-
- LISTING BOOKMARKS AND HISTORY *netrw-qb* *netrw-listbookmark* {{{2
-
- Pressing "qb" (query bookmarks) will list both the bookmarked directories and
- directory traversal history.
-
- Related Topics:
- |netrw-gb| how to return (go) to a bookmark
- |netrw-mb| how to make a bookmark
- |netrw-mB| how to delete bookmarks
- |netrw-u| change to a predecessor directory via the history stack
- |netrw-U| change to a successor directory via the history stack
-
- MAKING A NEW DIRECTORY *netrw-d* {{{2
-
- With the "d" map one may make a new directory either remotely (which depends
- on the global variable g:netrw_mkdir_cmd) or locally (which depends on the
- global variable g:netrw_localmkdir). Netrw will issue a request for the new
- directory's name. A bare <CR> at that point will abort the making of the
- directory. Attempts to make a local directory that already exists (as either
- a file or a directory) will be detected, reported on, and ignored.
-
- Related topics: |netrw-D|
- Associated setting variables: |g:netrw_localmkdir| |g:netrw_mkdir_cmd|
- |g:netrw_remote_mkdir|
-
-
- MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-c* {{{2
-
- By default, |g:netrw_keepdir| is 1. This setting means that the current
- directory will not track the browsing directory.
-
- Setting g:netrw_keepdir to 0 tells netrw to make vim's current directory to
- track netrw's browsing directory.
-
- However, given the default setting for g:netrw_keepdir of 1 where netrw
- maintains its own separate notion of the current directory, in order to make
- the two directories the same, use the "c" map (just type c). That map will
- set Vim's notion of the current directory to netrw's current browsing
- directory.
-
- Associated setting variable: |g:netrw_keepdir|
-
- MARKING FILES *netrw-mf* {{{2
- (also see |netrw-mr|)
-
- One may mark files with the cursor atop a filename and then pressing "mf".
- With gvim, one may also mark files with <s-leftmouse>. The following netrw
- maps make use of marked files:
-
- |netrw-a| Hide marked files/directories
- |netrw-D| Delete marked files/directories
- |netrw-mc| Copy marked files to target
- |netrw-md| Apply vimdiff to marked files
- |netrw-me| Edit marked files
- |netrw-mg| Apply vimgrep to marked files
- |netrw-mm| Move marked files
- |netrw-mp| Print marked files
- |netrw-mt| Set target for |netrw-mm| and |netrw-mc|
- |netrw-mT| Generate tags using marked files
- |netrw-mx| Apply shell command to marked files
- |netrw-mz| Compress/Decompress marked files
- |netrw-O| Obtain marked files
- |netrw-R| Rename marked files
-
- One may unmark files one at a time the same way one marks them; ie. place
- the cursor atop a marked file and press "mf". This process also works
- with <s-leftmouse> using gvim. One may unmark all files by pressing
- "mu" (see |netrw-mu|).
-
- Marked files are highlighted using the "netrwMarkFile" highlighting group,
- which by default is linked to "Identifier" (see Identifier under
- |group-name|). You may change the highlighting group by putting something
- like >
-
- highlight clear netrwMarkFile
- hi link netrwMarkFile ..whatever..
- <
- into $HOME/.vim/after/syntax/netrw.vim .
-
- *markfilelist* *global_markfilelist* *local_markfilelist*
- All marked files are entered onto the global marked file list; there is only
- one such list. In addition, every netrw buffer also has its own local marked
- file list; since netrw buffers are associated with specific directories, this
- means that each directory has its own local marked file list. The various
- commands which operate on marked files use one or the other of the marked file
- lists.
-
-
- MARKING FILES BY REGULAR EXPRESSION *netrw-mr* {{{2
- (also see |netrw-mf|)
-
- One may also mark files by pressing "mr"; netrw will then issue a prompt,
- "Enter regexp: ". You may then enter a shell-style regular expression such
- as *.c$ (see |glob()|). For remote systems, glob() doesn't work -- so netrw
- converts "*" into ".*" (see |regexp|) and marks files based on that. In the
- future I may make it possible to use |regexp|s instead of glob()-style
- expressions (yet-another-option).
-
-
- MARKED FILES: ARBITRARY COMMAND *netrw-mx* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the local marked-file list)
-
- Upon activation of the "mx" map, netrw will query the user for some (external)
- command to be applied to all marked files. All "%"s in the command will be
- substituted with the name of each marked file in turn. If no "%"s are in the
- command, then the command will be followed by a space and a marked filename.
-
-
- MARKED FILES: COMPRESSION AND DECOMPRESSION *netrw-mz* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the local marked file list)
-
- If any marked files are compressed, then "mz" will decompress them.
- If any marked files are decompressed, then "mz" will compress them
- using the command specified by |g:netrw_compress|; by default,
- that's "gzip".
-
- For decompression, netrw provides a |Dictionary| of suffices and their
- associated decompressing utilities; see |g:netrw_decompress|.
-
- Associated setting variables: |g:netrw_compress| |g:netrw_decompress|
-
- MARKED FILES: COPYING *netrw-mc* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (Uses the global marked file list)
-
- Select a target directory with mt (|netrw-mt|). Then change directory,
- select file(s) (see |netrw-mf|), and press "mc". The copy is done
- from the current window (where one does the mf) to the target.
-
- Associated setting variable: |g:netrw_localcopycmd| |g:netrw_ssh_cmd|
-
- MARKED FILES: DIFF *netrw-md* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the global marked file list)
-
- Use |vimdiff| to visualize difference between selected files (two or
- three may be selected for this). Uses the global marked file list.
-
- MARKED FILES: EDITING *netrw-me* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the global marked file list)
-
- This command will place the marked files on the |arglist| and commence
- editing them. One may return the to explorer window with |:Rexplore|.
-
- MARKED FILES: GREP *netrw-mg* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the global marked file list)
-
- This command will apply |:vimgrep| to the marked files. The command will ask
- for the requested pattern; one may enter: >
- /pattern/[g][j]
- ! /pattern/[g][j]
- pattern
- <
- MARKED FILES: HIDING AND UNHIDING BY SUFFIX *netrw-mh* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the local marked file list)
-
- This command extracts the suffices of the marked files and toggles their
- presence on the hiding list. Please note that marking the same suffix
- this way multiple times will result in the suffix's presence being toggled
- for each file (so an even quantity of marked files having the same suffix
- is the same as not having bothered to select them at all).
-
- Related topics: |netrw-a| |g:netrw_list_hide|
-
- MARKED FILES: MOVING *netrw-mm* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the global marked file list)
-
- WARNING: moving files is more dangerous than copying them.
- A file being moved is first copied and then deleted; if the
- copy operation fails and the delete succeeds, you will lose
- the file. Either try things out with unimportant files
- first or do the copy and then delete yourself using mc and D.
- Use at your own risk!
-
- Select a target directory with mt (|netrw-mt|). Then change directory,
- select file(s) (see |netrw-mf|), and press "mm". The move is done
- from the current window (where one does the mf) to the target.
-
- Associated setting variable: |g:netrw_localmovecmd| |g:netrw_ssh_cmd|
-
- MARKED FILES: PRINTING *netrw-mp* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the local marked file list)
-
- Netrw will apply the |:hardcopy| command to marked files. What it does
- is open each file in a one-line window, execute hardcopy, then close the
- one-line window.
-
-
- MARKED FILES: SOURCING *netrw-ms* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the local marked file list)
-
- Netrw will source the marked files (using vim's |:source| command)
-
-
- MARKED FILES: TAGGING *netrw-mT* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the global marked file list)
-
- The "mT" mapping will apply the command in |g:netrw_ctags| (by default, it is
- "ctags") to marked files. For remote browsing, in order to create a tags file
- netrw will use ssh (see |g:netrw_ssh_cmd|), and so ssh must be available for
- this to work on remote systems. For your local system, see |ctags| on how to
- get a version. I myself use hdrtags, currently available at
- http://mysite.verizon.net/astronaut/src/index.html , and have >
-
- let g:netrw_ctags= "hdrtag"
- <
- in my <.vimrc>.
-
- When a remote set of files are tagged, the resulting tags file is "obtained";
- ie. a copy is transferred to the local system's directory. The local tags
- file is then modified so that one may use it through the network. The
- modification is concerns the names of the files in the tags; each filename is
- preceded by the netrw-compatible url used to obtain it. When one subsequently
- uses one of the go to tag actions (|tags|), the url will be used by netrw to
- edit the desired file and go to the tag.
-
- Associated setting variables: |g:netrw_ctags| |g:netrw_ssh_cmd|
-
-
- MARKED FILES: SETTING THE TARGET DIRECTORY *netrw-mt* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
-
- Set the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|):
-
- * if the cursor is atop a file name, then the netrw window's currently
- displayed directory is used for the copy/move-to target.
-
- * also, if the cursor is in the banner, then the netrw window's currently
- displayed directory is used for the copy/move-to target.
-
- * however, if the cursor is atop a directory name, then that directory is
- used for the copy/move-to target
-
- There is only one copy/move-to target per vim session; ie. the target is a
- script variable (see |s:var|) and is shared between all netrw windows (in an
- instance of vim).
-
- MARKED FILES: UNMARKING *netrw-mu* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
-
- The "mu" mapping will unmark all currently marked files.
-
- *netrw-browser-settings*
- NETRW BROWSER VARIABLES *netrw-browser-options* *netrw-browser-var* {{{2
-
- (if you're interested in the netrw file transfer settings, see |netrw-options|
- and |netrw-protocol|)
-
- The <netrw.vim> browser provides settings in the form of variables which
- you may modify; by placing these settings in your <.vimrc>, you may customize
- your browsing preferences. (see also: |netrw-settings|)
- >
- --- -----------
- Var Explanation
- --- -----------
- < *g:netrw_alto* change from above splitting to below splitting
- by setting this variable (see |netrw-o|)
- default: =&sb (see |'sb'|)
-
- *g:netrw_altv* change from left splitting to right splitting
- by setting this variable (see |netrw-v|)
- default: =&spr (see |'spr'|)
-
- *g:netrw_banner* enable/suppress the banner
- =0: suppress the banner
- =1: banner is enabled (default)
- NOTE: suppressing the banner is a new feature
- which may cause problems.
-
- *g:netrw_browse_split* when browsing, <cr> will open the file by:
- =0: re-using the same window
- =1: horizontally splitting the window first
- =2: vertically splitting the window first
- =3: open file in new tab
- =4: act like "P" (ie. open previous window)
- Note that |g:netrw_preview| may be used
- to get vertical splitting instead of
- horizontal splitting.
-
- *g:netrw_browsex_viewer* specify user's preference for a viewer: >
- "kfmclient exec"
- "gnome-open"
- < If >
- "-"
- < is used, then netrwFileHandler() will look for
- a script/function to handle the given
- extension. (see |netrw_filehandler|).
-
- *g:netrw_chgperm* Unix/Linux: "chmod PERM FILENAME"
- Windows: "cacls FILENAME /e /p PERM"
- Used to change access permission for a file.
-
- *g:netrw_compress* ="gzip"
- Will compress marked files with this
- command
-
- *g:Netrw_corehandler* Allows one to specify something additional
- to do when handling <core> files via netrw's
- browser's "x" command (see |netrw-x|). If
- present, g:Netrw_corehandler specifies
- either one or more function references
- (see |Funcref|). (the capital g:Netrw...
- is required its holding a function reference)
-
-
- *g:netrw_ctags* ="ctags"
- The default external program used to create tags
-
- *g:netrw_cursor* = 2 (default)
- This option controls the use of the
- |'cursorline'| (cul) and |'cursorcolumn'|
- (cuc) settings by netrw:
-
- Value Thin-Long-Tree Wide
- =0 u-cul u-cuc u-cul u-cuc
- =1 u-cul u-cuc cul u-cuc
- =2 cul u-cuc cul u-cuc
- =3 cul u-cuc cul cuc
- =4 cul cuc cul cuc
-
- Where
- u-cul : user's |'cursorline'| setting used
- u-cuc : user's |'cursorcolumn'| setting used
- cul : |'cursorline'| locally set
- cuc : |'cursorcolumn'| locally set
-
- *g:netrw_decompress* = { ".gz" : "gunzip" ,
- ".bz2" : "bunzip2" ,
- ".zip" : "unzip" ,
- ".tar" : "tar -xf"}
- A dictionary mapping suffices to
- decompression programs.
-
- *g:netrw_dirhistmax* =10: controls maximum quantity of past
- history. May be zero to supppress
- history.
- (related: |netrw-qb| |netrw-u| |netrw-U|)
-
- *g:netrw_errorlvl* =0: error levels greater than or equal to
- this are permitted to be displayed
- 0: notes
- 1: warnings
- 2: errors
-
- *g:netrw_fastbrowse* =0: slow speed directory browsing;
- never re-uses directory listings,
- always obtains directory listings.
- =1: medium speed directory browsing;
- re-use directory listings only
- when remote directory browsing.
- (default value)
- =2: fast directory browsing;
- only obtains directory listings when the
- directory hasn't been seen before
- (or |netrw-ctrl-l| is used).
-
- Fast browsing retains old directory listing
- buffers so that they don't need to be
- re-acquired. This feature is especially
- important for remote browsing. However, if
- a file is introduced or deleted into or from
- such directories, the old directory buffer
- becomes out-of-date. One may always refresh
- such a directory listing with |netrw-ctrl-l|.
- This option gives the user the choice of
- trading off accuracy (ie. up-to-date listing)
- versus speed.
-
- *g:netrw_fname_escape* =' ?&;%'
- Used on filenames before remote reading/writing
-
- *g:netrw_ftp_browse_reject* ftp can produce a number of errors and warnings
- that can show up as "directories" and "files"
- in the listing. This pattern is used to
- remove such embedded messages. By default its
- value is:
- '^total\s\+\d\+$\|
- ^Trying\s\+\d\+.*$\|
- ^KERBEROS_V\d rejected\|
- ^Security extensions not\|
- No such file\|
- : connect to address [0-9a-fA-F:]*
- : No route to host$'
-
- *g:netrw_ftp_list_cmd* options for passing along to ftp for directory
- listing. Defaults:
- unix or g:netrw_cygwin set: : "ls -lF"
- otherwise "dir"
-
-
- *g:netrw_ftp_sizelist_cmd* options for passing along to ftp for directory
- listing, sorted by size of file.
- Defaults:
- unix or g:netrw_cygwin set: : "ls -slF"
- otherwise "dir"
-
- *g:netrw_ftp_timelist_cmd* options for passing along to ftp for directory
- listing, sorted by time of last modification.
- Defaults:
- unix or g:netrw_cygwin set: : "ls -tlF"
- otherwise "dir"
-
- *g:netrw_glob_escape* ='[]*?`{~$' (unix)
- ='[]*?`{$' (windows
- These characters in directory names are
- escaped before applying glob()
-
- *g:netrw_hide* if true, the hiding list is used
- default: =0
-
- *g:netrw_home* The home directory for where bookmarks and
- history are saved (as .netrwbook and
- .netrwhist).
- default: the first directory on the
- |'runtimepath'|
-
- *g:netrw_keepdir* =1 (default) keep current directory immune from
- the browsing directory.
- =0 keep the current directory the same as the
- browsing directory.
- The current browsing directory is contained in
- b:netrw_curdir (also see |netrw-c|)
-
- *g:netrw_list_cmd* command for listing remote directories
- default: (if ssh is executable)
- "ssh HOSTNAME ls -FLa"
-
- *g:netrw_liststyle* Set the default listing style:
- = 0: thin listing (one file per line)
- = 1: long listing (one file per line with time
- stamp information and file size)
- = 2: wide listing (multiple files in columns)
- = 3: tree style listing
- *g:netrw_list_hide* comma separated pattern list for hiding files
- Patterns are regular expressions (see |regexp|)
- Example: let g:netrw_list_hide= '.*\.swp$'
- default: ""
-
- *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin
- ="copy" Windows
- Copies marked files (|netrw-mf|) to target
- directory (|netrw-mt|, |netrw-mc|)
-
- *g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin
- ="move" Windows
- Moves marked files (|netrw-mf|) to target
- directory (|netrw-mt|, |netrw-mm|)
-
- *g:netrw_localmkdir* command for making a local directory
- default: "mkdir"
-
- *g:netrw_localrmdir* remove directory command (rmdir)
- default: "rmdir"
-
- *g:netrw_maxfilenamelen* =32 by default, selected so as to make long
- listings fit on 80 column displays.
- If your screen is wider, and you have file
- or directory names longer than 32 bytes,
- you may set this option to keep listings
- columnar.
-
- *g:netrw_mkdir_cmd* command for making a remote directory
- via ssh (also see |g:netrw_remote_mkdir|)
- default: "ssh USEPORT HOSTNAME mkdir"
-
- *g:netrw_mousemaps* =1 (default) enables mouse buttons while
- browsing to:
- leftmouse : open file/directory
- shift-leftmouse : mark file
- middlemouse : same as P
- rightmouse : remove file/directory
- =0: disables mouse maps
-
- *g:netrw_nobeval* doesn't exist (default)
- If this variable exists, then balloon
- evaluation will be suppressed
- (see |'ballooneval'|)
-
- *g:netrw_remote_mkdir* command for making a local directory
- via ftp (also see |g:netrw_mkdir_cmd|)
- default: "mkdir"
-
- *g:netrw_retmap* if it exists and is set to one, then:
- * if in a netrw-selected file, AND
- * no normal-mode <2-leftmouse> mapping exists,
- then the <2-leftmouse> will be mapped for easy
- return to the netrw browser window.
- example: click once to select and open a file,
- double-click to return.
-
- Note that one may instead choose to:
- * let g:netrw_retmap= 1, AND
- * nmap <silent> YourChoice <Plug>NetrwReturn
- and have another mapping instead of
- <2-leftmouse> to invoke the return.
-
- You may also use the |:Rexplore| command to do
- the same thing.
-
- default: =0
-
- *g:netrw_rm_cmd* command for removing files
- default: "ssh USEPORT HOSTNAME rm"
-
- *g:netrw_rmdir_cmd* command for removing directories
- default: "ssh USEPORT HOSTNAME rmdir"
-
- *g:netrw_rmf_cmd* command for removing softlinks
- default: "ssh USEPORT HOSTNAME rm -f"
-
- *g:netrw_sort_by* sort by "name", "time", or "size"
- default: "name"
-
- *g:netrw_sort_direction* sorting direction: "normal" or "reverse"
- default: "normal"
-
- *g:netrw_sort_options* sorting is done using |:sort|; this
- variable's value is appended to the
- sort command. Thus one may ignore case,
- for example, with the following in your
- .vimrc: >
- let g:netrw_sort_options="i"
- < default: ""
-
- *g:netrw_sort_sequence* when sorting by name, first sort by the
- comma-separated pattern sequence. Note that
- the filigree added to indicate filetypes
- should be accounted for in your pattern.
- default: '[\/]$,*,\.bak$,\.o$,\.h$,
- \.info$,\.swp$,\.obj$'
-
- *g:netrw_special_syntax* If true, then certain files will be shown
- using special syntax in the browser:
-
- netrwBak : *.bak
- netrwCompress: *.gz *.bz2 *.Z *.zip
- netrwData : *.dat
- netrwHdr : *.h
- netrwLib : *.a *.so *.lib *.dll
- netrwMakefile: [mM]akefile *.mak
- netrwObj : *.o *.obj
- netrwTags : tags ANmenu ANtags
- netrwTilde : *~
- netrwTmp : tmp* *tmp
-
- These syntax highlighting groups are linked
- to Folded or DiffChange by default
- (see |hl-Folded| and |hl-DiffChange|), but
- one may put lines like >
- hi link netrwCompress Visual
- < into one's <.vimrc> to use one's own
- preferences.
-
- *g:netrw_ssh_cmd* One may specify an executable command
- to use instead of ssh for remote actions
- such as listing, file removal, etc.
- default: ssh
-
- *g:netrw_ssh_browse_reject* ssh can sometimes produce unwanted lines,
- messages, banners, and whatnot that one doesn't
- want masquerading as "directories" and "files".
- Use this pattern to remove such embedded
- messages. By default its value is:
- '^total\s\+\d\+$'
-
-
- *g:netrw_tmpfile_escape* =' &;'
- escape() is applied to all temporary files
- to escape these characters.
-
- *g:netrw_timefmt* specify format string to vim's strftime().
- The default, "%c", is "the preferred date
- and time representation for the current
- locale" according to my manpage entry for
- strftime(); however, not all are satisfied
- with it. Some alternatives:
- "%a %d %b %Y %T",
- " %a %Y-%m-%d %I-%M-%S %p"
- default: "%c"
-
- *g:netrw_use_noswf* netrw normally avoids writing swapfiles
- for browser buffers. However, under some
- systems this apparently is causing nasty
- ml_get errors to appear; if you're getting
- ml_get errors, try putting
- let g:netrw_use_noswf= 0
- in your .vimrc.
-
- *g:netrw_winsize* specify initial size of new windows made with
- "o" (see |netrw-o|), "v" (see |netrw-v|),
- |:Hexplore| or |:Vexplore|. The g:netrw_winsize
- is an integer describing the percentage of the
- current netrw buffer's window to be used for
- the new window.
- If g:netrw_winsize is less than zero, then
- the absolute value of g:netrw_winsize lines
- or columns will be used for the new window.
- default: 50 (for 50%)
-
- *g:netrw_xstrlen* Controls how netrw computes string lengths,
- including multi-byte characters' string
- length. (thanks to N Weibull, T Mechelynck)
- =0: uses Vim's built-in strlen()
- =1: number of codepoints (Latin a + combining
- circumflex is two codepoints) (DEFAULT)
- =2: number of spacing codepoints (Latin a +
- combining circumflex is one spacing
- codepoint; a hard tab is one; wide and
- narrow CJK are one each; etc.)
- =3: virtual length (counting tabs as anything
- between 1 and |'tabstop'|, wide CJK as 2
- rather than 1, Arabic alif as zero when
- immediately preceded by lam, one
- otherwise, etc)
-
- *g:NetrwTopLvlMenu* This variable specifies the top level
- menu name; by default, it's "Netrw.". If
- you wish to change this, do so in your
- .vimrc.
-
- NETRW BROWSING AND OPTION INCOMPATIBILITIES *netrw-incompatible* {{{2
-
- Netrw has been designed to handle user options by saving them, setting the
- options to something that's compatible with netrw's needs, and then restoring
- them. However, the autochdir option: >
- :set acd
- is problematical. Autochdir sets the current directory to that containing the
- file you edit; this apparently also applies to directories. In other words,
- autochdir sets the current directory to that containing the "file" (even if
- that "file" is itself a directory).
-
- NETRW SETTINGS WINDOW *netrw-settings-window* {{{2
-
- With the NetrwSettings.vim plugin, >
- :NetrwSettings
- will bring up a window with the many variables that netrw uses for its
- settings. You may change any of their values; when you save the file, the
- settings therein will be used. One may also press "?" on any of the lines for
- help on what each of the variables do.
-
- (also see: |netrw-browser-var| |netrw-protocol| |netrw-variables|)
-
-
- ==============================================================================
- OBTAINING A FILE *netrw-O* {{{2
-
- If there are no marked files:
-
- When browsing a remote directory, one may obtain a file under the cursor
- (ie. get a copy on your local machine, but not edit it) by pressing the O
- key.
-
- If there are marked files:
-
- The marked files will be obtained (ie. a copy will be transferred to your
- local machine, but not set up for editing).
-
- Only ftp and scp are supported for this operation (but since these two are
- available for browsing, that shouldn't be a problem). The status bar will
- then show, on its right hand side, a message like "Obtaining filename". The
- statusline will be restored after the transfer is complete.
-
- Netrw can also "obtain" a file using the local browser. Netrw's display
- of a directory is not necessarily the same as Vim's "current directory",
- unless |g:netrw_keepdir| is set to 0 in the user's <.vimrc>. One may select
- a file using the local browser (by putting the cursor on it) and pressing
- "O" will then "obtain" the file; ie. copy it to Vim's current directory.
-
- Related topics:
- * To see what the current directory is, use |:pwd|
- * To make the currently browsed directory the current directory, see |netrw-c|
- * To automatically make the currently browsed directory the current
- directory, see |g:netrw_keepdir|.
-
- *netrw-createfile*
- OPEN A NEW FILE IN NETRW'S CURRENT DIRECTORY *netrw-%*
-
- To open a file in netrw's current directory, press "%". This map will
- query the user for a new filename; an empty file by that name will be
- placed in the netrw's current directory (ie. b:netrw_curdir).
-
-
- PREVIEW WINDOW *netrw-p* *netrw-preview* {{{2
-
- One may use a preview window by using the "p" key when the cursor is atop the
- desired filename to be previewed. The display will then split to show both
- the browser (where the cursor will remain) and the file (see |:pedit|).
- By default, the split will be taken horizontally; one may use vertical
- splitting if one has set |g:netrw_preview| first.
-
- An interesting set of netrw settings is: >
-
- let g:netrw_preview = 1
- let g:netrw_liststyle = 3
- let g:netrw_winsize = 30
-
- These will:
- 1. Make vertical splitting the default for previewing files
- 2. Make the default listing style "tree"
- 3. When a vertical preview window is opened, the directory listing
- will use only 30% of the columns available; the rest of the window
- is used for the preview window.
-
- PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2
-
- To edit a file or directory in the previously used (last accessed) window (see
- :he |CTRL-W_p|), press a "P". If there's only one window, then the one window
- will be horizontally split (by default).
-
- If there's more than one window, the previous window will be re-used on
- the selected file/directory. If the previous window's associated buffer
- has been modified, and there's only one window with that buffer, then
- the user will be asked if s/he wishes to save the buffer first (yes,
- no, or cancel).
-
- Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-T| |netrw-v|
- Associated setting variables:
- |g:netrw_alto| control above/below splitting
- |g:netrw_altv| control right/left splitting
- |g:netrw_preview| control horizontal vs vertical splitting
- |g:netrw_winsize| control initial sizing
-
-
- REFRESHING THE LISTING *netrw-ctrl-l* *netrw-ctrl_l* {{{2
-
- To refresh either a local or remote directory listing, press ctrl-l (<c-l>) or
- hit the <cr> when atop the ./ directory entry in the listing. One may also
- refresh a local directory by using ":e .".
-
-
- RENAMING FILES OR DIRECTORIES *netrw-move* *netrw-rename* *netrw-R* {{{2
-
- If there are no marked files: (see |netrw-mf|)
-
- Renaming/moving files and directories involves moving the cursor to the
- file/directory to be moved (renamed) and pressing "R". You will then be
- queried for where you want the file/directory to be moved. You may select
- a range of lines with the "V" command (visual selection), and then
- pressing "R".
-
- If there are marked files: (see |netrw-mf|)
-
- Marked files will be renamed (moved). You will be queried as above in
- order to specify where you want the file/directory to be moved.
-
- WARNING:~
-
- Note that moving files is a dangerous operation; copies are safer. That's
- because a "move" for remote files is actually a copy + delete -- and if
- the copy fails and the delete does not, you may lose the file.
-
- The g:netrw_rename_cmd variable is used to implement renaming. By default its
- value is:
-
- ssh HOSTNAME mv
-
- One may rename a block of files and directories by selecting them with
- the V (|linewise-visual|).
-
-
- REVERSING SORTING ORDER *netrw-r* *netrw-reverse* {{{2
-
- One may toggle between normal and reverse sorting order by pressing the
- "r" key.
-
- Related topics: |netrw-s|
- Associated setting variable: |g:netrw_sort_direction|
-
-
- SELECTING SORTING STYLE *netrw-s* *netrw-sort* {{{2
-
- One may select the sorting style by name, time, or (file) size. The "s" map
- allows one to circulate amongst the three choices; the directory listing will
- automatically be refreshed to reflect the selected style.
-
- Related topics: |netrw-r| |netrw-S|
- Associated setting variables: |g:netrw_sort_by| |g:netrw_sort_sequence|
-
-
- SETTING EDITING WINDOW *netrw-C* {{{2
-
- One may select a netrw window for editing with the "C" mapping, or by setting
- g:netrw_chgwin to the selected window number. Subsequent selection of a file
- to edit (|netrw-cr|) will use that window.
-
- Related topics: |netrw-cr|
- Associated setting variables: |g:netrw_chgwin|
-
-
- 10. Problems and Fixes *netrw-problems* {{{1
-
- (This section is likely to grow as I get feedback)
- (also see |netrw-debug|)
- *netrw-p1*
- P1. I use windows 95, and my ftp dumps four blank lines at the
- end of every read.
-
- See |netrw-fixup|, and put the following into your
- <.vimrc> file:
-
- let g:netrw_win95ftp= 1
-
- *netrw-p2*
- P2. I use Windows, and my network browsing with ftp doesn't sort by
- time or size! -or- The remote system is a Windows server; why
- don't I get sorts by time or size?
-
- Windows' ftp has a minimal support for ls (ie. it doesn't
- accept sorting options). It doesn't support the -F which
- gives an explanatory character (ABC/ for "ABC is a directory").
- Netrw then uses "dir" to get both its thin and long listings.
- If you think your ftp does support a full-up ls, put the
- following into your <.vimrc>: >
-
- let g:netrw_ftp_list_cmd = "ls -lF"
- let g:netrw_ftp_timelist_cmd= "ls -tlF"
- let g:netrw_ftp_sizelist_cmd= "ls -slF"
- <
- Alternatively, if you have cygwin on your Windows box, put
- into your <.vimrc>: >
-
- let g:netrw_cygwin= 1
- <
- This problem also occurs when the remote system is Windows.
- In this situation, the various g:netrw_ftp_[time|size]list_cmds
- are as shown above, but the remote system will not correctly
- modify its listing behavior.
-
-
- *netrw-p3*
- P3. I tried rcp://user@host/ (or protocol other than ftp) and netrw
- used ssh! That wasn't what I asked for...
-
- Netrw has two methods for browsing remote directories: ssh
- and ftp. Unless you specify ftp specifically, ssh is used.
- When it comes time to do download a file (not just a directory
- listing), netrw will use the given protocol to do so.
-
- *netrw-p4*
- P4. I would like long listings to be the default.
-
- Put the following statement into your |.vimrc|: >
-
- let g:netrw_liststyle= 1
- <
- Check out |netrw-browser-var| for more customizations that
- you can set.
-
- *netrw-p5*
- P5. My times come up oddly in local browsing
-
- Does your system's strftime() accept the "%c" to yield dates
- such as "Sun Apr 27 11:49:23 1997"? If not, do a "man strftime"
- and find out what option should be used. Then put it into
- your |.vimrc|: >
-
- let g:netrw_timefmt= "%X" (where X is the option)
- <
- *netrw-p6*
- P6. I want my current directory to track my browsing.
- How do I do that?
-
- Put the following line in your |.vimrc|:
- >
- let g:netrw_keepdir= 0
- <
- *netrw-p7*
- P7. I use Chinese (or other non-ascii) characters in my filenames, and
- netrw (Explore, Sexplore, Hexplore, etc) doesn't display them!
-
- (taken from an answer provided by Wu Yongwei on the vim
- mailing list)
- I now see the problem. You code page is not 936, right? Vim
- seems only able to open files with names that are valid in the
- current code page, as are many other applications that do not
- use the Unicode version of Windows APIs. This is an OS-related
- issue. You should not have such problems when the system
- locale uses UTF-8, such as modern Linux distros.
-
- (...it is one more reason to recommend that people use utf-8!)
-
- *netrw-p8*
- P8. I'm getting "ssh is not executable on your system" -- what do I
- do?
-
- (Dudley Fox) Most people I know use putty for windows ssh. It
- is a free ssh/telnet application. You can read more about it
- here:
-
- http://www.chiark.greenend.org.uk/~sgtatham/putty/ Also:
-
- (Marlin Unruh) This program also works for me. It's a single
- executable, so he/she can copy it into the Windows\System32
- folder and create a shortcut to it.
-
- (Dudley Fox) You might also wish to consider plink, as it
- sounds most similar to what you are looking for. plink is an
- application in the putty suite.
-
- http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter7.html#plink
-
- (Vissale Neang) Maybe you can try OpenSSH for windows, which
- can be obtained from:
-
- http://sshwindows.sourceforge.net/
-
- It doesn't need the full Cygwin package.
-
- (Antoine Mechelynck) For individual Unix-like programs needed
- for work in a native-Windows environment, I recommend getting
- them from the GnuWin32 project on sourceforge if it has them:
-
- http://gnuwin32.sourceforge.net/
-
- Unlike Cygwin, which sets up a Unix-like virtual machine on
- top of Windows, GnuWin32 is a rewrite of Unix utilities with
- Windows system calls, and its programs works quite well in the
- cmd.exe "Dos box".
-
- (dave) Download WinSCP and use that to connect to the server.
- In Preferences > Editors, set gvim as your editor:
-
- - Click "Add..."
- - Set External Editor (adjust path as needed, include
- the quotes and !.! at the end):
- "c:\Program Files\Vim\vim70\gvim.exe" !.!
- - Check that the filetype in the box below is
- {asterisk}.{asterisk} (all files), or whatever types
- you want (cec: change {asterisk} to * ; I had to
- write it that way because otherwise the helptags
- system thinks it's a tag)
- - Make sure it's at the top of the listbox (click it,
- then click "Up" if it's not)
- If using the Norton Commander style, you just have to hit <F4>
- to edit a file in a local copy of gvim.
-
- (Vit Gottwald) How to generate public/private key and save
- public key it on server: >
- http://www.chiark.greenend.org.uk/~sgtatham/putty/0.60/htmldoc/Chapter8.html#pubkey-gettingready
- (8.3 Getting ready for public key authentication)
- <
- How to use a private key with 'pscp': >
-
- http://www.chiark.greenend.org.uk/~sgtatham/putty/0.60/htmldoc/Chapter5.html
- (5.2.4 Using public key authentication with PSCP)
- <
- (Ben Schmidt) I find the ssh included with cwRsync is
- brilliant, and install cwRsync or cwRsyncServer on most
- Windows systems I come across these days. I guess COPSSH,
- packed by the same person, is probably even better for use as
- just ssh on Windows, and probably includes sftp, etc. which I
- suspect the cwRsync doesn't, though it might
-
- (cec) To make proper use of these suggestions above, you will
- need to modify the following user-settable variables in your
- .vimrc:
-
- |g:netrw_ssh_cmd| |g:netrw_list_cmd| |g:netrw_mkdir_cmd|
- |g:netrw_rm_cmd| |g:netrw_rmdir_cmd| |g:netrw_rmf_cmd|
-
- The first one (|g:netrw_ssh_cmd|) is the most important; most
- of the others will use the string in g:netrw_ssh_cmd by
- default.
- *netrw-p9* *netrw-ml_get*
- P9. I'm browsing, changing directory, and bang! ml_get errors
- appear and I have to kill vim. Any way around this?
-
- Normally netrw attempts to avoid writing swapfiles for
- its temporary directory buffers. However, on some systems
- this attempt appears to be causing ml_get errors to
- appear. Please try setting |g:netrw_use_noswf| to 0
- in your <.vimrc>: >
- let g:netrw_use_noswf= 0
- <
- *netrw-p10*
- P10. I'm being pestered with "[something] is a directory" and
- "Press ENTER or type command to continue" prompts...
-
- The "[something] is a directory" prompt is issued by Vim,
- not by netrw, and there appears to be no way to work around
- it. Coupled with the default cmdheight of 1, this message
- causes the "Press ENTER..." prompt. So: read |hit-enter|;
- I also suggest that you set your |'cmdheight'| to 2 (or more) in
- your <.vimrc> file.
-
- *netrw-p11*
- P11. I want to have two windows; a thin one on the left and my editing
- window on the right. How may I accomplish this?
-
- * Put the following line in your <.vimrc>:
- let g:netrw_altv = 1
- * Edit the current directory: :e .
- * Select some file, press v
- * Resize the windows as you wish (see |CTRL-W_<| and
- |CTRL-W_>|). If you're using gvim, you can drag
- the separating bar with your mouse.
- * When you want a new file, use ctrl-w h to go back to the
- netrw browser, select a file, then press P (see |CTRL-W_h|
- and |netrw-P|). If you're using gvim, you can press
- <leftmouse> in the browser window and then press the
- <middlemouse> to select the file.
-
- *netrw-p12*
- P12. My directory isn't sorting correctly, or unwanted letters are
- appearing in the listed filenames, or things aren't lining
- up properly in the wide listing, ...
-
- This may be due to an encoding problem. I myself usually use
- utf-8, but really only use ascii (ie. bytes from 32-126).
- Multibyte encodings use two (or more) bytes per character.
- You may need to change |g:netrw_sepchr| and/or |g:netrw_xstrlen|.
-
- *netrw-p13*
- P13. I'm a Windows + putty + ssh user, and when I attempt to browse,
- the directories are missing trailing "/"s so netrw treats them
- as file transfers instead of as attempts to browse
- subdirectories. How may I fix this?
-
- (mikeyao) If you want to use vim via ssh and putty under Windows,
- try combining the use of pscp/psftp with plink. pscp/psftp will
- be used to connect and plink will be used to execute commands on
- the server, for example: list files and directory using 'ls'.
-
- These are the settings I use to do this:
- >
- " list files, it's the key setting, if you haven't set,
- " you will get a blank buffer
- let g:netrw_list_cmd = "plink HOSTNAME ls -Fa"
- " if you haven't add putty directory in system path, you should
- " specify scp/sftp command. For examples:
- "let g:netrw_sftp_cmd = "d:\\dev\\putty\\PSFTP.exe"
- "let g:netrw_scp_cmd = "d:\\dev\\putty\\PSCP.exe"
- <
- *netrw-p14*
- P14. I'd would like to speed up writes using Nwrite and scp/ssh
- style connections. How? (Thomer M. Gil)
-
- Try using ssh's ControlMaster and ControlPath (see the ssh_config
- man page) to share multiple ssh connections over a single network
- connection. That cuts out the cryptographic handshake on each
- file write, sometimes speeding it up by an order of magnitude.
- (see http://thomer.com/howtos/netrw_ssh.html)
- (included by permission)
-
- Add the following to your ~/.ssh/config: >
-
- # you change "*" to the hostname you care about
- Host *
- ControlMaster auto
- ControlPath /tmp/%r@%h:%p
-
- < Then create an ssh connection to the host and leave it running: >
-
- ssh -N host.domain.com
-
- < Now remotely open a file with Vim's Netrw and enjoy the
- zippiness: >
-
- vim scp://host.domain.com//home/user/.bashrc
- <
- *netrw-p15*
- P15. How may I use a double-click instead of netrw's usual single click
- to open a file or directory? (Ben Fritz)
-
- First, disable netrw's mapping with >
- let g:netrw_mousemaps= 0
- < and then create a netrw buffer only mapping in
- $HOME/.vim/after/ftplugin/netrw.vim: >
- nmap <buffer> <2-leftmouse> <CR>
- < Note that setting g:netrw_mousemaps to zero will turn off
- all netrw's mouse mappings, not just the <leftmouse> one.
- (see |g:netrw_mousemaps|)
-
- ==============================================================================
- 11. Debugging Netrw Itself *netrw-debug* {{{1
-
- The <netrw.vim> script is typically available as something like:
- >
- /usr/local/share/vim/vim7x/plugin/netrwPlugin.vim
- /usr/local/share/vim/vim7x/autoload/netrw.vim
- < -or- >
- /usr/local/share/vim/vim6x/plugin/netrwPlugin.vim
- /usr/local/share/vim/vim6x/autoload/netrw.vim
- <
- which is loaded automatically at startup (assuming :set nocp).
-
- 1. Get the <Decho.vim> script, available as:
-
- http://mysite.verizon.net/astronaut/vim/index.html#DECHO
- or
- http://vim.sourceforge.net/scripts/script.php?script_id=120
-
- It now comes as a "vimball"; if you're using vim 7.0 or earlier,
- you'll need to update vimball, too. See
- http://mysite.verizon.net/astronaut/vim/index.html#VIMBALL
-
- 2. Edit the <netrw.vim> file by typing: >
-
- vim netrw.vim
- :DechoOn
- :wq
- <
- To restore to normal non-debugging behavior, re-edit <netrw.vim>
- and type >
-
- vim netrw.vim
- :DechoOff
- :wq
- <
- This command, provided by <Decho.vim>, will comment out all
- Decho-debugging statements (Dfunc(), Dret(), Decho(), Dredir()).
-
- 3. Then bring up vim and attempt to evoke the problem by doing a
- transfer or doing some browsing. A set of messages should appear
- concerning the steps that <netrw.vim> took in attempting to
- read/write your file over the network in a separate tab.
-
- To save the file, use >
- :tabnext
- :set bt=
- :w! DBG
- < Please send that information to <netrw.vim>'s maintainer, >
- NdrOchip at ScampbellPfamily.AbizM - NOSPAM
- <
- ==============================================================================
- 12. History *netrw-history* {{{1
-
- v145: Apr 05, 2012 * moved some command from a g:netrw_local_...
- format to g:netwr_local... format
- * included some NOTE level messages about
- commands that aren't executable
- * |g:netrw_errorlvl| (default: NOTE=0)
- option introduced
- v144: Mar 12, 2012 * when |CTRL-W_s| or |CTRL-W_v| are used,
- or their wincmd equivalents, on a netrw
- buffer, the netrw's w: variables were
- not copied over. Fixed.
- Mar 13, 2012 * nbcd_curpos_{bufnr('%')} was commented
- out, and was mistakenly used during
- RestorePosn. Unfortunately, I'm not
- sure why it was commented out, so this
- "fix" may re-introduce an earlier problem.
- Mar 21, 2012 * included s:rexposn internally to make
- :Rex return the cursor to the same pos'n
- upon restoration of netrw buffer
- Mar 27, 2012 * (sjbesse) s:NetrwGetFile() needs to remove
- "/" from the netrw buffer's usual |'isk'|
- in order to allow "filetype detect" to work
- properly for scripts.
- v143: Jun 01, 2011 * |g:netrw_winsize| will accept a negative
- number; the absolute value of it will then
- be used to specify lines/columns instead of
- a percentage.
- Jul 05, 2011 * the "d" map now supports mkdir via ftp
- See |netrw-d| and |g:netrw_remote_mkdir|
- Jul 11, 2011 * Changed Explore!, Sexplore!, and Vexplore
- to use a percentage of |winwidth()| instead
- of a percentage of |winheight()|.
- Jul 11, 2011 * included support for https://... I'm just
- beginning to test this, however.
- Aug 01, 2011 * changed RestoreOptions to also restore
- cursor position in netrw buffers.
- Aug 12, 2011 * added a note about "%" to the balloon
- Aug 30, 2011 * if |g:netrw_nobeval| exists, then balloon
- evaluation is suppressed.
- Aug 31, 2011 * (Benjamin R Haskell) provided a patch that
- implements non-standard port handling for
- files opened via the remote browser.
- Aug 31, 2011 * Fixed a **//pattern Explorer bug
- Sep 15, 2011 * (reported by Francesco Campana) netrw
- now permits the "@" to be part of the
- user id (if there's an @ that appears
- to the right).
- Nov 21, 2011 * New option: |g:netrw_ftp_options|
- Dec 07, 2011 * (James Sinclair) provided a fix handling
- attempts to use a uid and password when
- they weren't defined. This affected
- NetWrite (NetRead already had that fix).
-
-
- ==============================================================================
- 13. Todo *netrw-todo* {{{1
-
- 07/29/09 : banner :|g:netrw_banner| can be used to suppress the
- suppression banner. This feature is new and experimental,
- so its in the process of being debugged.
- 09/04/09 : "gp" : See if it can be made to work for remote systems.
- : See if it can be made to work with marked files.
-
- ==============================================================================
- 14. Credits *netrw-credits* {{{1
-
- Vim editor by Bram Moolenaar (Thanks, Bram!)
- dav support by C Campbell
- fetch support by Bram Moolenaar and C Campbell
- ftp support by C Campbell <NdrOchip@ScampbellPfamily.AbizM>
- http support by Bram Moolenaar <bram@moolenaar.net>
- rcp
- rsync support by C Campbell (suggested by Erik Warendorph)
- scp support by raf <raf@comdyn.com.au>
- sftp support by C Campbell
-
- inputsecret(), BufReadCmd, BufWriteCmd contributed by C Campbell
-
- Jérôme Augé -- also using new buffer method with ftp+.netrc
- Bram Moolenaar -- obviously vim itself, :e and v:cmdarg use,
- fetch,...
- Yasuhiro Matsumoto -- pointing out undo+0r problem and a solution
- Erik Warendorph -- for several suggestions (g:netrw_..._cmd
- variables, rsync etc)
- Doug Claar -- modifications to test for success with ftp
- operation
-
- ==============================================================================
- Modelines: {{{1
- vim:tw=78:ts=8:ft=help:norl:fdm=marker
-