1482aaeb0SBram Moolenaar" netrwPlugin.vim: Handles file transfer and remote directory listing across a network 2dd2a3cdaSBram Moolenaar" PLUGIN SECTION 3*ff034194SBram Moolenaar" Date: Dec 06, 2012 4*ff034194SBram Moolenaar" Maintainer: Charles E Campbell <[email protected]> 5482aaeb0SBram Moolenaar" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim 6*ff034194SBram Moolenaar" Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{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*ff034194SBram Moolenaarlet g:loaded_netrwPlugin = "v148" 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! 37adc2182cSBram Moolenaar" au BufReadCmd *[/\\] sil! call s:LocalBrowse(expand("<amatch>")) 38adc2182cSBram Moolenaar" au BufEnter *[^/\\] sil! call s:LocalBrowse(expand("<amatch>")) 39adc2182cSBram Moolenaar" au VimEnter *[^/\\] sil! call s:VimEnter(expand("<amatch>")) 40adc2182cSBram Moolenaar au BufEnter * sil! call s:LocalBrowse(expand("<amatch>")) 41adc2182cSBram Moolenaar au VimEnter * sil! call s:VimEnter(expand("<amatch>")) 42dd2a3cdaSBram Moolenaar if has("win32") || has("win95") || has("win64") || has("win16") 43adc2182cSBram Moolenaar au BufEnter .* sil! call s:LocalBrowse(expand("<amatch>")) 44dd2a3cdaSBram Moolenaar endif 45482aaeb0SBram Moolenaaraugroup END 46482aaeb0SBram Moolenaar 47482aaeb0SBram Moolenaar" Network Browsing Reading Writing: {{{2 48482aaeb0SBram Moolenaaraugroup Network 49482aaeb0SBram Moolenaar au! 50adc2182cSBram Moolenaar au BufReadCmd file://* call netrw#FileUrlRead(expand("<amatch>")) 51*ff034194SBram Moolenaar au BufReadCmd ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "sil doau BufReadPost ".fnameescape(expand("<amatch>")) 52*ff034194SBram Moolenaar au FileReadCmd ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau FileReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(1,expand("<amatch>"))|exe "sil doau FileReadPost ".fnameescape(expand("<amatch>")) 53*ff034194SBram Moolenaar au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "sil doau BufWritePost ".fnameescape(expand("<amatch>")) 54*ff034194SBram Moolenaar au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "sil doau FileWritePost ".fnameescape(expand("<amatch>")) 55dd2a3cdaSBram Moolenaar try 561514667aSBram Moolenaar au SourceCmd ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe 'Nsource '.fnameescape(expand("<amatch>")) 57dd2a3cdaSBram Moolenaar catch /^Vim\%((\a\+)\)\=:E216/ 581514667aSBram Moolenaar au SourcePre ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe 'Nsource '.fnameescape(expand("<amatch>")) 59dd2a3cdaSBram Moolenaar endtry 60482aaeb0SBram Moolenaaraugroup END 61482aaeb0SBram Moolenaar 62482aaeb0SBram Moolenaar" Commands: :Nread, :Nwrite, :NetUserPass {{{2 63f233048aSBram Moolenaarcom! -count=1 -nargs=* Nread call netrw#NetrwSavePosn()<bar>call netrw#NetRead(<count>,<f-args>)<bar>call netrw#NetrwRestorePosn() 64f233048aSBram Moolenaarcom! -range=% -nargs=* Nwrite call netrw#NetrwSavePosn()<bar><line1>,<line2>call netrw#NetWrite(<f-args>)<bar>call netrw#NetrwRestorePosn() 65482aaeb0SBram Moolenaarcom! -nargs=* NetUserPass call NetUserPass(<f-args>) 66f233048aSBram Moolenaarcom! -nargs=* Nsource call netrw#NetrwSavePosn()<bar>call netrw#NetSource(<f-args>)<bar>call netrw#NetrwRestorePosn() 67482aaeb0SBram Moolenaar 68482aaeb0SBram Moolenaar" Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{2 69dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -bang -count=0 -complete=dir Explore call netrw#Explore(<count>,0,0+<bang>0,<q-args>) 70dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -bang -count=0 -complete=dir Sexplore call netrw#Explore(<count>,1,0+<bang>0,<q-args>) 71dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -bang -count=0 -complete=dir Hexplore call netrw#Explore(<count>,1,2+<bang>0,<q-args>) 72dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -bang -count=0 -complete=dir Vexplore call netrw#Explore(<count>,1,4+<bang>0,<q-args>) 73dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -count=0 -complete=dir Texplore call netrw#Explore(<count>,0,6 ,<q-args>) 74dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -bang Nexplore call netrw#Explore(-1,0,0,<q-args>) 75dd2a3cdaSBram Moolenaarcom! -nargs=* -bar -bang Pexplore call netrw#Explore(-2,0,0,<q-args>) 76482aaeb0SBram Moolenaar 77482aaeb0SBram Moolenaar" Commands: NetrwSettings {{{2 78f233048aSBram Moolenaarcom! -nargs=0 NetrwSettings call netrwSettings#NetrwSettings() 79f233048aSBram Moolenaarcom! -bang NetrwClean call netrw#NetrwClean(<bang>0) 80482aaeb0SBram Moolenaar 81b8a7b560SBram Moolenaar" Maps: 825ac3b1aaSBram Moolenaarif !exists("g:netrw_nogx") && maparg('gx','n') == "" 83b8a7b560SBram Moolenaar if !hasmapto('<Plug>NetrwBrowseX') 84b8a7b560SBram Moolenaar nmap <unique> gx <Plug>NetrwBrowseX 85b8a7b560SBram Moolenaar endif 86f233048aSBram Moolenaar nno <silent> <Plug>NetrwBrowseX :call netrw#NetrwBrowseX(expand("<cWORD>"),0)<cr> 87dd2a3cdaSBram Moolenaarendif 88b8a7b560SBram Moolenaar 89482aaeb0SBram Moolenaar" --------------------------------------------------------------------- 90482aaeb0SBram Moolenaar" LocalBrowse: {{{2 91482aaeb0SBram Moolenaarfun! s:LocalBrowse(dirname) 92482aaeb0SBram Moolenaar " unfortunate interaction -- debugging calls can't be used here; 93482aaeb0SBram Moolenaar " the BufEnter event causes triggering when attempts to write to 94482aaeb0SBram Moolenaar " the DBG buffer are made. 95dd2a3cdaSBram Moolenaar" echomsg "dirname<".a:dirname.">" 96dd2a3cdaSBram Moolenaar if has("amiga") 97dd2a3cdaSBram Moolenaar " The check against '' is made for the Amiga, where the empty 98dd2a3cdaSBram Moolenaar " string is the current directory and not checking would break 99dd2a3cdaSBram Moolenaar " things such as the help command. 100dd2a3cdaSBram Moolenaar if a:dirname != '' && isdirectory(a:dirname) 101adc2182cSBram Moolenaar sil! call netrw#LocalBrowseCheck(a:dirname) 102dd2a3cdaSBram Moolenaar endif 103dd2a3cdaSBram Moolenaar elseif isdirectory(a:dirname) 104dd2a3cdaSBram Moolenaar" echomsg "dirname<".dirname."> isdir" 105adc2182cSBram Moolenaar sil! call netrw#LocalBrowseCheck(a:dirname) 106482aaeb0SBram Moolenaar endif 107482aaeb0SBram Moolenaar " not a directory, ignore it 108482aaeb0SBram Moolenaarendfun 109482aaeb0SBram Moolenaar 110482aaeb0SBram Moolenaar" --------------------------------------------------------------------- 11100a927d6SBram Moolenaar" s:VimEnter: {{{2 11200a927d6SBram Moolenaarfun! s:VimEnter(dirname) 113477db060SBram Moolenaar let curwin= winnr() 11400a927d6SBram Moolenaar windo if a:dirname != expand("%")|call s:LocalBrowse(expand("%:p"))|endif 115477db060SBram Moolenaar exe curwin."wincmd w" 11600a927d6SBram Moolenaarendfun 11700a927d6SBram Moolenaar 11800a927d6SBram Moolenaar" --------------------------------------------------------------------- 119482aaeb0SBram Moolenaar" NetrwStatusLine: {{{1 120482aaeb0SBram Moolenaarfun! NetrwStatusLine() 121af48b092SBram Moolenaar" let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr("%")." Xline#".w:netrw_explore_line." line#".line(".") 122af48b092SBram 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") 123482aaeb0SBram Moolenaar let &stl= s:netrw_explore_stl 124482aaeb0SBram Moolenaar if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif 125482aaeb0SBram Moolenaar if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif 126482aaeb0SBram Moolenaar return "" 127482aaeb0SBram Moolenaar else 128482aaeb0SBram Moolenaar return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen 129482aaeb0SBram Moolenaar endif 130482aaeb0SBram Moolenaarendfun 131482aaeb0SBram Moolenaar 132482aaeb0SBram Moolenaar" ------------------------------------------------------------------------ 133482aaeb0SBram Moolenaar" NetUserPass: set username and password for subsequent ftp transfer {{{1 134482aaeb0SBram Moolenaar" Usage: :call NetUserPass() -- will prompt for userid and password 135482aaeb0SBram Moolenaar" :call NetUserPass("uid") -- will prompt for password 136482aaeb0SBram Moolenaar" :call NetUserPass("uid","password") -- sets global userid and password 137482aaeb0SBram Moolenaarfun! NetUserPass(...) 138482aaeb0SBram Moolenaar 139482aaeb0SBram Moolenaar " get/set userid 140482aaeb0SBram Moolenaar if a:0 == 0 141482aaeb0SBram Moolenaar" call Dfunc("NetUserPass(a:0<".a:0.">)") 142482aaeb0SBram Moolenaar if !exists("g:netrw_uid") || g:netrw_uid == "" 143482aaeb0SBram Moolenaar " via prompt 144482aaeb0SBram Moolenaar let g:netrw_uid= input('Enter username: ') 145482aaeb0SBram Moolenaar endif 146482aaeb0SBram Moolenaar else " from command line 147482aaeb0SBram Moolenaar" call Dfunc("NetUserPass(a:1<".a:1.">) {") 148482aaeb0SBram Moolenaar let g:netrw_uid= a:1 149482aaeb0SBram Moolenaar endif 150482aaeb0SBram Moolenaar 151482aaeb0SBram Moolenaar " get password 152482aaeb0SBram Moolenaar if a:0 <= 1 " via prompt 153482aaeb0SBram Moolenaar" call Decho("a:0=".a:0." case <=1:") 154482aaeb0SBram Moolenaar let g:netrw_passwd= inputsecret("Enter Password: ") 155482aaeb0SBram Moolenaar else " from command line 156482aaeb0SBram Moolenaar" call Decho("a:0=".a:0." case >1: a:2<".a:2.">") 157482aaeb0SBram Moolenaar let g:netrw_passwd=a:2 158482aaeb0SBram Moolenaar endif 159482aaeb0SBram Moolenaar" call Dret("NetUserPass") 160482aaeb0SBram Moolenaarendfun 161482aaeb0SBram Moolenaar 162482aaeb0SBram Moolenaar" ------------------------------------------------------------------------ 163482aaeb0SBram Moolenaar" Modelines And Restoration: {{{1 164482aaeb0SBram Moolenaarlet &cpo= s:keepcpo 165482aaeb0SBram Moolenaarunlet s:keepcpo 166482aaeb0SBram Moolenaar" vim:ts=8 fdm=marker 167