-*pi_netrw.txt* For Vim version 6.3. Last change: Oct 08, 2004
+*pi_netrw.txt* For Vim version 6.3. Last change: Jul 09, 2005
VIM REFERENCE MANUAL by Charles E. Campbell, Jr.
==============================================================================
0. Contents *netrw-contents*
-1. Netrw Reference.....................................|netrw-ref|
-2. Network-Oriented File Transfer......................|netrw-xfer|
-3. Activation..........................................|netrw-activate|
-4. Transparent File Transfer...........................|netrw-transparent|
-5. Ex Commands.........................................|netrw-ex|
-6. Variables and Options...............................|netrw-var|
-7. Directory Browser...................................|netrw-browse|
-8. Problems and Fixes..................................|netrw-problems|
-9. Debugging...........................................|netrw-debug|
-10. History.............................................|netrw-history|
-11. Credits.............................................|netrw-credits|
+1. Netrw Reference......................................|netrw-ref|
+2. Network-Oriented File Transfer.......................|netrw-xfer|
+ NETRC..............................................|netrw-netrc|
+ PASSWORD...........................................|netrw-passwd|
+3. Activation...........................................|netrw-activate|
+4. Transparent File Transfer............................|netrw-transparent|
+5. Ex Commands..........................................|netrw-ex|
+6. Variables and Options................................|netrw-var|
+7. Directory Browser....................................|netrw-browse| {{{1
+ Maps...............................................|netrw-maps|
+ Exploring..........................................|netrw-explore-cmds|
+ Quick Reference Commands Table.....................|netrw-browse-cmds|
+ Netrw Browser Variables............................|netrw-browse-var|
+ Introduction To Directory Browsing.................|netrw-browse-intro|
+ Directory Exploring Commands.......................|netrw-explore|
+ Refreshing The Listing.............................|netrw-ctrl-l|
+ Going Up...........................................|netrw--|
+ Browsing...........................................|netrw-cr|
+ Long Vs Short Listing..............................|netrw-i|
+ Making A New Directory.............................|netrw-d|
+ Deleting Files Or Directories......................|netrw-delete|
+ Renaming Files Or Directories......................|netrw-move|
+ Hiding Files Or Directories........................|g:netrw-a|
+ Edit File Or Directory Hiding List.................|netrw-h|
+ Browsing With A Horizontally Split Window..........|netrw-o|
+ Preview Window.....................................|netrw-p|
+ Selecting Sorting Style............................|netrw-s|
+ Editing The Sorting Sequence.......................|netrw-S|
+ Reversing Sorting Order............................|netrw-r|
+ Changing To A Predecessor Directory................|netrw-u|
+ Changing To A Successor Directory..................|netrw-U|
+ Browsing With A Vertically Split Window............|netrw-v|
+ Customizing Browsing With A User Function..........|netrw-x|
+ Making The Browsing Directory The Current Directory|netrw-c|
+ Bookmarking A Directory............................|netrw-b|
+ Changing To A Bookmarked Directory.................|netrw-B|
+ Listing Bookmarks And History......................|netrw-q|
+ Improving Directory Browsing.......................|netrw-list-hack| }}}1
+8. Problems and Fixes...................................|netrw-problems|
+9. Debugging............................................|netrw-debug|
+10. History..............................................|netrw-history|
+11. Credits..............................................|netrw-credits|
The functionality mentioned here is done via using |standard-plugin|
techniques. This plugin is only available if
which is defaulted to "scp -q").
Ftp, an old protocol, seems to be blessed by numerous implementations.
-Unfortunately, some implementations are noisy (i.e., add junk to the end
+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
-(i.e., FreeBSD) provide a utility called "fetch" which uses the ftp protocol
+(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 executable, it will be used to do reads for
ftp://... (and http://...) . See |netrw-var| for more about this.
For rcp, scp, sftp, and http, one may use network-oriented file transfers
-transparently; i.e.
+transparently; ie.
>
vim rcp://[user@]machine/path
vim scp://[user@]machine/path
vim ftp://[user@]machine[[:#]portnumber]/path
<
However, ftp will often need to query the user for the userid and password.
-The latter will be done "silently"; i.e. asterisks will show up instead of
+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
down the certificate and place it into /usr/ssl/cert.pem. This operation
renders the server treatment as "trusted".
- *netrw-fixup*
+ *netrw-fixup* *netreadfixup*
If your ftp for whatever reason generates unwanted lines (such as AUTH
messages) you may write a NetReadFixup(tmpfile) function:
>
==============================================================================
7. Directory Browser *netrw-browse* *netrw-dir* *netrw-list* *netrw-help*
- ?..........Help....................................|netrw-help|
- <cr>.......Browsing................................|netrw-cr|
- <del>......Deleting Files or Directories...........|netrw-delete|
- -..........Going Up................................|netrw--|
- a..........Hiding Files or Directories.............|netrw-a|
- b..........Bookmarking a Directory.................|netrw-b|
- B..........Changing to a Bookmarked Directory......|netrw-B|
- c..........Make Browsing Directory The Current Dir.|netrw-c|
- d..........Make A New Directory....................|netrw-d|
- D..........Deleting Files or Directories...........|netrw-D|
- <c-h>......Edit File/Directory Hiding List.........|netrw-h|
- i..........Long Listing............................|netrw-i|
- <c-l>......Refreshing the Listing..................|netrw-ctrl-l|
- o..........Browsing with a Horizontal Split........|netrw-o|
- p..........Preview Window..........................|netrw-p|
- q..........Listing Bookmarks and History...........|netrw-q|
- r..........Reversing Sorting Order.................|netrw-r|
- R..........Renaming Files or Directories...........|netrw-R|
- s..........Selecting Sorting Style.................|netrw-s|
- S..........Editing the Sorting Sequence............|netrw-S|
- u..........Changing to a Predecessor Directory.....|netrw-u|
- U..........Changing to a Successor Directory.......|netrw-U|
- v..........Browsing with a Vertical Split..........|netrw-v|
- x..........Customizing Browsing....................|netrw-x|
+
+MAPS *netrw-maps*
+ ?................Help.......................................|netrw-help|
+ <cr>.............Browsing...................................|netrw-cr|
+ <del>............Deleting Files or Directories..............|netrw-delete|
+ -................Going Up...................................|netrw--|
+ a................Hiding Files or Directories................|netrw-a|
+ b................Bookmarking a Directory....................|netrw-b|
+ B................Changing to a Bookmarked Directory.........|netrw-B|
+ c................Make Browsing Directory The Current Dir....|netrw-c|
+ d................Make A New Directory.......................|netrw-d|
+ D................Deleting Files or Directories..............|netrw-D|
+ <c-h>............Edit File/Directory Hiding List............|netrw-h|
+ i................Long Listing...............................|netrw-i|
+ <c-l>............Refreshing the Listing.....................|netrw-ctrl-l|
+ o................Browsing with a Horizontal Split...........|netrw-o|
+ p................Preview Window.............................|netrw-p|
+ q................Listing Bookmarks and History..............|netrw-q|
+ r................Reversing Sorting Order....................|netrw-r|
+ R................Renaming Files or Directories..............|netrw-R|
+ s................Selecting Sorting Style....................|netrw-s|
+ S................Editing the Sorting Sequence...............|netrw-S|
+ u................Changing to a Predecessor Directory........|netrw-u|
+ U................Changing to a Successor Directory..........|netrw-U|
+ v................Browsing with a Vertical Split.............|netrw-v|
+ x................Customizing Browsing.......................|netrw-x|
+
+ COMMANDS *netrw-explore-cmds*
+ :Explore[!] [dir].Explore directory of current file........|netrw-explore|
+ :Sexplore[!] [dir].Split & Explore directory of current file|netrw-explore|
+ :Hexplore[!] [dir].Horizontal Split & Explore...............|netrw-explore|
+ :Vexplore[!] [dir].Vertical Split & Explore.................|netrw-explore|
QUICK REFERENCE COMMANDS TABLE *netrw-browse-cmds*
>
< g:netrw_alto change from above splitting to
below splitting by setting this
variable (see |netrw-o|)
+ default: =0
+
g:netrw_altv change from left splitting to
right splitting by setting this
variable (see |netrw-v|)
+ default: =0
+
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.
+ 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_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_keepdir =1 (default) keep current directory
immune from the browsing directory.
=0 keep the current directory the
same as the browsing directory.
The browsing directory is contained in
b:netrw_curdir
+
g:netrw_list_cmd command for listing remote directories
+ default: (if ssh is executable)
+ "ssh HOSTNAME ls -FLa"
+
g:netrw_longlist if =1, then long listing will be default
+
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_list_hide comma separated list of patterns for
hiding files
+ default: ""
+
g:netrw_local_mkdir command for making a local directory
+ default: "ssh HOSTNAME mkdir"
+
g:netrw_local_rmdir remove directory command (rmdir)
- g:netrw_local_rename rename file/directory command
- unix-default: rm win32-default: ren
+ 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/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
+ default: "ssh HOSTNAME mkdir"
+
g:netrw_rm_cmd command for removing files
+ default: "ssh HOSTNAME rm"
+
g:netrw_rmdir_cmd command for removing directories
+ default: "ssh HOSTNAME rmdir"
+
g:netrw_rmf_cmd command for removing softlinks
+ default: "ssh HOSTNAME rm -f"
+
g:netrw_hide if true, the hiding list is used
+ default: =0
+
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_sequence when sorting by name, first sort by the
comma-separated pattern sequence
+ default: '[\/]$,*,\.bak$,\.o$,\.h$,
+ \.info$,\.swp$,\.obj$'
+
g:netrw_timefmt specify format string to strftime() (%c)
+ default: "%c"
+
g:netrw_winsize specify initial size of new o/v windows
+ default: ""
-INTRODUCTION TO DIRECTORY BROWSING *file-explorer*
+INTRODUCTION TO DIRECTORY BROWSING *netrw-browse-intro*
Netrw supports the browsing of directories on the local system and on remote
hosts, including generating listing directories, entering directories, editing
If you'd like to avoid entering the password in for directory listings, scp,
ssh interaction, etc, see |netrw-list-hack|.
+
+DIRECTORY EXPLORING COMMANDS *netrw-explore*
+
+ :Explore[!] [dir].Explore directory of current file
+ :Sexplore[!] [dir].Split & Explore directory of current file
+ :Hexplore[!] [dir].Horizontal Split & Explore
+ :Vexplore[!] [dir].Vertical Split & Explore
+
+The Explore command 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; the optional ! 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,
+but with the optional ! the splitting will be done vertically.
+
+Hexplore does an Explore with |belowright| horizontal splitting; the
+optional ! does the Explore with |aboveleft| horizontal splitting.
+
+Vexplore does an Explore with |leftabove| vertical splitting; the optiona
+! does an Explore with |topleft| vertical splitting.
+
+
REFRESHING THE LISTING *netrw-ctrl-l*
To refresh either a local or remote directory listing, press ctrl-l (<c-l>) or
Directories will themselves be listed, and files will be opened using the
protocol given in the original read request.
+
LONG VS SHORT LISTING *netrw-i*
The short listing format gives just the files' and directories' names.
directory. Attempts to make a local directory that already exists (as either
a file or a directory) will be detected, reported on, and ignored.
+
DELETING FILES OR DIRECTORIES *netrw-delete* *netrw-D*
Deleting/removing files and directories involves moving the cursor to the
the V (|linewise-visual|).
-HIDING FILES OR DIRECTORIES *netrw-a* *g:netrw_list_hide*
+HIDING FILES OR DIRECTORIES *g:netrw-a* *g:netrw_list_hide*
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. The g:netrw_list_hide variable holds a comma delimited list
-of patterns (ex. \.obj) which specify the hiding list. (also see |netrw-h|)
+which match. The "a" map allows the user to cycle about these three ways.
+The g:netrw_list_hide variable holds a comma delimited list of patterns
+(ex. \.obj) which specify the hiding list. (also see |netrw-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.
-EDIT FILE OR DIRECTORY HIDING LIST *netrw-h*
+
+EDIT FILE OR DIRECTORY HIDING LIST *netrw-h* *netrw-edithide*
The "<ctrl-h>" map brings up a requestor allowing the user to change the
file/directory hiding list. The hiding list consists of one or more patterns
either be hidden (ie. not shown) or be the only ones displayed (see |netrw-a|).
-BROWSING WITH A HORIZONTALLY SPLIT WINDOW *netrw-o*
+BROWSING WITH A HORIZONTALLY SPLIT WINDOW *netrw-o* *netrw-horiz*
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
in your <.vimrc>.
-PREVIEW WINDOW
+
+PREVIEW WINDOW *netrw-p* *netrw-preview*
One may use a preview window (currently only for local browsing) by using
the "p" key when the cursor is atop the desired filename to be previewed.
-SELECTING SORTING STYLE *netrw-s*
+SELECTING SORTING STYLE *netrw-s* *netrw-sort*
One may select the sorting style by name, time, or (file) size. The
"s" map allows one to circulate among the three choices; the directory
listing will automatically be refreshed to reflect the selected style.
-EDITING THE SORTING SEQUENCE *netrw-S*
+EDITING THE SORTING SEQUENCE *netrw-S* *netrw-sortsequence*
When "Sorted by" is name, one may specify priority via the sorting
sequence (g:netrw_sort_sequence). The sorting sequence typically
or by using the "S" map.
-REVERSING SORTING ORDER *netrw-r*
+REVERSING SORTING ORDER *netrw-r* *netrw-reverse*
One may toggle between normal and reverse sorting order by pressing the
"r" key.
-CHANGING TO A PREDECESSOR DIRECTORY *netrw-u*
+CHANGING TO A PREDECESSOR DIRECTORY *netrw-u* *netrw-updir*
Every time you change to a new directory (new for the current session),
netrw will save the directory in a recently-visited directory history
the opposite, see |netrw-U|.
-CHANGING TO A SUCCESSOR DIRECTORY *netrw-U*
+CHANGING TO A SUCCESSOR DIRECTORY *netrw-U* *netrw-downdir*
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
in your <.vimrc>.
-CUSTOMIZING BROWSING WITH A USER FUNCTION *netrw-x*
+CUSTOMIZING BROWSING WITH A USER FUNCTION *netrw-x* *netrw-handler*
One may "enter" a file with a special handler, thereby firing up a browser or
other application, for example, on a file by hitting the "x" key. Presumably
for how to bookmark a directory and |netrw-q| for how to list them.
-LISTING BOOKMARKS AND HISTORY *netrw-q*
+LISTING BOOKMARKS AND HISTORY *netrw-q* *netrw-listbookmark*
Pressing "q" will list the bookmarked directories and directory traversal
history (query). (see |netrw-b|, |netrw-B|, |netrw-u|, and |netrw-U|)
-IMPROVING DIRECTORY BROWSING *netrw-list-hack*
+IMPROVING DIRECTORY BROWSING *netrw-listhack*
Especially with the remote directory browser, constantly entering the password
is tedious.
==============================================================================
10. History *netrw-history*
+ v56: * LocalBrowse now saves autochdir setting, unsets it, and
+ restores it before returning.
+ * using vim's rename() instead of system + local_rename variable
+ v55: * -bar used with :Explore :Sexplore etc to allow multiple
+ commands to be separated by |s
+ * browser listings now use the "nowrap" option
+ * browser: some unuseful error messages now suppressed
+ v54: * For backwards compatibility, Explore and Sexplore have been
+ implemented. In addition, Hexplore and Vexplore commands
+ are available, too.
+ * <amatch> used instead of <afile> in the transparency
+ support (BufReadCmd, FileReadCmd, FileWriteCmd)
+ * ***netrw*** prepended to various error messages netrw may emit
+ * g:netrw_port used instead of b:netrw_port for scp
+ * any leading [:#] is removed from port numbers
+ v53: * backslashes as well as slashes placed in various patterns
+ (ex. g:netrw_sort_sequence) to better support Windows
v52: * nonumber'ing now set for browsing buffers
* when the hiding list hid all files, error messages ensued. Fixed
* when browsing, swf is set, but directory is not set, when netrw
Doug Claar -- modifications to test for success with ftp operation
==============================================================================
- vim:tw=78:ts=8:ft=help:norl:
+ vim:tw=78:ts=8:ft=help:norl:fdm=marker
" netrw.vim: Handles file transfer and remote directory listing across a network
-" last change: Dec 29, 2004
+" Last Change: Aug 01, 2005
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
-" Version: 54
+" Version: 56
" License: Vim License (see vim's :help license)
"
" But be doers of the Word, and not only hearers, deluding your own selves
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" ---------------------------------------------------------------------
-" Prevent Reloading: {{{1
+" Load Once: {{{1
if exists("g:loaded_netrw") || &cp
finish
endif
-let g:loaded_netrw = "v54"
-let s:save_cpo = &cpo
+let g:loaded_netrw = "v56"
let loaded_explorer = 1
+let s:keepcpo = &cpo
set cpo&vim
" ---------------------------------------------------------------------
" provide a default listing command
let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
else
-" call Decho("ssh is not executable, can't do remote directory exploring")
+" call Decho("ssh is not executable, can't do remote directory exploring with ssh")
let g:netrw_list_cmd= ""
endif
endif
if !exists("g:netrw_local_rmdir")
let g:netrw_local_rmdir= "rmdir"
endif
-if !exists("g:netrw_local_rename")
- if g:netrw_cygwin
- let g:netrw_local_rename= "mv"
- elseif has("win32") || has("win95") || has("win64") || has("win16")
- let g:netrw_local_rename= "rename"
- elseif has("unix")
- let g:netrw_local_rename= "mv"
- endif
-endif
if !exists("g:netrw_local_mkdir")
let g:netrw_local_mkdir= "mkdir"
endif
if version >= 600
augroup FileExplorer
au!
- au BufEnter * call <SID>LocalBrowse(expand("<afile>"))
+ au BufEnter * call <SID>LocalBrowse(expand("<amatch>"))
augroup END
" Network Handler: {{{2
augroup Network
au!
if has("win32") || has("win95") || has("win64") || has("win16")
- au BufReadCmd file://* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e '.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
+ au BufReadCmd file://* exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e '.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
else
- au BufReadCmd file:///* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
- au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
+ au BufReadCmd file:///* exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
+ au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
endif
- au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
- au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread " .expand("<afile>")|exe "silent doau FileReadPost ".expand("<afile>")
- au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<afile>")|exe "Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
- au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<afile>")|exe "'[,']Nwrite " .expand("<afile>")|exe "silent doau FileWritePost ".expand("<afile>")
+ au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread 0r ".expand("<amatch>")|exe "silent doau BufReadPost ".expand("<amatch>")
+ au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread " .expand("<amatch>")|exe "silent doau FileReadPost ".expand("<amatch>")
+ au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<amatch>")|exe "Nwrite " .expand("<amatch>")|exe "silent doau BufWritePost ".expand("<amatch>")
+ au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<amatch>")|exe "'[,']Nwrite " .expand("<amatch>")|exe "silent doau FileWritePost ".expand("<amatch>")
augroup END
endif
" ------------------------------------------------------------------------
-" Commands: :Nread, :Nwrite, and :NetUserPass {{{1
-com! -nargs=* Nread call <SID>NetSavePosn()<bar>call <SID>NetRead(<f-args>)<bar>call <SID>NetRestorePosn()
-com! -range=% -nargs=* Nwrite call <SID>NetSavePosn()<bar><line1>,<line2>call <SID>NetWrite(<f-args>)<bar>call <SID>NetRestorePosn()
+" Commands: :Nread, :Nwrite, :NetUserPass {{{1
+com! -nargs=* Nread call s:NetSavePosn()<bar>call s:NetRead(<f-args>)<bar>call s:NetRestorePosn()
+com! -range=% -nargs=* Nwrite call s:NetSavePosn()<bar><line1>,<line2>call s:NetWrite(<f-args>)<bar>call s:NetRestorePosn()
com! -nargs=* NetUserPass call NetUserPass(<f-args>)
+" Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{1
+com! -nargs=? -bar -bang Explore call s:Explore(0,0+<bang>0,<q-args>)
+com! -nargs=? -bar -bang Sexplore call s:Explore(1,0+<bang>0,<q-args>)
+com! -nargs=? -bar -bang Hexplore call s:Explore(1,2+<bang>0,<q-args>)
+com! -nargs=? -bar -bang Vexplore call s:Explore(1,4+<bang>0,<q-args>)
+
" ------------------------------------------------------------------------
" NetSavePosn: saves position of cursor on screen {{{1
fun! s:NetSavePosn()
let ichoice = ichoice + 1
if ichoice > a:0
if !exists("g:netrw_quiet")
- echoerr "Unbalanced string in filename '". wholechoice ."'"
+ echoerr "***netrw*** Unbalanced string in filename '". wholechoice ."'"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
" call Dret("NetRead")
exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine
endif
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
- if getline(1) !~ "^$" && !exists("g:netrw_quiet")
+ if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
let debugkeep= &debug
set debug=msg
- echoerr getline(1)
+ echoerr "***netrw*** ".getline(1)
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &debug= debugkeep
endif
if getline(1) !~ "^$"
" call Decho("error<".getline(1).">")
if !exists("g:netrw_quiet")
- echoerr getline(1)
+ echoerr "***netrw*** ".getline(1)
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
endif
" call Decho("read via http (method #5)")
if g:netrw_http_cmd == ""
if !exists("g:netrw_quiet")
- echoerr "neither wget nor fetch command is available"
+ echoerr "***netrw*** neither wget nor fetch command is available"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
exit
elseif b:netrw_method == 8 " read with fetch
if g:netrw_fetch_cmd == ""
if !exists("g:netrw_quiet")
- echoerr "fetch command not available"
+ echoerr "***netrw*** fetch command not available"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
exit
if a:readcmd[0] == '0'
" get file into buffer
+
" record remote filename
- let rfile= bufname("%")
-" call Decho("edit remotefile<".rfile.">")
+ let rfile= bufname(".")
+" call Decho("remotefile<".rfile.">")
+" call Dredir("ls!","starting buffer list")
+
" rename the current buffer to the temp file (ie. fname)
- exe "keepalt file ".fname
+ keepalt exe "file ".fname
+" call Dredir("ls!","after renaming current buffer to <".fname.">")
+
" edit temporary file
e
+" call Dredir("ls!","after editing temporary file")
+
" rename buffer back to remote filename
- exe "keepalt file ".rfile
- " wipe out the buffer with the temp file name
- exe "bwipe ".fname
+ keepalt exe "file ".rfile
+" call Dredir("ls!","renaming buffer back to remote filename<".rfile.">")
let line1 = 1
let line2 = line("$")
if exists("*NetReadFixup")
" call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")")
call NetReadFixup(a:method, line1, line2)
+" else " Decho
+" call Decho("NetReadFixup() not called, doesn't exist")
endif
" update the Buffers menu
let ichoice = ichoice + 1
if choice > a:0
if !exists("g:netrw_quiet")
- echoerr "Unbalanced string in filename '". wholechoice ."'"
+ echoerr "***netrw*** Unbalanced string in filename '". wholechoice ."'"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
" call Dret("NetWrite")
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
if getline(1) !~ "^$"
if !exists("g:netrw_quiet")
- echoerr getline(1)
+ echoerr "***netrw*** ".getline(1)
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
let mod=1
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
if getline(1) !~ "^$"
if !exists("g:netrw_quiet")
- echoerr getline(1)
+ echoerr "***netrw*** ".getline(1)
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
let mod=1
" http: NetWrite Method #5
elseif b:netrw_method == 5
if !exists("g:netrw_quiet")
- echoerr "***warning*** currently <netrw.vim> does not support writing using http:"
+ echoerr "***netrw*** currently <netrw.vim> does not support writing using http:"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
" call Dret("NetWrite")
endfun
-" ------------------------------------------------------------------------
-" Browsing Support For Remote Directories And Files: {{{1
+" ===========================================
+" Remote Directory Browsing Support: {{{1
+" ===========================================
+
" NetBrowse: This function uses the command in g:netrw_list_cmd to get a list {{{2
" of the contents of a remote directory. It is assumed that the
" g:netrw_list_cmd has a string, HOSTNAME, that needs to be substituted
endif
" make this buffer modifiable
- setlocal ma
+ setlocal ma nonu nowrap
" analyze a:dirname and g:netrw_list_cmd
let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$'
" call Decho("dirpat<".dirpat.">")
if dirname !~ dirpat
if !exists("g:netrw_quiet")
- echoerr "NetBrowse: I don't understand your dirname<".dirname.">"
+ echoerr "***netrw*** netrw doesn't understand your dirname<".dirname.">"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
" call Dret("NetBrowse : badly formatted dirname<".dirname.">")
" optionally sort by time (-t) or by size (-S)
if listcmd == "dir" && g:netrw_sort_by =~ "^[ts]"
- echoerr "***warning*** windows' ftp doesn't support time/size sorts (get cygwin, set g:netrw_cygwin)"
+ echoerr "***netrw*** windows' ftp doesn't support time/size sorts (get cygwin, set g:netrw_cygwin)"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
else
if g:netrw_sort_by =~ "^t"
exe 'nnoremap <buffer> <silent> R :exe "norm! 0"<bar>call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>'
exe 'vnoremap <buffer> <silent> R :call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>'
nnoremap <buffer> ? :he netrw-browse-cmds<cr>
- setlocal ma nonu
+ setlocal ma nonu nowrap
" Set up the banner
" call Decho("set up the banner: sortby<".g:netrw_sort_by."> method<".method.">")
keepjumps norm! 0
" more cleanup
- exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
- exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#'
- exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*$#/#'
+ exe 'keepjumps silent! '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
+ exe "keepjumps silent! ".s:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
+ exe "keepjumps silent! ".s:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
endif
else
if line("$") >= s:netrw_bannercnt
if g:netrw_sort_by =~ "^n"
call s:SetSort()
- exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
+ if v:version < 700
+ exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
+ else
+ exe 'keepjumps silent '.s:netrw_bannercnt.',$sort'
+ endif
exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{3}\///e'
endif
if g:netrw_longlist
" call Decho("returned=".ret." errcode=".v:shell_error)
if v:shell_error != 0 && !exists("g:netrw_quiet")
- echoerr "unable to remove directory<".rmfile."> -- is it empty?"
+ echoerr "***netrw*** unable to remove directory<".rmfile."> -- is it empty?"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
endif
" cleanup for Windows
if has("win32") || has("win95") || has("win64") || has("win16")
- keepjumps silent! %s/\r$//
+ keepjumps silent!! %s/\r$//e
endif
if a:cmd == "dir"
" infer directory/link based on the file permission string
- keepjumps silent g/d\%([-r][-w][-x]\)\{3}/s@$@/@
- keepjumps silent g/l\%([-r][-w][-x]\)\{3}/s/$/@/
+ keepjumps silent! g/d\%([-r][-w][-x]\)\{3}/s@$@/@
+ keepjumps silent! g/l\%([-r][-w][-x]\)\{3}/s/$/@/
if !g:netrw_longlist
- exe "keepjumps silent ".curline.',$s/^\%(\S\+\s\+\)\{8}//'
+ exe "keepjumps silent! ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
endif
endif
endfun
" ---------------------------------------------------------------------
-" NetSaveWordPosn: used by the "s" command in both remote and local
+" NetSaveWordPosn: used by the "s" command in both remote and local {{{2
" browsing. Along with NetRestoreWordPosn(), it keeps the cursor on
" the same word even though the sorting has changed its order of appearance.
fun! s:NetSaveWordPosn()
endfun
" ---------------------------------------------------------------------
-" NetRestoreWordPosn: used by the "s" command; see NetSaveWordPosn() above
+" NetRestoreWordPosn: used by the "s" command; see NetSaveWordPosn() above {{{2
fun! s:NetRestoreWordPosn()
" call Dfunc("NetRestoreWordPosn()")
silent! call search(s:netrw_saveword,'w')
endfun
" ---------------------------------------------------------------------
-" NetMakeDir: this function makes a directory (both local and remote)
+" NetMakeDir: this function makes a directory (both local and remote) {{{2
fun! <SID>NetMakeDir(usrhost)
" call Dfunc("NetMakeDir(usrhost<".a:usrhost.">)")
" call Decho("fullnewdir<".fullnewdir.">")
if isdirectory(fullnewdir)
if !exists("g:netrw_quiet")
- echoerr "***warning*** <".newdirname."> is already a directory!"
+ echoerr "***netrw*** <".newdirname."> is already a directory!"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
" call Dret("NetMakeDir : directory<".newdirname."> exists previously")
endif
if filereadable(fullnewdir)
if !exists("g:netrw_quiet")
- echoerr "***warning*** <".newdirname."> is already a file!"
+ echoerr "***netrw*** <".newdirname."> is already a file!"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
" call Dret("NetMakeDir : file<".newdirname."> exists previously")
return
endif
-" call Decho("exe silent! !".g:netrw_local_mkdir.' "'.fullnewdir.'"')
- exe "silent! !".g:netrw_local_mkdir.' "'.fullnewdir.'"'
+
+ " requested new local directory is neither a pre-existing file or
+ " directory, so make it!
+ if exists("*mkdir")
+ call mkdir(fullnewdir,"p")
+ else
+ let netrw_origdir= s:NetGetcwd(1)
+ exe 'cd '.b:netrw_curdir
+" call Decho("netrw_origdir<".netrw_origdir."> b:netrw_curdir<".b:netrw_curdir.">")
+" call Decho("exe silent! !".g:netrw_local_mkdir.' "'.newdirname.'"')
+ exe "silent! !".g:netrw_local_mkdir.' "'.newdirname.'"'
+ if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif
+ endif
if v:shell_error == 0
" refresh listing
exe "norm! ".hline."G0z\<CR>"
exe linenum
elseif !exists("g:netrw_quiet")
- echoerr "***warning*** unable to make directory<".newdirname.">"
+ echoerr "***netrw*** unable to make directory<".newdirname.">"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
redraw!
exe "norm! ".hline."G0z\<CR>"
exe linenum
elseif !exists("g:netrw_quiet")
- echoerr "***warning*** unable to make directory<".newdirname.">"
+ echoerr "***netrw*** unable to make directory<".newdirname.">"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
redraw!
endfun
" ---------------------------------------------------------------------
-" NetBookmarkDir:
+" NetBookmarkDir: {{{2
" 0: bookmark the current directory
" 1: change to the bookmarked directory
fun! <SID>NetBookmarkDir(chg,curdir)
" call Dret("NetBookmarkDir")
endfun
-" ---------------------------------------------------------------------
-" Browsing Support For Local Directories And Files: {{{1
+" ==========================================
+" Local Directory Browsing Support: {{{1
+" ==========================================
" ---------------------------------------------------------------------
" LocalBrowse: supports local file/directory browsing {{{2
if v:version < 603
if !exists("g:netrw_quiet")
- echoerr "vim version<".v:version."> too old for browsing with netrw"
+ echoerr "***netrw*** vim version<".v:version."> too old for browsing with netrw"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
" call Dret("LocalBrowse : vim version<".v:version."> too old")
return
endif
+ " record autochdir setting and then insure its unset (tnx to David Fishburn)
+ let keep_autochdir= &autochdir
+ set noautochdir
+
" record and change current directory
- let netrw_origdir= s:NetGetcwd(1)
- try
- cd -
- let netrw_altdir= s:NetGetcwd(1)
- cd -
- catch
- let netrw_altdir= ''
- endtry
- exe 'cd '.escape(substitute(a:dirname,'\\','/','ge'),s:netrw_cd_escape)
-" call Decho("dirname<".a:dirname."> buf#".bufnr("%")." winnr=".winnr())
+ let b:netrw_curdir= substitute(a:dirname,'\\','/','ge')
+ if b:netrw_curdir =~ '[/\\]$'
+ let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e')
+ endif
+" call Decho("b:netrw_curdir<".b:netrw_curdir.">")
+ " make netrw's idea of the current directory vim's if the user wishes
+ if g:netrw_keepdir
+" call Decho("change directory: cd ".b:netrw_curdir)
+ exe 'cd '.b:netrw_curdir
+ endif
+
+ " change the name of the buffer to reflect the b:netrw_curdir
+ exe 'silent file '.escape(b:netrw_curdir,s:netrw_cd_escape)
" make this buffer modifiable
setlocal ma
- " disable 'autochdir', it breaks things
- set noautochdir
-
" ---------------------------
" Perform Directory Listing:
-" call Decho("Perform directory listing...")
- " set up new buffer and map
- " dirname : current working directory, no escapes, has trailing /
- " dirnamens : dirname, but with no trailing slash
- " dirnamenr : buffer number containing dirnamens
- " dirnamebuf: buffer's idea of dirname, with all \ -> /
- let dirname = s:NetGetcwd(0)
- let dirnamens = substitute(dirname,'[\/]$','','e')
- let dirnamenr = bufnr(dirnamens.'$')
- let dirnamebuf = substitute(bufname(dirnamenr),'\\','/','ge')
-" call Decho("dirnamenr= bufnr(".dirnamens.")=".dirnamenr." bufname(".dirnamenr.")=".bufname(dirnamenr))
-
- if dirnamenr != 0 && dirnamebuf != dirnamens
- " try keeping the trailing slash
- let dirnamenr = bufnr(dirname.'$')
-" call Decho("dirnamenr= bufnr(".dirname.")=".dirnamenr." bufname(".dirnamenr.")=".bufname(dirnamenr)." (retry with /)")
- endif
-
- if dirnamenr != -1
- " buffer already exists (hidden), so switch to it!
-" call Decho("buffer already exists: dirnamenr=".dirnamenr." dirname<".dirname."> pre-exists")
-" call Dredir("ls!")
- exe "b ".dirnamenr
- exe 'silent! cd '.escape(dirname,s:netrw_cd_escape)
-" call Decho("changed directory to<".dirname.">")
- if a:dirname != "." && line("$") >= 5 && exists("b:netrw_curdir")
- if b:netrw_curdir == dirname
-" call Dret("LocalBrowse : buffer already exists with info, #".dirnamenr)
- if g:netrw_keepdir
- if netrw_altdir != ''
- exe 'keepjumps cd '.netrw_altdir
- endif
- exe 'keepjumps cd '.netrw_origdir
- endif
- return
- endif
- endif
-" call Decho("buffer already exists, but needs re-listing (buf#".dirnamenr.")")
-" call Decho("buffer name<".bufname("%")."> dirname<".dirname.">")
- setlocal ma
- keepjumps %d
- let curdir= substitute(substitute(expand("%"),'\\','/','ge'),'[^/]$','&/','e')
- if curdir != dirname
- " set standard browser options on buffer
- setlocal bt=nofile bh=hide nobl noswf
- exe 'silent file '.escape(dirname,s:netrw_cd_escape)
-" call Decho("errmsg1<".v:errmsg.">")
-" call Decho("renamed buffer to<".escape(dirname,s:netrw_cd_escape).">")
-" call Decho("yielding actual bufname<".bufname("%").">")
- endif
- else
-" call Decho("generate new buffer named<".escape(dirname,' #').">")
- silent! enew!
- " set standard browser options on buffer
- setlocal bt=nofile bh=hide nobl noswf nonu
- exe 'silent file '.substitute(escape(dirname,s:netrw_cd_escape),'[\/]$','','e')
-" call Decho("errmsg2<".v:errmsg.">")
-" call Decho("renamed buffer to<".substitute(escape(dirname,s:netrw_cd_escape),'[\/]$','','e').">")
-" call Decho("yielding actual bufname<".bufname("%").">")
- endif
- exe "setlocal ts=".g:netrw_maxfilenamelen
-
- if bufname("#") == "" && bufnr("#") != -1
- " the file command produces a lot of [No File] buffers
-" call Decho("wiping out nofile buffer#".bufnr("#"))
- exe bufnr("#")."bwipe"
- endif
" save current directory on directory history list
- call <SID>NetBookmarkDir(3,s:NetGetcwd(0))
+ call <SID>NetBookmarkDir(3,b:netrw_curdir)
" set up all the maps
" call Decho("Setting up local browser maps")
- let b:netrw_curdir= s:NetGetcwd(1)
nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr>
nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'../'))<cr>
keepjumps put ='\" ============================================================================'
keepjumps 1d
keepjumps put ='\" Directory Listing (netrw '.g:loaded_netrw.')'
- keepjumps put ='\" '.dirname
+ keepjumps put ='\" '.b:netrw_curdir
let s:netrw_bannercnt= 3
let sortby= g:netrw_sort_by
" call Decho("bannercnt=".s:netrw_bannercnt)
" generate the requested directory listing
- call LocalBrowseList(dirname)
+ call LocalBrowseList()
" manipulate the directory listing (hide, sort)
setlocal ft=netrwlist
if line("$") >= s:netrw_bannercnt
if g:netrw_sort_by =~ "^n"
call s:SetSort()
- exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
+ if v:version < 700
+ exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
+ else
+ exe 'keepjumps silent '.s:netrw_bannercnt.',$sort'
+ endif
exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{3}\///e'
else
- exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
+ if v:version < 700
+ exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
+ else
+ exe 'keepjumps silent '.s:netrw_bannercnt.',$sort'
+ endif
exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{-}\///e'
endif
endif
exe s:netrw_bannercnt
setlocal noma nomod nonu
- if g:netrw_keepdir
- if netrw_altdir != ''
- exe 'keepjumps cd '.netrw_altdir
- endif
- exe 'keepjumps cd '.netrw_origdir
- endif
+ let &autochdir= keep_autochdir
" call Dret("LocalBrowse : file<".expand("%:p")."> bufname<".bufname("%").">")
endfun
" ---------------------------------------------------------------------
" LocalBrowseList: does the job of "ls" for local directories {{{2
-fun! LocalBrowseList(dirname)
-" call Dfunc("LocalBrowseList(dirname<".a:dirname.">)")
+fun! LocalBrowseList()
+" call Dfunc("LocalBrowseList() b:netrw_curdir<".b:netrw_curdir.">")
" get the list of files contained in the current directory
- let dirname = escape(a:dirname,s:netrw_glob_escape)
- let dirnamelen = strlen(a:dirname)
- let filelist = glob(dirname."*")
+ let dirname = escape(b:netrw_curdir,s:netrw_glob_escape)
+ let dirnamelen = strlen(b:netrw_curdir)
+ let filelist = glob(dirname."/*")
" call Decho("glob(dirname<".dirname.">,*)=".filelist)
if filelist != ""
let filelist= filelist."\n"
endif
- let filelist= filelist.glob(dirname.".*")
+ let filelist= filelist.glob(dirname."/.*")
" call Decho("glob(dirname<".dirname.">,.*)=".glob(dirname.".*"))
" if the directory name includes a "$", and possibly other characters,
if filelist == ""
let filelist= dirname."."
else
- let filelist= filelist."\n".a:dirname."."
+ let filelist= filelist."\n".b:netrw_curdir."."
endif
" call Decho("filelist<".filelist.">")
endif
if filelist !~ '[\\/]\.\.[\\/]\=\(\n\|$\)'
" call Decho("forcibly tacking on ..")
- let filelist= filelist."\n".a:dirname.".."
+ let filelist= filelist."\n".b:netrw_curdir.".."
" call Decho("filelist<".filelist.">")
endif
let filelist= substitute(filelist,'\n\{2,}','\n','ge')
while filelist != ""
if filelist =~ '\n'
- let file = substitute(filelist,'\n.*$','','e')
+ let filename = substitute(filelist,'\n.*$','','e')
let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e')
else
- let file = filelist
+ let filename = filelist
let filelist = ""
endif
- let pfile= file
- if isdirectory(file)
- let pfile= file."/"
+ let pfile= filename
+ if isdirectory(filename)
+ let pfile= filename."/"
endif
+ let pfile= substitute(pfile,'^/','','e')
if pfile =~ '//$'
let pfile= substitute(pfile,'//$','/','e')
endif
let pfile= strpart(pfile,dirnamelen)
+" call Decho(" ")
+" call Decho("filename<".filename.">")
+" call Decho("pfile <".pfile.">")
+
if g:netrw_longlist
- let sz = getfsize(file)
+ let sz = getfsize(filename)
let fsz = strpart(" ",1,15-strlen(sz)).sz
- let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(file))
+ let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename))
+" call Decho("sz=".sz." fsz=".fsz)
endif
if g:netrw_sort_by =~ "^t"
" sort by time (handles time up to 1 quintillion seconds, US)
-" call Decho("getftime(".file.")=".getftime(file))
- let t = getftime(file)
+" call Decho("getftime(".filename.")=".getftime(filename))
+ let t = getftime(filename)
let ft = strpart("000000000000000000",1,18-strlen(t)).t
-" call Decho("exe keepjumps put ='".ft.'/'.file."'")
+" call Decho("exe keepjumps put ='".ft.'/'.filename."'")
let ftpfile= ft.'/'.pfile
keepjumps put=ftpfile
elseif g:netrw_sort_by =~ "^s"
" sort by size (handles file sizes up to 1 quintillion bytes, US)
-" call Decho("getfsize(".file.")=".getfsize(file))
- let sz = getfsize(file)
+" call Decho("getfsize(".filename.")=".getfsize(filename))
+ let sz = getfsize(filename)
let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz
-" call Decho("exe keepjumps put ='".fsz.'/'.file."'")
+" call Decho("exe keepjumps put ='".fsz.'/'.filename."'")
let fszpfile= fsz.'/'.pfile
keepjumps put =fszpfile
keepjumps put=pfile
endif
endwhile
+ setlocal ts=32
" call Dret("LocalBrowseList")
endfun
" is removing the "/". Bad idea, so I have to put it back.
let dirname= dirname.'/'
" call Decho("adjusting dirname<".dirname.">")
+ setlocal ma
+ %d
endif
if newdir !~ '[\/]$'
" call Decho("handling a file: dirname<".dirname.">")
" this lets NetBrowseX avoid the edit
if a:0 < 1
- exe "e ".escape(dirname,s:netrw_cd_escape)
+" call Decho("dirname<".dirname."> netrw_cd_escape<".s:netrw_cd_escape.">")
+" call Decho("about to edit<".escape(dirname,s:netrw_cd_escape).">")
+ exe "e! ".escape(dirname,s:netrw_cd_escape)
endif
elseif newdir == './'
" refresh the directory list
" call Decho("refresh directory listing")
- setlocal ma
- %d
elseif newdir == '../'
" go up one directory
let dirname= substitute(dirname,'^\(.*/\)\([^/]\+[\/]$\)','\1','e')
" call Decho("go up one dir: dirname<".dirname.">")
+ setlocal ma
+ %d
else
" go down one directory
let dirname= dirname.newdir
" call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">")
+ setlocal ma
+ %d
endif
" call Dret("LocalBrowseChgDir <".dirname.">")
endif
norm! 0
- let rmfile= a:path.curword
+ let rmfile= a:path."/".curword
" call Decho("rmfile<".rmfile.">")
if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
" call Decho("3rd attempt to remove directory<".rmfile.">")
call system("rm ".rmfile)
if v:shell_error != 0 && !exists("g:netrw_quiet")
- echoerr "unable to remove directory<".rmfile."> -- is it empty?"
+ echoerr "***netrw*** unable to remove directory<".rmfile."> -- is it empty?"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
elseif !exists("g:netrw_quiet")
- echoerr "unable to remove directory<".rmfile."> -- is it empty?"
+ echoerr "***netrw*** unable to remove directory<".rmfile."> -- is it empty?"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
endif
let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e'))
call inputrestore()
- let ret= system(g:netrw_local_rename.' "'.oldname.'" "'.newname.'"')
-" call Decho("executing system(".g:netrw_local_rename." ".oldname." ".newname)
+ let ret= rename(oldname,newname)
+" call Decho("renaming <".oldname."> to <".newname.">")
let ctr= ctr + 1
endwhile
if !isdirectory(a:path)
exe "pedit ".a:path
elseif !exists("g:netrw_quiet")
- echoerr "sorry, cannot preview a directory such as <".a:path.">"
+ echoerr "***netrw*** sorry, cannot preview a directory such as <".a:path.">"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
elseif !exists("g:netrw_quiet")
- echoerr "sorry, to preview your vim needs the quickfix feature compiled in"
+ echoerr "***netrw*** sorry, to preview your vim needs the quickfix feature compiled in"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
" call Dret("LocalPreview")
endfun
+" ---------------------------------------------------------------------
+" Explore: launch the local browser in the directory of the current file {{{2
+" dosplit==0: the window will be split iff the current file has
+" been modified
+" dosplit==1: the window will be split before running the local
+" browser
+fun! s:Explore(dosplit,style,...)
+" call Dfunc("Explore(dosplit=".a:dosplit." style=".a:style.")")
+
+ " if dosplit or file has been modified
+ if a:dosplit || &modified
+ if a:style == 0 " Explore, Sexplore
+ exe g:netrw_winsize."wincmd s"
+ elseif a:style == 1 "Explore!, Sexplore!
+ exe g:netrw_winsize."wincmd v"
+ elseif a:style == 2 " Hexplore
+ exe "bel ".g:netrw_winsize."wincmd s"
+ elseif a:style == 3 " Hexplore!
+ exe "abo ".g:netrw_winsize."wincmd s"
+ elseif a:style == 4 " Vexplore
+ exe "lefta ".g:netrw_winsize."wincmd v"
+ elseif a:style == 5 " Vexplore!
+ exe "rightb ".g:netrw_winsize."wincmd v"
+ endif
+ endif
+ norm! 0
+
+ if a:1 == ""
+ let newdir= substitute(expand("%:p"),'^\(.*\)[/\\][^/\\]*$','\1','e')
+ else
+ let newdir= a:1
+ endif
+" call Decho("newdir<".newdir.">")
+ call s:LocalBrowse(newdir)
+
+" call Dret("Explore")
+endfun
+
" ---------------------------------------------------------------------
" NetGetcwd: get the current directory. {{{2
" Change backslashes to forward slashes, if any.
let mipf = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$'
let mf = '^\(\S\+\)\s\+\(\S\+\)$'
let ftpurm = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
- let rcpurm = '^rcp://\(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
+ let rcpurm = '^rcp://\%(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
let rcphf = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$'
let scpurm = '^scp://\([^/]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
let httpurm = '^http://\([^/]\{-}\)\(/.*\)\=$'
" rcp://user@hostname/...path-to-file
if match(a:choice,rcpurm) == 0
" call Decho("rcp://...")
- let b:netrw_method = 1
- let userid = substitute(a:choice,rcpurm,'\2',"")
- let g:netrw_machine= substitute(a:choice,rcpurm,'\3',"")
- let b:netrw_fname = substitute(a:choice,rcpurm,'\4',"")
+ let b:netrw_method = 1
+ let userid = substitute(a:choice,rcpurm,'\1',"")
+ let g:netrw_machine = substitute(a:choice,rcpurm,'\2',"")
+ let b:netrw_fname = substitute(a:choice,rcpurm,'\3',"")
if userid != ""
let g:netrw_uid= userid
endif
elseif match(a:choice,scpurm) == 0
" call Decho("scp://...")
let b:netrw_method = 4
- let g:netrw_machine= substitute(a:choice,scpurm,'\1',"")
- let g:netrw_port = substitute(a:choice,scpurm,'\2',"")
- let b:netrw_fname = substitute(a:choice,scpurm,'\3',"")
+ let g:netrw_machine = substitute(a:choice,scpurm,'\1',"")
+ let g:netrw_port = substitute(a:choice,scpurm,'\2',"")
+ let b:netrw_fname = substitute(a:choice,scpurm,'\3',"")
" http://user@hostname/...path-to-file
elseif match(a:choice,httpurm) == 0
else
if !exists("g:netrw_quiet")
- echoerr "***error*** cannot determine method"
+ echoerr "***netrw*** cannot determine method"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
let b:netrw_method = -1
" ---------------------------------------------------------------------
" NetSort: Piet Delport's BISort2() function, modified to take a range {{{1
-fun! <SID>NetSort() range
-" call Dfunc("NetSort()")
-
+if v:version < 700
+ fun! <SID>NetSort() range
+" " call Dfunc("NetSort()")
+
let i = a:firstline + 1
while i <= a:lastline
" find insertion point via binary search
let lo = a:firstline
let hi = i
while lo < hi
- let mid = (lo + hi) / 2
- let mid_val = getline(mid)
- if g:netrw_sort_direction =~ '^n'
- " normal sorting order
- if i_val < mid_val
- let hi = mid
- else
- let lo = mid + 1
- if i_val == mid_val | break | endif
- endif
+ let mid = (lo + hi) / 2
+ let mid_val = getline(mid)
+ if g:netrw_sort_direction =~ '^n'
+ " normal sorting order
+ if i_val < mid_val
+ let hi = mid
else
- " reverse sorting order
- if i_val > mid_val
- let hi = mid
- else
- let lo = mid + 1
- if i_val == mid_val | break | endif
- endif
+ let lo = mid + 1
+ if i_val == mid_val | break | endif
endif
+ else
+ " reverse sorting order
+ if i_val > mid_val
+ let hi = mid
+ else
+ let lo = mid + 1
+ if i_val == mid_val | break | endif
+ endif
+ endif
endwhile
" do insert
if lo < i
- exe 'keepjumps '.i.'d_'
- keepjumps call append(lo - 1, i_val)
+ exe 'keepjumps '.i.'d_'
+ keepjumps call append(lo - 1, i_val)
endif
let i = i + 1
endwhile
-
-" call Dret("NetSort")
-endfun
+
+" " call Dret("NetSort")
+ endfun
+endif
" ---------------------------------------------------------------------
" SetSort: sets up the sort based on the g:netrw_sort_sequence {{{1
" call Dret("SetSort")
endfun
+let &cpo= s:keepcpo
+unlet s:keepcpo
" ------------------------------------------------------------------------
-" Restore {{{1
-let &cpo= s:save_cpo
-unlet s:save_cpo
+" Modelines: {{{1
" vim:ts=8 fdm=marker