1482aaeb0SBram Moolenaar" netrwPlugin.vim: Handles file transfer and remote directory listing across a network 2dd2a3cdaSBram Moolenaar" PLUGIN SECTION 35c73622aSBram Moolenaar" Date: Aug 10, 2008 4dd2a3cdaSBram Moolenaar" Maintainer: Charles E Campbell, Jr <[email protected]> 5482aaeb0SBram Moolenaar" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim 6e37d50a5SBram Moolenaar" Copyright: Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1 7482aaeb0SBram Moolenaar" Permission is hereby granted to use and distribute this code, 8482aaeb0SBram Moolenaar" with or without modifications, provided that this copyright 9482aaeb0SBram Moolenaar" notice is copied with it. Like anything else that's free, 10482aaeb0SBram Moolenaar" netrw.vim, netrwPlugin.vim, and netrwSettings.vim are provided 11482aaeb0SBram Moolenaar" *as is* and comes with no warranty of any kind, either 12482aaeb0SBram Moolenaar" expressed or implied. By using this plugin, you agree that 13482aaeb0SBram Moolenaar" in no event will the copyright holder be liable for any damages 14482aaeb0SBram Moolenaar" resulting from the use of this software. 15482aaeb0SBram Moolenaar" 16482aaeb0SBram Moolenaar" But be doers of the Word, and not only hearers, deluding your own selves {{{1 17482aaeb0SBram Moolenaar" (James 1:22 RSV) 18482aaeb0SBram Moolenaar" =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 19482aaeb0SBram Moolenaar" Load Once: {{{1 20dd2a3cdaSBram Moolenaarif &cp || exists("g:loaded_netrwPlugin") 21482aaeb0SBram Moolenaar finish 22482aaeb0SBram Moolenaarendif 23*00a927d6SBram Moolenaarlet g:loaded_netrwPlugin = "v138" 245c73622aSBram Moolenaarif v:version < 702 255c73622aSBram Moolenaar echohl WarningMsg | echo "***netrw*** you need vim version 7.2 for this version of netrw" | echohl None 268349fd7cSBram Moolenaar finish 278349fd7cSBram Moolenaarendif 28482aaeb0SBram Moolenaarlet s:keepcpo = &cpo 29482aaeb0SBram Moolenaarset cpo&vim 30482aaeb0SBram Moolenaar 31482aaeb0SBram Moolenaar" --------------------------------------------------------------------- 32482aaeb0SBram Moolenaar" Public Interface: {{{1 33482aaeb0SBram Moolenaar 34482aaeb0SBram Moolenaar" Local Browsing: {{{2 35482aaeb0SBram Moolenaaraugroup FileExplorer 36482aaeb0SBram Moolenaar au! 37b8a7b560SBram Moolenaar au BufEnter * silent! call s:LocalBrowse(expand("<amatch>")) 38*00a927d6SBram Moolenaar au VimEnter * silent! call s:VimEnter(expand("<amatch>")) 39dd2a3cdaSBram Moolenaar if has("win32") || has("win95") || has("win64") || has("win16") 40dd2a3cdaSBram Moolenaar au BufEnter .* silent! call s:LocalBrowse(expand("<amatch>")) 41dd2a3cdaSBram Moolenaar endif 42482aaeb0SBram Moolenaaraugroup END 43482aaeb0SBram Moolenaar 44482aaeb0SBram Moolenaar" Network Browsing Reading Writing: {{{2 45482aaeb0SBram Moolenaaraugroup Network 46482aaeb0SBram Moolenaar au! 47482aaeb0SBram Moolenaar if has("win32") || has("win95") || has("win64") || has("win16") 48e37d50a5SBram Moolenaar au BufReadCmd file://* exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',""))|exe "bwipe ".fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>"))) 49482aaeb0SBram Moolenaar else 50e37d50a5SBram Moolenaar au BufReadCmd file://* exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',""))|exe "bwipe ".fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>"))) 51e37d50a5SBram Moolenaar au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://localhost/\(.*\)','\1',""))|exe "bwipe ".fnameescape(substitute(expand("<amatch>"),'file://\(\k\+@\)\=','',''))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>"))) 52482aaeb0SBram Moolenaar endif 535c73622aSBram Moolenaar au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>")) 545c73622aSBram Moolenaar au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(1,expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>")) 55e37d50a5SBram Moolenaar au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau BufWritePost ".fnameescape(expand("<amatch>")) 56e37d50a5SBram Moolenaar au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau FileWritePost ".fnameescape(expand("<amatch>")) 57dd2a3cdaSBram Moolenaar try 58e37d50a5SBram Moolenaar au SourceCmd ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe 'Nsource '.fnameescape(expand("<amatch>")) 59dd2a3cdaSBram Moolenaar catch /^Vim\%((\a\+)\)\=:E216/ 60e37d50a5SBram Moolenaar au SourcePre ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe 'Nsource '.fnameescape(expand("<amatch>")) 61dd2a3cdaSBram Moolenaar endtry 62482aaeb0SBram Moolenaaraugroup END 63482aaeb0SBram Moolenaar 64482aaeb0SBram Moolenaar" Commands: :Nread, :Nwrite, :NetUserPass {{{2 65f233048aSBram Moolenaarcom! -count=1 -nargs=* Nread call netrw#NetrwSavePosn()<bar>call netrw#NetRead(<count>,<f-args>)<bar>call netrw#NetrwRestorePosn() 66f233048aSBram Moolenaarcom! -range=% -nargs=* Nwrite call netrw#NetrwSavePosn()<bar><line1>,<line2>call netrw#NetWrite(<f-args>)<bar>call netrw#NetrwRestorePosn() 67482aaeb0SBram Moolenaarcom! -nargs=* NetUserPass call NetUserPass(<f-args>) 68f233048aSBram Moolenaarcom! -nargs=* Nsource call netrw#NetrwSavePosn()<bar>call netrw#NetSource(<f-args>)<bar>call netrw#NetrwRestorePosn() 69482aaeb0SBram Moolenaar 70482aaeb0SBram Moolenaar" Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{2 71dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -bang -count=0 -complete=dir Explore call netrw#Explore(<count>,0,0+<bang>0,<q-args>) 72dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -bang -count=0 -complete=dir Sexplore call netrw#Explore(<count>,1,0+<bang>0,<q-args>) 73dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -bang -count=0 -complete=dir Hexplore call netrw#Explore(<count>,1,2+<bang>0,<q-args>) 74dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -bang -count=0 -complete=dir Vexplore call netrw#Explore(<count>,1,4+<bang>0,<q-args>) 75dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -count=0 -complete=dir Texplore call netrw#Explore(<count>,0,6 ,<q-args>) 76dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -bang Nexplore call netrw#Explore(-1,0,0,<q-args>) 77dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -bang Pexplore call netrw#Explore(-2,0,0,<q-args>) 78482aaeb0SBram Moolenaar 79482aaeb0SBram Moolenaar" Commands: NetrwSettings {{{2 80f233048aSBram Moolenaarcom! -nargs=0 NetrwSettings call netrwSettings#NetrwSettings() 81f233048aSBram Moolenaarcom! -bang NetrwClean call netrw#NetrwClean(<bang>0) 82482aaeb0SBram Moolenaar 83b8a7b560SBram Moolenaar" Maps: 84dd2a3cdaSBram Moolenaarif !exists("g:netrw_nogx") && maparg('g','n') == "" 85b8a7b560SBram Moolenaar if !hasmapto('<Plug>NetrwBrowseX') 86b8a7b560SBram Moolenaar nmap <unique> gx <Plug>NetrwBrowseX 87b8a7b560SBram Moolenaar endif 88f233048aSBram Moolenaar nno <silent> <Plug>NetrwBrowseX :call netrw#NetrwBrowseX(expand("<cWORD>"),0)<cr> 89dd2a3cdaSBram Moolenaarendif 90b8a7b560SBram Moolenaar 91482aaeb0SBram Moolenaar" --------------------------------------------------------------------- 92482aaeb0SBram Moolenaar" LocalBrowse: {{{2 93482aaeb0SBram Moolenaarfun! s:LocalBrowse(dirname) 94482aaeb0SBram Moolenaar " unfortunate interaction -- debugging calls can't be used here; 95482aaeb0SBram Moolenaar " the BufEnter event causes triggering when attempts to write to 96482aaeb0SBram Moolenaar " the DBG buffer are made. 97dd2a3cdaSBram Moolenaar" echomsg "dirname<".a:dirname.">" 98dd2a3cdaSBram Moolenaar if has("amiga") 99dd2a3cdaSBram Moolenaar " The check against '' is made for the Amiga, where the empty 100dd2a3cdaSBram Moolenaar " string is the current directory and not checking would break 101dd2a3cdaSBram Moolenaar " things such as the help command. 102dd2a3cdaSBram Moolenaar if a:dirname != '' && isdirectory(a:dirname) 103dd2a3cdaSBram Moolenaar silent! call netrw#LocalBrowseCheck(a:dirname) 104dd2a3cdaSBram Moolenaar endif 105dd2a3cdaSBram Moolenaar elseif isdirectory(a:dirname) 106dd2a3cdaSBram Moolenaar" echomsg "dirname<".dirname."> isdir" 107dd2a3cdaSBram Moolenaar silent! call netrw#LocalBrowseCheck(a:dirname) 108482aaeb0SBram Moolenaar endif 109482aaeb0SBram Moolenaar " not a directory, ignore it 110482aaeb0SBram Moolenaarendfun 111482aaeb0SBram Moolenaar 112482aaeb0SBram Moolenaar" --------------------------------------------------------------------- 113*00a927d6SBram Moolenaar" s:VimEnter: {{{2 114*00a927d6SBram Moolenaarfun! s:VimEnter(dirname) 115*00a927d6SBram Moolenaar windo if a:dirname != expand("%")|call s:LocalBrowse(expand("%:p"))|endif 116*00a927d6SBram Moolenaar 1wincmd w 117*00a927d6SBram Moolenaarendfun 118*00a927d6SBram Moolenaar 119*00a927d6SBram Moolenaar" --------------------------------------------------------------------- 120482aaeb0SBram Moolenaar" NetrwStatusLine: {{{1 121482aaeb0SBram Moolenaarfun! NetrwStatusLine() 122af48b092SBram Moolenaar" let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr("%")." Xline#".w:netrw_explore_line." line#".line(".") 123af48b092SBram Moolenaar if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr("%") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list") 124482aaeb0SBram Moolenaar let &stl= s:netrw_explore_stl 125482aaeb0SBram Moolenaar if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif 126482aaeb0SBram Moolenaar if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif 127482aaeb0SBram Moolenaar return "" 128482aaeb0SBram Moolenaar else 129482aaeb0SBram Moolenaar return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen 130482aaeb0SBram Moolenaar endif 131482aaeb0SBram Moolenaarendfun 132482aaeb0SBram Moolenaar 133482aaeb0SBram Moolenaar" ------------------------------------------------------------------------ 134482aaeb0SBram Moolenaar" NetUserPass: set username and password for subsequent ftp transfer {{{1 135482aaeb0SBram Moolenaar" Usage: :call NetUserPass() -- will prompt for userid and password 136482aaeb0SBram Moolenaar" :call NetUserPass("uid") -- will prompt for password 137482aaeb0SBram Moolenaar" :call NetUserPass("uid","password") -- sets global userid and password 138482aaeb0SBram Moolenaarfun! NetUserPass(...) 139482aaeb0SBram Moolenaar 140482aaeb0SBram Moolenaar " get/set userid 141482aaeb0SBram Moolenaar if a:0 == 0 142482aaeb0SBram Moolenaar" call Dfunc("NetUserPass(a:0<".a:0.">)") 143482aaeb0SBram Moolenaar if !exists("g:netrw_uid") || g:netrw_uid == "" 144482aaeb0SBram Moolenaar " via prompt 145482aaeb0SBram Moolenaar let g:netrw_uid= input('Enter username: ') 146482aaeb0SBram Moolenaar endif 147482aaeb0SBram Moolenaar else " from command line 148482aaeb0SBram Moolenaar" call Dfunc("NetUserPass(a:1<".a:1.">) {") 149482aaeb0SBram Moolenaar let g:netrw_uid= a:1 150482aaeb0SBram Moolenaar endif 151482aaeb0SBram Moolenaar 152482aaeb0SBram Moolenaar " get password 153482aaeb0SBram Moolenaar if a:0 <= 1 " via prompt 154482aaeb0SBram Moolenaar" call Decho("a:0=".a:0." case <=1:") 155482aaeb0SBram Moolenaar let g:netrw_passwd= inputsecret("Enter Password: ") 156482aaeb0SBram Moolenaar else " from command line 157482aaeb0SBram Moolenaar" call Decho("a:0=".a:0." case >1: a:2<".a:2.">") 158482aaeb0SBram Moolenaar let g:netrw_passwd=a:2 159482aaeb0SBram Moolenaar endif 160482aaeb0SBram Moolenaar" call Dret("NetUserPass") 161482aaeb0SBram Moolenaarendfun 162482aaeb0SBram Moolenaar 163482aaeb0SBram Moolenaar" ------------------------------------------------------------------------ 164482aaeb0SBram Moolenaar" Modelines And Restoration: {{{1 165482aaeb0SBram Moolenaarlet &cpo= s:keepcpo 166482aaeb0SBram Moolenaarunlet s:keepcpo 167482aaeb0SBram Moolenaar" vim:ts=8 fdm=marker 168