123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419 |
- *pi_netrw.txt* For Vim version 8.2. Last change: 2020 Aug 15
- ------------------------------------------------
- NETRW REFERENCE MANUAL by Charles E. Campbell
- ------------------------------------------------
- Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
- (remove NOSPAM from Campbell's email first)
- Copyright: Copyright (C) 2017 Charles E Campbell *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!
- *netrw*
- *dav* *ftp* *netrw-file* *rcp* *scp*
- *davs* *http* *netrw.vim* *rsync* *sftp*
- *fetch* *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|
- Banner Display......................................|netrw-I|
- Bookmarking A Directory.............................|netrw-mb|
- Browsing............................................|netrw-cr|
- Squeezing the Current Tree-Listing Directory........|netrw-s-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 File Permission..............................|netrw-gp|
- 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 Special Handler.........|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-cd|
- Marking Files.......................................|netrw-mf|
- Unmarking Files.....................................|netrw-mF|
- Marking Files By Location List......................|netrw-qL|
- Marking Files By QuickFix List......................|netrw-qF|
- Marking Files By Regular Expression.................|netrw-mr|
- Marked Files: Arbitrary Shell Command...............|netrw-mx|
- Marked Files: Arbitrary Shell Command, En Bloc......|netrw-mX|
- Marked Files: Arbitrary Vim Command.................|netrw-mv|
- Marked Files: Argument List.........................|netrw-ma| |netrw-mA|
- Marked Files: Buffer List...........................|netrw-cb| |netrw-cB|
- 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: Setting the Target Directory..........|netrw-mt|
- Marked Files: Tagging...............................|netrw-mT|
- Marked Files: Target Directory Using Bookmarks......|netrw-Tb|
- Marked Files: Target Directory Using History........|netrw-Th|
- 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|
- Reversing Sorting Order.............................|netrw-r|
- Renaming Files Or Directories.......................|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|
- ==============================================================================
- 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\MyUserName\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: c:\Users\MyUserName\MachineName.
- 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
- http: *g:netrw_http_put_cmd* = "curl -T"
- rcp: *g:netrw_rcp_cmd* = "rcp"
- rsync: *g:netrw_rsync_cmd* = "rsync" (see |g:netrw_rsync_sep|)
- scp: *g:netrw_scp_cmd* = "scp -q"
- sftp: *g:netrw_sftp_cmd* = "sftp"
- file: *g:netrw_file_cmd* = "elinks" or "links"
- *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 : "-dump >"
- curl : "-L -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.
- g:netrw_http_put_cmd: this option specifies both the executable and
- any needed options. This command does a PUT operation to the url.
- 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
- (Related topics: |ftp| |netrw-userpass| |netrw-start|)
- 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 subsequent file edits
- will take place. (also see |netrw-C|)
- (default) -1
- *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_UserMaps* specifies a function or |List| of functions which can
- be used to set up user-specified maps and functionality.
- See |netrw-usermaps|
- *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.
- The |g:netrw_alto| variable may be used to provide
- additional splitting control:
- g:netrw_preview g:netrw_alto result
- 0 0 |:aboveleft|
- 0 1 |:belowright|
- 1 0 |:topleft|
- 1 1 |:botright|
- To control sizing, see |g:netrw_winsize|
- *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* =2: messages from netrw will use a popup window
- Move the mouse and pause to remove the popup window.
- (default value if popup windows are available)
- =1 : messages from netrw will use a separate one
- line window. This window provides reliable
- delivery of messages.
- (default value if popup windows are not available)
- =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 vim 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
- <
- By also including the following lines in your .vimrc, one may have netrw
- immediately activate when using [g]vim without any filenames, showing the
- current directory: >
- " Augroup VimStartup:
- augroup VimStartup
- au!
- au VimEnter * if expand("%") == "" | e . | endif
- augroup END
- <
- ==============================================================================
- 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.
- For password-free use of scp:, see |netrw-ssh-hack|.
- ==============================================================================
- 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 a 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 var ="cadaver" if cadaver is executable
- g:netrw_dav_cmd var ="curl -o" elseif curl is executable
- g:netrw_fetch_cmd var ="fetch -o" if fetch is available
- g:netrw_ftp_cmd var ="ftp"
- g:netrw_http_cmd var ="fetch -o" if fetch is available
- g:netrw_http_cmd var ="wget -O" else if wget is available
- g:netrw_http_put_cmd var ="curl -T"
- |g:netrw_list_cmd| var ="ssh USEPORT HOSTNAME ls -Fa"
- g:netrw_rcp_cmd var ="rcp"
- g:netrw_rsync_cmd var ="rsync"
- *g:netrw_rsync_sep* var ="/" used to separate the hostname
- from the file spec
- g:netrw_scp_cmd var ="scp -q"
- g:netrw_sftp_cmd var ="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
- >
- (Related topics: |ftp| |netrw-userpass| |netrw-start|)
- ==============================================================================
- 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|
- <c-h> Edit file hiding list |netrw-ctrl-h|
- <c-l> Causes Netrw to refresh the directory listing |netrw-ctrl-l|
- <c-r> Browse using a gvim server |netrw-ctrl-r|
- <c-tab> Shrink/expand a netrw/explore window |netrw-c-tab|
- - Makes Netrw go up one directory |netrw--|
- a Cycles between normal display, |netrw-a|
- hiding (suppress display of files matching g:netrw_list_hide)
- and showing (display only files which match g:netrw_list_hide)
- cd Make browsing directory the current directory |netrw-cd|
- 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|
- gd Force treatment as directory |netrw-gd|
- gf Force treatment as file |netrw-gf|
- gh Quick hide/unhide of dot-files |netrw-gh|
- gn Make top of tree the directory below the cursor |netrw-gn|
- gp Change local-only file permissions |netrw-gp|
- i Cycle between thin, long, wide, and tree listings |netrw-i|
- I Toggle the displaying of the banner |netrw-I|
- 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|
- mF Unmark files |netrw-mF|
- mg Apply vimgrep to marked files |netrw-mg|
- 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 using 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|
- mv Apply arbitrary vim command to marked files |netrw-mv|
- mx Apply arbitrary shell command to marked files |netrw-mx|
- mX Apply arbitrary shell command to marked files en bloc|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|
- qF Mark files using a quickfix list |netrw-qF|
- qL Mark files using a |location-list| |netrw-qL|
- r Reverse sorting order |netrw-r|
- R Rename the designated 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|
- X Execute filename under cursor via |system()| |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. Dragging
- the shifted leftmouse will mark multiple files.
- (see |netrw-mf|)
- (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|
- :Ntree....................................................|netrw-ntree|
- :Explore[!] [dir] Explore directory of current file......|netrw-explore|
- :Hexplore[!] [dir] Horizontal Split & Explore.............|netrw-explore|
- :Lexplore[!] [dir] Left Explorer Toggle...................|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|
- BANNER DISPLAY *netrw-I*
- One may toggle the displaying of the banner by pressing "I".
- Also See: |g:netrw_banner|
- BOOKMARKING A DIRECTORY *netrw-mb* *netrw-bookmark* *netrw-bookmarks* {{{2
- One may easily "bookmark" the currently browsed directory by using >
- mb
- <
- *.netrwbook*
- Bookmarks are retained in between sessions of vim in a file called .netrwbook
- as a |List|, which is typically stored in the first directory on the user's
- 'runtimepath'; entries are kept in sorted order.
- If there are marked files and/or directories, mb will add them to the bookmark
- list.
- *netrw-:NetrwMB*
- Additionally, one may use :NetrwMB to bookmark files or directories. >
- :NetrwMB[!] [files/directories]
- < No bang: enters files/directories into Netrw's bookmark system
- No argument and in netrw buffer:
- if there are marked files : bookmark marked files
- otherwise : bookmark file/directory under cursor
- No argument and not in netrw buffer: bookmarks current open file
- Has arguments : |glob()|s each arg and bookmarks them
- With bang: deletes files/directories from Netrw's bookmark system
- The :NetrwMB command is available outside of netrw buffers (once netrw has been
- invoked in the session).
- The file ".netrwbook" holds bookmarks when netrw (and vim) is not active. By
- default, its stored on the first directory on the user's |'runtimepath'|.
- Related Topics:
- |netrw-gb| how to return (go) to a bookmark
- |netrw-mB| how to delete bookmarks
- |netrw-qb| how to list bookmarks
- |g:netrw_home| controls where .netrwbook is kept
- BROWSING *netrw-enter* *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|).
- *netrw-s-cr*
- Squeezing the Current Tree-Listing Directory~
- When the tree listing style is enabled (see |netrw-i|) and one is using
- gvim, then the <s-cr> mapping may be used to squeeze (close) the
- directory currently containing the cursor.
- Otherwise, one may remap a key combination of one's own choice to get
- this effect: >
- nmap <buffer> <silent> <nowait> YOURKEYCOMBO <Plug>NetrwTreeSqueeze
- <
- Put this line in $HOME/ftplugin/netrw/netrw.vim; it needs to be generated
- for netrw buffers only.
- Related topics:
- |netrw-ctrl-r| |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_browse_reject|
- |g:netrw_ssh_cmd| |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 topics:
- |netrw-ctrl-r| |netrw-o| |netrw-p|
- |netrw-P| |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* {{{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.
- If you'd like to have the new listing in a background tab, use |gT|.
- Related topics:
- |netrw-ctrl-r| |netrw-o| |netrw-p|
- |netrw-P| |netrw-t| |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.
- Related topics:
- |netrw-ctrl-r| |netrw-o| |netrw-p|
- |netrw-P| |netrw-t| |netrw-v|
- Associated setting variables:
- |g:netrw_altv| control right/left splitting
- |g:netrw_winsize| control initial sizing
- BROWSING USING A GVIM SERVER *netrw-ctrl-r* {{{2
- One may keep a browsing gvim separate from the gvim being used to edit.
- Use the <c-r> map on a file (not a directory) in the netrw browser, and it
- will use a gvim server (see |g:netrw_servername|). Subsequent use of <cr>
- (see |netrw-cr|) will re-use that server for editing files.
- Related topics:
- |netrw-ctrl-r| |netrw-o| |netrw-p|
- |netrw-P| |netrw-t| |netrw-v|
- Associated setting variables:
- |g:netrw_servername| : sets name of server
- |g:netrw_browse_split| : controls how <cr> will open files
- 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.
- The wide listing format is the most compact.
- The tree listing format has a top directory followed by files and directories
- preceded by one or more "|"s, which indicate the directory depth. 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= 3
- 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.
- Note that |netrw-qb| shows both bookmarks and history; to go
- to a location stored in the history see |netrw-u| and |netrw-U|.
- 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 holds ten entries). With the "u"
- map, one can change to an earlier directory (predecessor). To do the
- opposite, see |netrw-U|.
- The "u" map also accepts counts to go back in the history several slots. For
- your convenience, qb (see |netrw-qb|) lists the history number which may be
- used in that count.
- *.netrwhist*
- See |g:netrw_dirhistmax| for how to control the quantity of history stack
- slots. The file ".netrwhist" holds history when netrw (and vim) is not
- active. By default, its stored on the first directory on the user's
- |'runtimepath'|.
- Related Topics:
- |netrw-U| changing to a successor directory
- |g:netrw_home| controls where .netrwhist is kept
- 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
- qb map to list both the bookmarks and history. (see |netrw-qb|)
- The "U" map also accepts counts to go forward in the history several slots.
- See |g:netrw_dirhistmax| for how to control the quantity of history stack
- slots.
- CHANGING TREE TOP *netrw-ntree* *:Ntree* *netrw-gn* {{{2
- One may specify a new tree top for tree listings using >
- :Ntree [dirname]
- Without a "dirname", the current line is used (and any leading depth
- information is elided).
- With a "dirname", the specified directory name is used.
- The "gn" map will take the word below the cursor and use that for
- changing the top of the tree listing.
- NETRW CLEAN *netrw-clean* *:NetrwClean* {{{2
- 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 attempt to remove netrw from all directories on
- your |'runtimepath'|. Of course, you have to have write/delete permissions
- correct to do this.
- 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 SPECIAL HANDLER *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's
- operating system). 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
- < (latter 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= "xdg-open"
- <
- If g:netrw_browsex_viewer == '-', then netrwFileHandlers#Invoke() will be
- used instead (see |netrw_filehandler|).
- If the viewer you wish to use does not support handling of a remote URL
- directory, set |g:netrw_browsex_support_remote| to 0.
- * 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.
- The gx mapping extends to all buffers; apply "gx" while atop a word and netrw
- will apply a special handler to it (like "x" works when in a netrw buffer).
- One may also use visual mode (see |visual-start|) to select the text that the
- special handler will use. Normally gx uses expand("<cfile>") to pick up the
- text under the cursor; one may change what |expand()| uses via the
- |g:netrw_gx| variable (options include "<cword>", "<cWORD>"). Note that
- expand("<cfile>") depends on the |'isfname'| setting. Alternatively, one may
- select the text to be used by gx by making a visual selection (see
- |visual-block|) and then pressing gx.
- Associated setting variables:
- |g:netrw_gx| control how gx picks up the text under the cursor
- |g:netrw_nogx| prevent gx map while editing
- |g:netrw_suppress_gx_mesg| controls gx's suppression of browser messages
- *netrw_filehandler*
- When |g:netrw_browsex_viewer| exists and is "-", then netrw will attempt to
- handle the special file with a vim function. 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: >
- NcampObell@SdrPchip.AorgM-NOSPAM
- with a request. (remove the embedded NOSPAM first)
- Associated setting variable: |g:netrw_browsex_viewer|
- *netrw-curdir*
- DELETING BOOKMARKS *netrw-mB* {{{2
- To delete a bookmark, use >
- {cnt}mB
- If there are marked files, then mB will remove them from the
- bookmark list.
- Alternatively, one may use :NetrwMB! (see |netrw-:NetrwMB|). >
- :NetrwMB! [files/directories]
- 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.
- A further approach is to delete files which match a pattern.
- * use :MF pattern (see |netrw-:MF|); then press "D".
- * use mr (see |netrw-mr|) which will prompt you for pattern.
- This will cause the matching files to be marked. Then,
- press "D".
- If your vim has 7.4 with patch#1107, then |g:netrw_localrmdir| no longer
- is used to remove directories; instead, vim's |delete()| is used with
- the "d" option. Please note that only empty directories may be deleted
- with the "D" mapping. Regular files are deleted with |delete()|, too.
- The |g:netrw_rm_cmd|, |g:netrw_rmf_cmd|, and |g:netrw_rmdir_cmd| variables are
- used to control the attempts to remove remote 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* *netrw-lexplore*
- DIRECTORY EXPLORATION COMMANDS {{{2
- :[N]Explore[!] [dir]... Explore directory of current file *:Explore*
- :[N]Hexplore[!] [dir]... Horizontal Split & Explore *:Hexplore*
- :[N]Lexplore[!] [dir]... Left Explorer Toggle *:Lexplore*
- :[N]Sexplore[!] [dir]... Split&Explore current file's directory *:Sexplore*
- :[N]Vexplore[!] [dir]... Vertical Split & Explore *:Vexplore*
- :Texplore [dir]... Tab & Explore *:Texplore*
- :Rexplore ... Return to/from Explorer *:Rexplore*
- Used with :Explore **/pattern : (also see |netrw-starstar|)
- :Nexplore............. go to next matching file *:Nexplore*
- :Pexplore............. go to previous matching file *:Pexplore*
- *netrw-:Explore*
- :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 and |'hidden'| is not set,
- otherwise the browsing window will take over that window. Normally
- the splitting is taken horizontally.
- Also see: |netrw-:Rexplore|
- :Explore! is like :Explore, but will use vertical splitting.
- *netrw-:Hexplore*
- :Hexplore [dir] does an :Explore with |:belowright| horizontal splitting.
- :Hexplore! [dir] does an :Explore with |:aboveleft| horizontal splitting.
- *netrw-:Lexplore*
- :[N]Lexplore [dir] toggles a full height Explorer window on the left hand side
- of the current tab. It will open a netrw window on the current
- directory if [dir] is omitted; a :Lexplore [dir] will show the
- specified directory in the left-hand side browser display no matter
- from which window the command is issued.
- By default, :Lexplore will change an uninitialized |g:netrw_chgwin|
- to 2; edits will thus preferentially be made in window#2.
- The [N] specifies a |g:netrw_winsize| just for the new :Lexplore
- window.
- Those who like this method often also like tree style displays;
- see |g:netrw_liststyle|.
- :[N]Lexplore! [dir] is similar to :Lexplore, except that the full-height
- Explorer window will open on the right hand side and an
- uninitialized |g:netrw_chgwin| will be set to 1 (eg. edits will
- preferentially occur in the leftmost window).
- Also see: |netrw-C| |g:netrw_browse_split| |g:netrw_wiw|
- |netrw-p| |netrw-P| |g:netrw_chgwin|
- |netrw-c-tab| |g:netrw_winsize|
- *netrw-:Sexplore*
- :[N]Sexplore will always split the window before invoking the local-directory
- browser. As with Explore, the splitting is normally done
- horizontally.
- :[N]Sexplore! [dir] is like :Sexplore, but the splitting will be done vertically.
- *netrw-:Texplore*
- :Texplore [dir] does a |:tabnew| before generating the browser window
- *netrw-:Vexplore*
- :[N]Vexplore [dir] does an :Explore with |:leftabove| vertical splitting.
- :[N]Vexplore! [dir] does an :Explore with |:rightbelow| vertical splitting.
- The optional parameters are:
- [N]: This parameter 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.
- [dir]: By default, these explorer commands use the current file's directory.
- However, one may explicitly provide a directory (path) to use instead;
- ie. >
- :Explore /some/path
- <
- *netrw-:Rexplore*
- :Rexplore This command is a little different from the other Explore commands
- as it doesn't necessarily open an Explorer window.
- Return to Explorer~
- When one edits a file using netrw which can occur, for example,
- when pressing <cr> while the cursor is atop a filename in a netrw
- browser window, a :Rexplore issued while editing that file will
- return the display to that of the last netrw browser display in
- that window.
- Return from Explorer~
- Conversely, when one is editing a directory, issuing a :Rexplore
- will return to editing the file that was last edited in that
- window.
- The <2-leftmouse> map (which is only available under gvim and
- cooperative terms) does the same as :Rexplore.
- Also see: |g:netrw_alto| |g:netrw_altv| |g:netrw_winsize|
- *netrw-star* *netrw-starpat* *netrw-starstar* *netrw-starstarpat* *netrw-grep*
- EXPLORING WITH STARS AND PATTERNS {{{2
- When Explore, Sexplore, Hexplore, or Vexplore are used with one of the
- following four patterns Explore generates a list of files which satisfy the
- request for the local file system. These exploration patterns will not work
- with remote file browsing.
- */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 as follows:
- <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|
- EXECUTING FILE UNDER CURSOR VIA SYSTEM() *netrw-X* {{{2
- Pressing X while the cursor is atop an executable file will yield a prompt
- using the filename asking for any arguments. Upon pressing a [return], netrw
- will then call |system()| with that command and arguments. The result will be
- displayed by |:echomsg|, and so |:messages| will repeat display of the result.
- Ansi escape sequences will be stripped out.
- See |cmdline-window| for directions for more on how to edit the arguments.
- 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 >
- gf
- <
- To force treatment as a directory: use >
- gd
- <
- 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-prpvided 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 variables: |g:netrw_list_hide| |g:netrw_hide|
- Associated topics: |netrw-a| |netrw-ctrl-h| |netrw-mh|
- *netrw-gitignore*
- Netrw provides a helper function 'netrw_gitignore#Hide()' that, when used with
- |g:netrw_list_hide| automatically hides all git-ignored files.
- 'netrw_gitignore#Hide' searches for patterns in the following files: >
- './.gitignore'
- './.git/info/exclude'
- global gitignore file: `git config --global core.excludesfile`
- system gitignore file: `git config --system core.excludesfile`
- <
- Files that do not exist, are ignored.
- Git-ignore patterns are taken from existing files, and converted to patterns for
- hiding files. For example, if you had '*.log' in your '.gitignore' file, it
- would be converted to '.*\.log'.
- To use this function, simply assign its output to |g:netrw_list_hide| option. >
- Example: let g:netrw_list_hide= netrw_gitignore#Hide()
- Git-ignored files are hidden in Netrw.
- Example: let g:netrw_list_hide= netrw_gitignore#Hide('my_gitignore_file')
- Function can take additional files with git-ignore patterns.
- Example: let g:netrw_list_hide= netrw_gitignore#Hide() .. '.*\.swp$'
- Combining 'netrw_gitignore#Hide' with custom patterns.
- <
- 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/
- Ssh hints:
- Thomer Gil has provided a hint on how to speed up netrw+ssh:
- http://thomer.com/howtos/netrw_ssh.html
- Alex Young has several hints on speeding ssh up:
- http://usevim.com/2012/03/16/editing-remote-files/
- 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| |netrw-%|
- MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-cd* {{{2
- By default, |g:netrw_keepdir| is 1. This setting means that the current
- directory will not track the browsing directory. (done for backwards
- compatibility with v6's file explorer).
- Setting g:netrw_keepdir to 0 tells netrw to make vim's current directory
- 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 "cd" map (type cd). That map will
- set Vim's notion of the current directory to netrw's current browsing
- directory.
- |netrw-cd| : This map's name was changed from "c" to cd (see |netrw-cd|).
- This change was done to allow for |netrw-cb| and |netrw-cB| maps.
- Associated setting variable: |g:netrw_keepdir|
- MARKING FILES *netrw-:MF* *netrw-mf* {{{2
- (also see |netrw-mr|)
- Netrw provides several ways to mark files:
- * One may mark files with the cursor atop a filename and
- then pressing "mf".
- * With gvim, in addition one may mark files with
- <s-leftmouse>. (see |netrw-mouse|)
- * One may use the :MF command, which takes a list of
- files (for local directories, the list may include
- wildcards -- see |glob()|) >
- :MF *.c
- <
- (Note that :MF uses |<f-args>| to break the line
- at spaces)
- * Mark files using the |argument-list| (|netrw-mA|)
- * Mark files based upon a |location-list| (|netrw-qL|)
- * Mark files based upon the quickfix list (|netrw-qF|)
- (|quickfix-error-lists|)
- The following netrw maps make use of marked files:
- |netrw-a| Hide marked files/directories
- |netrw-D| Delete marked files/directories
- |netrw-ma| Move marked files' names to |arglist|
- |netrw-mA| Move |arglist| filenames to marked file list
- |netrw-mb| Append marked files to bookmarks
- |netrw-mB| Delete marked files from bookmarks
- |netrw-mc| Copy marked files to target
- |netrw-md| Apply vimdiff to marked files
- |netrw-me| Edit marked files
- |netrw-mF| Unmark marked files
- |netrw-mg| Apply vimgrep to marked files
- |netrw-mm| Move marked files to target
- |netrw-mp| Print marked files
- |netrw-ms| Netrw will source marked files
- |netrw-mt| Set target for |netrw-mm| and |netrw-mc|
- |netrw-mT| Generate tags using marked files
- |netrw-mv| Apply vim command to marked files
- |netrw-mx| Apply shell command to marked files
- |netrw-mX| Apply shell command to marked files, en bloc
- |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 .
- If the mouse is enabled and works with your vim, you may use <s-leftmouse> to
- mark one or more files. You may mark multiple files by dragging the shifted
- leftmouse. (see |netrw-mouse|)
- *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 buffer-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.
- Known Problem: if one is using tree mode (|g:netrw_liststyle|) and several
- directories have files with the same name, then marking such a file will
- result in all such files being highlighted as if they were all marked. The
- |markfilelist|, however, will only have the selected file in it. This problem
- is unlikely to be fixed.
- UNMARKING FILES *netrw-mF* {{{2
- (also see |netrw-mf|, |netrw-mu|)
- The "mF" command will unmark all files in the current buffer. One may also use
- mf (|netrw-mf|) on a specific, already marked, file to unmark just that file.
- MARKING FILES BY LOCATION LIST *netrw-qL* {{{2
- (also see |netrw-mf|)
- One may convert |location-list|s into a marked file list using "qL".
- You may then proceed with commands such as me (|netrw-me|) to edit them.
- MARKING FILES BY QUICKFIX LIST *netrw-qF* {{{2
- (also see |netrw-mf|)
- One may convert |quickfix-error-lists| into a marked file list using "qF".
- You may then proceed with commands such as me (|netrw-me|) to edit them.
- Quickfix error lists are generated, for example, by calls to |:vimgrep|.
- 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).
- See |cmdline-window| for directions on more on how to edit the regular
- expression.
- MARKED FILES, ARBITRARY VIM COMMAND *netrw-mv* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the local marked-file list)
- The "mv" map causes netrw to execute an arbitrary vim command on each file on
- the local marked file list, individually:
- * 1split
- * sil! keepalt e file
- * run vim command
- * sil! keepalt wq!
- A prompt, "Enter vim command: ", will be issued to elicit the vim command you
- wish used. See |cmdline-window| for directions for more on how to edit the
- command.
- MARKED FILES, ARBITRARY SHELL 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.
- Example:
- (mark files)
- mx
- Enter command: cat
- The result is a series of shell commands:
- cat 'file1'
- cat 'file2'
- ...
- MARKED FILES, ARBITRARY SHELL COMMAND, EN BLOC *netrw-mX* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the global 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 on the global marked file list. The
- "en bloc" means that one command will be executed on all the files at once: >
- command files
- This approach is useful, for example, to select files and make a tarball: >
- (mark files)
- mX
- Enter command: tar cf mynewtarball.tar
- <
- The command that will be run with this example:
- tar cf mynewtarball.tar 'file1' 'file2' ...
- MARKED FILES: ARGUMENT LIST *netrw-ma* *netrw-mA*
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the global marked-file list)
- Using ma, one moves filenames from the marked file list to the argument list.
- Using mA, one moves filenames from the argument list to the marked file list.
- See Also: |netrw-cb| |netrw-cB| |netrw-qF| |argument-list| |:args|
- MARKED FILES: BUFFER LIST *netrw-cb* *netrw-cB*
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the global marked-file list)
- Using cb, one moves filenames from the marked file list to the buffer list.
- Using cB, one copies filenames from the buffer list to the marked file list.
- See Also: |netrw-ma| |netrw-mA| |netrw-qF| |buffer-list| |:buffers|
- 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 uses a |Dictionary| of suffices and their
- associated decompressing utilities; see |g:netrw_decompress|.
- Remember that one can mark multiple files by regular expression
- (see |netrw-mr|); this is particularly useful to facilitate compressing and
- decompressing a large number of files.
- 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.
- If one does not have a target directory set with |netrw-mt|, then netrw
- will query you for a directory to copy to.
- One may also copy directories and their contents (local only) to a target
- directory.
- Associated setting variables:
- |g:netrw_localcopycmd| |g:netrw_localcopycmdopt|
- |g:netrw_localcopydircmd| |g:netrw_localcopydircmdopt|
- |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)
- The "me" command will place the marked files on the |arglist| and commence
- editing them. One may return the to explorer window with |:Rexplore|.
- (use |:n| and |:p| to edit next and previous files in the arglist)
- MARKED FILES: GREP *netrw-mg* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
- (uses the global marked file list)
- The "mg" command will apply |:vimgrep| to the marked files.
- The command will ask for the requested pattern; one may then enter: >
- /pattern/[g][j]
- ! /pattern/[g][j]
- pattern
- <
- With /pattern/, editing will start with the first item on the |quickfix| list
- that vimgrep sets up (see |:copen|, |:cnext|, |:cprevious|, |:cclose|). The |:vimgrep|
- command is in use, so without 'g' each line is added to quickfix list only
- once; with 'g' every match is included.
- With /pattern/j, "mg" will winnow the current marked file list to just those
- marked files also possessing the specified pattern. Thus, one may use >
- mr ...file-pattern...
- mg /pattern/j
- <
- to have a marked file list satisfying the file-pattern but also restricted to
- files containing some desired 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)
- The "mh" 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)
- When "mp" is used, netrw will apply the |:hardcopy| command to marked files.
- What netrw 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)
- With "ms", netrw will source the marked files (using vim's |:source| command)
- 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.
- Unless the target already is the current directory. In which case,
- typing "mf" clears the target.
- * However, if the cursor is atop a directory name, then that directory is
- used for the copy/move-to target
- * One may use the :MT [directory] command to set the target *netrw-:MT*
- This command uses |<q-args>|, so spaces in the directory name are
- permitted without escaping.
- * With mouse-enabled vim or with gvim, one may select a target by using
- <c-leftmouse>
- There is only one copy/move-to target at a time in a vim session; ie. the
- target is a script variable (see |s:var|) and is shared between all netrw
- windows (in an instance of vim).
- When using menus and gvim, netrw provides a "Targets" entry which allows one
- to pick a target from the list of bookmarks and history.
- Related topics:
- Marking Files......................................|netrw-mf|
- Marking Files by Regular Expression................|netrw-mr|
- Marked Files: Target Directory Using Bookmarks.....|netrw-Tb|
- Marked Files: Target Directory Using History.......|netrw-Th|
- 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://www.drchip.org/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 now local tags
- file is then modified so that one may use it through the network. The
- modification made 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: TARGET DIRECTORY USING BOOKMARKS *netrw-Tb* {{{2
- Sets the marked file copy/move-to target.
- The |netrw-qb| map will give you a list of bookmarks (and history).
- One may choose one of the bookmarks to become your marked file
- target by using [count]Tb (default count: 1).
- Related topics:
- Copying files to target............................|netrw-mc|
- Listing Bookmarks and History......................|netrw-qb|
- Marked Files: Setting The Target Directory.........|netrw-mt|
- Marked Files: Target Directory Using History.......|netrw-Th|
- Marking Files......................................|netrw-mf|
- Marking Files by Regular Expression................|netrw-mr|
- Moving files to target.............................|netrw-mm|
- MARKED FILES: TARGET DIRECTORY USING HISTORY *netrw-Th* {{{2
- Sets the marked file copy/move-to target.
- The |netrw-qb| map will give you a list of history (and bookmarks).
- One may choose one of the history entries to become your marked file
- target by using [count]Th (default count: 0; ie. the current directory).
- Related topics:
- Copying files to target............................|netrw-mc|
- Listing Bookmarks and History......................|netrw-qb|
- Marked Files: Setting The Target Directory.........|netrw-mt|
- Marked Files: Target Directory Using Bookmarks.....|netrw-Tb|
- Marking Files......................................|netrw-mf|
- Marking Files by Regular Expression................|netrw-mr|
- Moving files to target.............................|netrw-mm|
- MARKED FILES: UNMARKING *netrw-mu* {{{2
- (See |netrw-mf|, |netrw-mF|)
- The "mu" mapping will unmark all currently marked files. This command differs
- from "mF" as the latter only unmarks files in the current directory whereas
- "mu" will unmark global and all buffer-local marked files.
- (see |netrw-mF|)
- *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_altfile* some like |CTRL-^| to return to the last
- edited file. Choose that by setting this
- parameter to 1.
- Others like |CTRL-^| to return to the
- netrw browsing buffer. Choose that by setting
- this parameter to 0.
- default: =0
- *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)
- *g:netrw_bannerbackslash* if this variable exists and is not zero, the
- banner will be displayed with backslashes
- rather than forward slashes.
- *g:netrw_browse_split* when browsing, <cr> will open the file by:
- =0: re-using the same window (default)
- =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.
- =[servername,tab-number,window-number]
- Given a |List| such as this, a remote server
- named by the "servername" will be used for
- editing. It will also use the specified tab
- and window numbers to perform editing
- (see |clientserver|, |netrw-ctrl-r|)
- This option does not affect the production of
- |:Lexplore| windows.
- Related topics:
- |g:netrw_alto| |g:netrw_altv|
- |netrw-C| |netrw-cr|
- |netrw-ctrl-r|
- *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_browsex_support_remote*
- specify if the specified viewer supports a
- remote URL. (see |netrw-handler|).
- *g:netrw_chgperm* Unix/Linux: "chmod PERM FILENAME"
- Windows: "cacls FILENAME /e /p PERM"
- Used to change access permission for a file.
- *g:netrw_clipboard* =1
- By default, netrw will attempt to insure that
- the clipboard's values will remain unchanged.
- However, some users report that they have
- speed problems with this; consequently, this
- option, when set to zero, lets such users
- prevent netrw from saving and restoring the
- clipboard (the latter is done only as needed).
- That means that if the clipboard is changed
- (inadvertently) by normal netrw operation that
- it will not be restored to its prior state.
- *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
- =5 U-cul U-cuc U-cul U-cuc
- =6 U-cul U-cuc cul U-cuc
- =7 cul U-cuc cul U-cuc
- =8 cul U-cuc cul cuc
- Where
- u-cul : user's |'cursorline'| initial setting used
- u-cuc : user's |'cursorcolumn'| initial setting used
- U-cul : user's |'cursorline'| current setting used
- U-cuc : user's |'cursorcolumn'| current setting used
- cul : |'cursorline'| will be locally set
- cuc : |'cursorcolumn'| will be locally set
- The "initial setting" means the values of
- the |'cuc'| and |'cul'| settings in effect when
- netrw last saw |g:netrw_cursor| >= 5 or when
- netrw was initially run.
- *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 suppress
- history.
- (related: |netrw-qb| |netrw-u| |netrw-U|)
- *g:netrw_dynamic_maxfilenamelen* =32: enables dynamic determination of
- |g:netrw_maxfilenamelen|, which affects
- local file long listing.
- *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_ffkeep* (default: doesn't exist)
- If this variable exists and is zero, then
- netrw will not do a save and restore for
- |'fileformat'|.
- *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_gx* ="<cfile>"
- This option controls how gx (|netrw-gx|) picks
- up the text under the cursor. See |expand()|
- for possibilities.
- *g:netrw_hide* Controlled by the "a" map (see |netrw-a|)
- =0 : show all
- =1 : show not-hidden files
- =2 : show hidden files only
- default: =1
- *g:netrw_home* The home directory for where bookmarks and
- history are saved (as .netrwbook and
- .netrwhist).
- Netrw uses |expand()| on the string.
- default: stdpath("data") (see |stdpath()|)
- *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-cd|)
- *g:netrw_keepj* ="keepj" (default) netrw attempts to keep the
- |:jumps| table unaffected.
- ="" netrw will not use |:keepjumps| with
- exceptions only for the
- saving/restoration of position.
- *g:netrw_list_cmd* command for listing remote directories
- default: (if ssh is executable)
- "ssh HOSTNAME ls -FLa"
- *g:netrw_list_cmd_options* If this variable exists, then its contents are
- appended to the g:netrw_list_cmd. For
- example, use "2>/dev/null" to get rid of banner
- messages on unix systems.
- *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|)
- There's some special support for git-ignore
- files: you may add the output from the helper
- function 'netrw_gitignore#Hide() automatically
- hiding all gitignored files.
- For more details see |netrw-gitignore|.
- Examples:
- let g:netrw_list_hide= '.*\.swp$'
- let g:netrw_list_hide= netrw_gitignore#Hide() .. '.*\.swp$'
- default: ""
- *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin
- =expand("$COMSPEC") Windows
- Copies marked files (|netrw-mf|) to target
- directory (|netrw-mt|, |netrw-mc|)
- *g:netrw_localcopycmdopt* ='' Linux/Unix/MacOS/Cygwin
- =' \c copy' Windows
- Options for the |g:netrw_localcopycmd|
- *g:netrw_localcopydircmd* ="cp" Linux/Unix/MacOS/Cygwin
- =expand("$COMSPEC") Windows
- Copies directories to target directory.
- (|netrw-mc|, |netrw-mt|)
- *g:netrw_localcopydircmdopt* =" -R" Linux/Unix/MacOS/Cygwin
- =" /c xcopy /e /c /h/ /i /k" Windows
- Options for |g:netrw_localcopydircmd|
- *g:netrw_localmkdir* ="mkdir" Linux/Unix/MacOS/Cygwin
- =expand("$COMSPEC") Windows
- command for making a local directory
- *g:netrw_localmkdiropt* ="" Linux/Unix/MacOS/Cygwin
- =" /c mkdir" Windows
- Options for |g:netrw_localmkdir|
- *g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin
- =expand("$COMSPEC") Windows
- Moves marked files (|netrw-mf|) to target
- directory (|netrw-mt|, |netrw-mm|)
- *g:netrw_localmovecmdopt* ="" Linux/Unix/MacOS/Cygwin
- =" /c move" Windows
- Options for |g:netrw_localmovecmd|
- *g:netrw_localrmdir* ="rmdir" Linux/Unix/MacOS/Cygwin
- =expand("$COMSPEC") Windows
- Remove directory command (rmdir)
- This variable is only used if your vim is
- earlier than 7.4 or if your vim doesn't
- have patch#1107. Otherwise, |delete()|
- is used with the "d" option.
- *g:netrw_localrmdiropt* ="" Linux/Unix/MacOS/Cygwin
- =" /c rmdir" Windows
- Options for |g:netrw_localrmdir|
- *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_sizestyle* not defined: actual bytes (default)
- ="b" : actual bytes (default)
- ="h" : human-readable (ex. 5k, 4m, 3g)
- uses 1000 base
- ="H" : human-readable (ex. 5K, 4M, 3G)
- uses 1024 base
- The long listing (|netrw-i|) and query-file
- maps (|netrw-qf|) will display file size
- using the specified style.
- *g:netrw_usetab* if this variable exists and is non-zero, then
- the <tab> map supporting shrinking/expanding a
- Lexplore or netrw window will be enabled.
- (see |netrw-c-tab|)
- *g:netrw_remote_mkdir* command for making a remote 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 remote files
- default: "ssh USEPORT HOSTNAME rm"
- *g:netrw_rmdir_cmd* command for removing remote directories
- default: "ssh USEPORT HOSTNAME rmdir"
- *g:netrw_rmf_cmd* command for removing remote softlinks
- default: "ssh USEPORT HOSTNAME rm -f"
- *g:netrw_servername* use this variable to provide a name for
- |netrw-ctrl-r| to use for its server.
- default: "NETRWSERVER"
- *g:netrw_sort_by* sort by "name", "time", "size", or
- "exten".
- 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
- any 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
- netrwCoreDump: core.\d\+
- netrwData : *.dat
- netrwDoc : *.doc,*.txt,*.pdf,
- *.pdf,*.docx
- netrwHdr : *.h
- netrwLex : *.l *.lex
- netrwLib : *.a *.so *.lib *.dll
- netrwMakefile: [mM]akefile *.mak
- netrwObj : *.o *.obj
- netrwPix : *.bmp,*.fit,*.fits,*.gif,
- *.jpg,*.jpeg,*.pcx,*.ppc
- *.pgm,*.png,*.psd,*.rgb
- *.tif,*.xbm,*.xcf
- netrwTags : tags ANmenu ANtags
- netrwTilde : *
- netrwTmp : tmp* *tmp
- netrwYacc : *.y
- In addition, those groups mentioned in
- |'suffixes'| are also added to the special
- file highlighting group.
- These syntax highlighting groups are linked
- to netrwGray or Folded by default
- (see |hl-Folded|), but one may put lines like >
- hi link netrwCompress Visual
- < into one's <.vimrc> to use one's own
- preferences. Alternatively, one may
- put such specifications into >
- .vim/after/syntax/netrw.vim.
- < The netrwGray highlighting is set up by
- netrw when >
- * netrwGray has not been previously
- defined
- * the gui is running
- < As an example, I myself use a dark-background
- colorscheme with the following in
- .vim/after/syntax/netrw.vim: >
- hi netrwCompress term=NONE cterm=NONE gui=NONE ctermfg=10 guifg=green ctermbg=0 guibg=black
- hi netrwData term=NONE cterm=NONE gui=NONE ctermfg=9 guifg=blue ctermbg=0 guibg=black
- hi netrwHdr term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1
- hi netrwLex term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1
- hi netrwYacc term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1
- hi netrwLib term=NONE cterm=NONE gui=NONE ctermfg=14 guifg=yellow
- hi netrwObj term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red
- hi netrwTilde term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red
- hi netrwTmp term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red
- hi netrwTags term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red
- hi netrwDoc term=NONE cterm=NONE gui=NONE ctermfg=220 ctermbg=27 guifg=yellow2 guibg=Blue3
- hi netrwSymLink term=NONE cterm=NONE gui=NONE ctermfg=220 ctermbg=27 guifg=grey60
- <
- *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_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_suppress_gx_mesg* =1 : browsers sometimes produce messages
- which are normally unwanted intermixed
- with the page.
- However, when using links, for example,
- those messages are what the browser produces.
- By setting this option to 0, netrw will not
- suppress browser messages.
- *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.
- default: 1
- *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 will be
- used to specify the quantity of lines or
- columns for the new window.
- If g:netrw_winsize is zero, then a normal
- split will be made (ie. |'equalalways'| will
- take effect, for example).
- default: 50 (for 50%)
- *g:netrw_wiw* =1 specifies the minimum window width to use
- when shrinking a netrw/Lexplore window
- (see |netrw-c-tab|).
- *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 problematic. 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-obtain* *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-cd|
- * To automatically make the currently browsed directory the current
- directory, see |g:netrw_keepdir|.
- *netrw-newfile* *netrw-createfile*
- OPEN A NEW FILE IN NETRW'S CURRENT DIRECTORY *netrw-%* {{{2
- To open a new 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).
- If Lexplore (|netrw-:Lexplore|) is in use, the new file will be generated
- in the |g:netrw_chgwin| window.
- Related topics: |netrw-d|
- 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.
- Related: if you like this idea, you may also find :Lexplore
- (|netrw-:Lexplore|) or |g:netrw_chgwin| of interest
- Also see: |g:netrw_chgwin| |netrw-P| |'previewwindow'| |CTRL-W_z| |:pclose|
- PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2
- To edit a file or directory under the cursor 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 they wish to save the buffer first (yes, no, or
- cancel).
- Related Actions |netrw-cr| |netrw-o| |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
- Also see: |g:netrw_chgwin| |netrw-p|
- REFRESHING THE LISTING *netrw-refresh* *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 .".
- 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|
- RENAMING FILES OR DIRECTORIES *netrw-move* *netrw-rename* *netrw-R* {{{2
- If there are no marked files: (see |netrw-mf|)
- Renaming files and directories involves moving the cursor to the
- file/directory to be moved (renamed) and pressing "R". You will then be
- queried for what you want the file/directory to be renamed to. You may
- select a range of lines with the "V" command (visual selection), and then
- press "R"; you will be queried for each file as to what you want it
- renamed to.
- 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.
- If you answer a renaming query with a "s/frompattern/topattern/", then
- subsequent files on the marked file list will be renamed by taking each
- name, applying that substitute, and renaming each file to the result.
- As an example : >
- mr [query: reply with *.c]
- R [query: reply with s/^\(.*\)\.c$/\1.cpp/]
- <
- This example will mark all *.c files and then rename them to *.cpp
- files. Netrw will protect you from overwriting local files without
- confirmation, but not remote ones.
- The ctrl-X character has special meaning for renaming files: >
- <c-x> : a single ctrl-x tells netrw to ignore the portion of the response
- lying between the last '/' and the ctrl-x.
- <c-x><c-x> : a pair of contiguous ctrl-x's tells netrw to ignore any
- portion of the string preceding the double ctrl-x's.
- <
- 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 succeeds you may lose the file.
- Use at your own risk.
- The *g:netrw_rename_cmd* variable is used to implement remote renaming. By
- default its value is: >
- ssh HOSTNAME mv
- <
- One may rename a block of files and directories by selecting them with
- V (|linewise-visual|) when using thin style.
- See |cmdline-editing| for more on how to edit the command line; in particular,
- you'll find <ctrl-f> (initiates cmdline window editing) and <ctrl-c> (uses the
- command line under the cursor) useful in conjunction with the R command.
- 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-editwindow* *netrw-C* *netrw-:NetrwC* {{{2
- One may select a netrw window for editing with the "C" mapping, using the
- :NetrwC [win#] command, or by setting |g:netrw_chgwin| to the selected window
- number. Subsequent selection of a file to edit (|netrw-cr|) will use that
- window.
- * C : by itself, will select the current window holding a netrw buffer
- for subsequent editing via |netrw-cr|. The C mapping is only available
- while in netrw buffers.
- * [count]C : the count will be used as the window number to be used
- for subsequent editing via |netrw-cr|.
- * :NetrwC will set |g:netrw_chgwin| to the current window
- * :NetrwC win# will set |g:netrw_chgwin| to the specified window
- number
- Using >
- let g:netrw_chgwin= -1
- will restore the default editing behavior
- (ie. subsequent editing will use the current window).
- Related topics: |netrw-cr| |g:netrw_browse_split|
- Associated setting variables: |g:netrw_chgwin|
- SHRINKING OR EXPANDING A NETRW OR LEXPLORE WINDOW *netrw-c-tab* {{{2
- The <c-tab> key will toggle a netrw or |:Lexplore| window's width,
- but only if |g:netrw_usetab| exists and is non-zero (and, of course,
- only if your terminal supports differentiating <c-tab> from a plain
- <tab>).
- * If the current window is a netrw window, toggle its width
- (between |g:netrw_wiw| and its original width)
- * Else if there is a |:Lexplore| window in the current tab, toggle
- its width
- * Else bring up a |:Lexplore| window
- If |g:netrw_usetab| exists and is zero, or if there is a pre-existing mapping
- for <c-tab>, then the <c-tab> will not be mapped. One may map something other
- than a <c-tab>, too: (but you'll still need to have had |g:netrw_usetab| set). >
- nmap <unique> (whatever) <Plug>NetrwShrink
- <
- Related topics: |:Lexplore|
- Associated setting variable: |g:netrw_usetab|
- USER SPECIFIED MAPS *netrw-usermaps* {{{1
- One may make customized user maps. Specify a variable, |g:Netrw_UserMaps|,
- to hold a |List| of lists of keymap strings and function names: >
- [["keymap-sequence","ExampleUserMapFunc"],...]
- <
- When netrw is setting up maps for a netrw buffer, if |g:Netrw_UserMaps|
- exists, then the internal function netrw#UserMaps(islocal) is called.
- This function goes through all the entries in the |g:Netrw_UserMaps| list:
- * sets up maps: >
- nno <buffer> <silent> KEYMAP-SEQUENCE
- :call s:UserMaps(islocal,"ExampleUserMapFunc")
- < * refreshes if result from that function call is the string
- "refresh"
- * if the result string is not "", then that string will be
- executed (:exe result)
- * if the result is a List, then the above two actions on results
- will be taken for every string in the result List
- The user function is passed one argument; it resembles >
- fun! ExampleUserMapFunc(islocal)
- <
- where a:islocal is 1 if its a local-directory system call or 0 when
- remote-directory system call.
- *netrw-call* *netrw-expose* *netrw-modify*
- Use netrw#Expose("varname") to access netrw-internal (script-local)
- variables.
- Use netrw#Modify("varname",newvalue) to change netrw-internal variables.
- Use netrw#Call("funcname"[,args]) to call a netrw-internal function with
- specified arguments.
- Example: Get a copy of netrw's marked file list: >
- let netrwmarkfilelist= netrw#Expose("netrwmarkfilelist")
- <
- Example: Modify the value of netrw's marked file list: >
- call netrw#Modify("netrwmarkfilelist",[])
- <
- Example: Clear netrw's marked file list via a mapping on gu >
- " ExampleUserMap: {{{2
- fun! ExampleUserMap(islocal)
- call netrw#Modify("netrwmarkfilelist",[])
- call netrw#Modify('netrwmarkfilemtch_{bufnr("%")}',"")
- let retval= ["refresh"]
- return retval
- endfun
- let g:Netrw_UserMaps= [["gu","ExampleUserMap"]]
- <
- 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 {{{2
- 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 {{{2
- 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 {{{2
- 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. {{{2
- 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 {{{2
- 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. {{{2
- 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, {{{2
- 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. Your 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 {{{2
- 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\vim82\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 {{{2
- 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 {{{2
- "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 {{{2
- editing window on the right. How may I accomplish this?
- You probably want netrw running as in a side window. If so, you
- will likely find that ":[N]Lexplore" does what you want. The
- optional "[N]" allows you to select the quantity of columns you
- wish the |:Lexplore|r window to start with (see |g:netrw_winsize|
- for how this parameter works).
- Previous solution:
- * 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 {{{2
- 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 {{{2
- 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 would like to speed up writes using Nwrite and scp/ssh {{{2
- 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 {{{2
- 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|)
- *netrw-p16*
- P16. When editing remote files (ex. :e ftp://hostname/path/file), {{{2
- under Windows I get an |E303| message complaining that its unable
- to open a swap file.
- (romainl) It looks like you are starting Vim from a protected
- directory. Start netrw from your $HOME or other writable
- directory.
- *netrw-p17*
- P17. Netrw is closing buffers on its own. {{{2
- What steps will reproduce the problem?
- 1. :Explore, navigate directories, open a file
- 2. :Explore, open another file
- 3. Buffer opened in step 1 will be closed. o
- What is the expected output? What do you see instead?
- I expect both buffers to exist, but only the last one does.
- (Lance) Problem is caused by "set autochdir" in .vimrc.
- (drchip) I am able to duplicate this problem with |'acd'| set.
- It appears that the buffers are not exactly closed;
- a ":ls!" will show them (although ":ls" does not).
- *netrw-P18*
- P18. How to locally edit a file that's only available via {{{2
- another server accessible via ssh?
- See http://stackoverflow.com/questions/12469645/
- "Using Vim to Remotely Edit A File on ServerB Only
- Accessible From ServerA"
- *netrw-P19*
- P19. How do I get numbering on in directory listings? {{{2
- With |g:netrw_bufsettings|, you can control netrw's buffer
- settings; try putting >
- let g:netrw_bufsettings="noma nomod nu nobl nowrap ro nornu"
- < in your .vimrc. If you'd like to have relative numbering
- instead, try >
- let g:netrw_bufsettings="noma nomod nonu nobl nowrap ro rnu"
- <
- *netrw-P20*
- P20. How may I have gvim start up showing a directory listing? {{{2
- Try putting the following code snippet into your .vimrc: >
- augroup VimStartup
- au!
- au VimEnter * if expand("%") == "" && argc() == 0 &&
- \ (v:servername =~ 'GVIM\d*' || v:servername == "")
- \ | e . | endif
- augroup END
- < You may use Lexplore instead of "e" if you're so inclined.
- This snippet assumes that you have client-server enabled
- (ie. a "huge" vim version).
- *netrw-P21*
- P21. I've made a directory (or file) with an accented character, {{{2
- but netrw isn't letting me enter that directory/read that file:
- Its likely that the shell or o/s is using a different encoding
- than you have vim (netrw) using. A patch to vim supporting
- "systemencoding" may address this issue in the future; for
- now, just have netrw use the proper encoding. For example: >
- au FileType netrw set enc=latin1
- <
- *netrw-P22*
- P22. I get an error message when I try to copy or move a file: {{{2
- **error** (netrw) tried using g:netrw_localcopycmd<cp>; it doesn't work!
- What's wrong?
- Netrw uses several system level commands to do things (see
- |g:netrw_localcopycmd|, |g:netrw_localmovecmd|,
- |g:netrw_localrmdir|, |g:netrw_mkdir_cmd|).
- You may need to adjust the default commands for one or more of
- these commands by setting them properly in your .vimrc. Another
- source of difficulty is that these commands use vim's local
- directory, which may not be the same as the browsing directory
- shown by netrw (see |g:netrw_keepdir|).
- ==============================================================================
- 11. Debugging Netrw Itself *netrw-debug* {{{1
- Step 1: check that the problem you've encountered hasn't already been resolved
- by obtaining a copy of the latest (often developmental) netrw at:
- http://www.drchip.org/astronaut/vim/index.html#NETRW
- The <netrw.vim> script is typically installed on systems as something like:
- >
- /usr/local/share/vim/vim8x/plugin/netrwPlugin.vim
- /usr/local/share/vim/vim8x/autoload/netrw.vim
- (see output of :echo &rtp)
- <
- which is loaded automatically at startup (assuming :set nocp). If you
- installed a new netrw, then it will be located at >
- $HOME/.vim/plugin/netrwPlugin.vim
- $HOME/.vim/autoload/netrw.vim
- <
- Step 2: assuming that you've installed the latest version of netrw,
- check that your problem is really due to netrw. Create a file
- called netrw.vimrc with the following contents: >
- set nocp
- so $HOME/.vim/plugin/netrwPlugin.vim
- <
- Then run netrw as follows: >
- vim -u netrw.vimrc --noplugins -i NONE [some path here]
- <
- Perform whatever netrw commands you need to, and check that the problem is
- still present. This procedure sidesteps any issues due to personal .vimrc
- settings, .viminfo file, and other plugins. If the problem does not appear,
- then you need to determine which setting in your .vimrc is causing the
- conflict with netrw or which plugin(s) is/are involved.
- Step 3: If the problem still is present, then get a debugging trace from
- netrw:
- 1. Get the <Decho.vim> script, available as:
- http://www.drchip.org/astronaut/vim/index.html#DECHO
- or
- http://vim.sourceforge.net/scripts/script.php?script_id=120
- Decho.vim is provided as a "vimball". You
- should edit the Decho.vba.gz file and source it in: >
- vim Decho.vba.gz
- :so %
- :q
- <
- 2. To turn on debug tracing in netrw, then 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 or
- server vim window.
- Change the netrw.vimrc file to include the Decho plugin: >
- set nocp
- so $HOME/.vim/plugin/Decho.vim
- so $HOME/.vim/plugin/netrwPlugin.vim
- <
- You should continue to run vim with >
- vim -u netrw.vimrc --noplugins -i NONE [some path here]
- <
- to avoid entanglements with options and other plugins.
- To save the file: under linux, the output will be in a separate
- remote server window; in it, just save the file with >
- :w! DBG
- < Under a vim that doesn't support clientserver, your debugging
- output will appear in another tab: >
- :tabnext
- :set bt=
- :w! DBG
- <
- Furthermore, it'd be helpful if you would type >
- :Dsep <command>
- < where <command> is the command you're about to type next,
- thereby making it easier to associate which part of the
- debugging trace is due to which command.
- Please send that information to <netrw.vim>'s maintainer along
- with the o/s you're using and the vim version that you're using
- (see |:version|) (remove the embedded NOSPAM first) >
- NcampObell@SdrPchip.AorgM-NOSPAM
- <
- ==============================================================================
- 12. History *netrw-history* {{{1
- v171: Oct 09, 2020 * included code in s:NetrwOptionsSafe()
- to allow |'bh'| to be set to delete when
- rather than hide when g:netrw_fastbrowse
- was zero.
- * Installed |g:netrw_clipboard| setting
- * Installed option bypass for |'guioptions'|
- a/A settings
- * Changed popup_beval() to popup_atcursor()
- in netrw#ErrorMsg (lacygoill). Apparently
- popup_beval doesn't reliably close the
- popup when the mouse is moved.
- * VimEnter() now using win_execute to examine
- buffers for an attempt to open a directory.
- Avoids issues with popups/terminal from
- command line. (lacygoill)
- Jun 28, 2021 * (zeertzjq) provided a patch for use of
- xmap,xno instead of vmap,vno in
- netrwPlugin.vim. Avoids entanglement with
- select mode.
- Jul 14, 2021 * Fixed problem addressed by tst976; opening
- a file using tree mode, going up a
- directory, and opening a file there was
- opening the file in the wrong directory.
- Jul 28, 2021 * (Ingo Karkat) provided a patch fixing an
- E488 error with netrwPlugin.vim
- (occurred for vim versions < 8.02)
- v170: Mar 11, 2020 * (reported by Reiner Herrmann) netrw+tree
- would not hide with the ^\..* pattern
- correctly.
- * (Marcin Szamotulski) NetrwOptionRestore
- did not restore options correctly that
- had a single quote in the option string.
- Apr 13, 2020 * implemented error handling via popup
- windows (see popup_beval())
- Apr 30, 2020 * (reported by Manatsu Takahashi) while
- using Lexplore, a modified file could
- be overwritten. Sol'n: will not overwrite,
- but will emit an |E37| (although one cannot
- add an ! to override)
- Jun 07, 2020 * (reported by Jo Totland) repeatedly invoking
- :Lexplore and quitting it left unused
- hidden buffers. Netrw will now set netrw
- buffers created by :Lexplore to |'bh'|=wipe.
- v169: Dec 20, 2019 * (reported by amkarthik) that netrw's x
- (|netrw-x|) would throw an error when
- attempting to open a local directory.
- v168: Dec 12, 2019 * scp timeout error message not reported,
- hopefully now fixed (Shane Xb Qian)
- v167: Nov 29, 2019 * netrw does a save&restore on @* and @+.
- That causes problems with the clipboard.
- Now restores occurs only if @* or @+ have
- been changed.
- * netrw will change @* or @+ less often.
- Never if I happen to have caught all the
- operations that modify the unnamed
- register (which also writes @*).
- * Modified hiding behavior so that "s"
- will not ignore hiding.
- v166: Nov 06, 2019 * Removed a space from a nmap for "-"
- * Numerous debugging statement changes
- v163: Dec 05, 2017 * (Cristi Balan) reported that a setting ('sel')
- was left changed
- * (Holger Mitschke) reported a problem with
- saving and restoring history. Fixed.
- * Hopefully I fixed a nasty bug that caused a
- file rename to wipe out a buffer that it
- should not have wiped out.
- * (Holger Mitschke) amended this help file
- with additional |g:netrw_special_syntax|
- items
- * Prioritized wget over curl for
- g:netrw_http_cmd
- v162: Sep 19, 2016 * (haya14busa) pointed out two syntax errors
- with a patch; these are now fixed.
- Oct 26, 2016 * I started using mate-terminal and found that
- x and gx (|netrw-x| and |netrw-gx|) were no
- longer working. Fixed (using atril when
- $DESKTOP_SESSION is "mate").
- Nov 04, 2016 * (Martin Vuille) pointed out that @+ was
- being restored with keepregstar rather than
- keepregplus.
- Nov 09, 2016 * Broke apart the command from the options,
- mostly for Windows. Introduced new netrw
- settings: |g:netrw_localcopycmdopt|
- |g:netrw_localcopydircmdopt| |g:netrw_localmkdiropt|
- |g:netrw_localmovecmdopt| |g:netrw_localrmdiropt|
- Nov 21, 2016 * (mattn) provided a patch for preview; swapped
- winwidth() with winheight()
- Nov 22, 2016 * (glacambre) reported that files containing
- spaces weren't being obtained properly via
- scp. Fix: apparently using single quotes
- such as with 'file name' wasn't enough; the
- spaces inside the quotes also had to be
- escaped (ie. 'file\ name').
- * Also fixed obtain (|netrw-O|) to be able to
- obtain files with spaces in their names
- Dec 20, 2016 * (xc1427) Reported that using "I" (|netrw-I|)
- when atop "Hiding" in the banner also caused
- the active-banner hiding control to occur
- Jan 03, 2017 * (Enno Nagel) reported that attempting to
- apply netrw to a directory that was without
- read permission caused a syntax error.
- Jan 13, 2017 * (Ingo Karkat) provided a patch which makes
- using netrw#Call() better. Now returns
- value of internal routines return, for example.
- Jan 13, 2017 * (Ingo Karkat) changed netrw#FileUrlRead to
- use |:edit| instead of |:read|. I also
- changed the routine name to netrw#FileUrlEdit.
- Jan 16, 2017 * (Sayem) reported a problem where :Lexplore
- could generate a new listing buffer and
- window instead of toggling the netrw display.
- Unfortunately, the directions for eliciting
- the problem weren't complete, so I may or
- may not have fixed that issue.
- Feb 06, 2017 * Implemented cb and cB. Changed "c" to "cd".
- (see |netrw-cb|, |netrw-cB|, and |netrw-cd|)
- Mar 21, 2017 * previously, netrw would specify (safe) settings
- even when the setting was already safe for
- netrw. Netrw now attempts to leave such
- already-netrw-safe settings alone.
- (affects s:NetrwOptionRestore() and
- s:NetrwSafeOptions(); also introduced
- s:NetrwRestoreSetting())
- Jun 26, 2017 * (Christian Brabandt) provided a patch to
- allow curl to follow redirects (ie. -L
- option)
- Jun 26, 2017 * (Callum Howard) reported a problem with
- :Lexpore not removing the Lexplore window
- after a change-directory
- Aug 30, 2017 * (Ingo Karkat) one cannot switch to the
- previously edited file (e.g. with CTRL-^)
- after editing a file:// URL. Patch to
- have a "keepalt" included.
- Oct 17, 2017 * (Adam Faryna) reported that gn (|netrw-gn|)
- did not work on directories in the current
- tree
- v157: Apr 20, 2016 * (Nicola) had set up a "nmap <expr> ..." with
- a function that returned a 0 while silently
- invoking a shell command. The shell command
- activated a ShellCmdPost event which in turn
- called s:LocalBrowseRefresh(). That looks
- over all netrw buffers for changes needing
- refreshes. However, inside a |:map-<expr>|,
- tab and window changes are disallowed. Fixed.
- (affects netrw's s:LocalBrowseRefresh())
- * |g:netrw_localrmdir| not used any more, but
- the relevant patch that causes |delete()| to
- take over was #1107 (not #1109).
- * |expand()| is now used on |g:netrw_home|;
- consequently, g:netrw_home may now use
- environment variables
- * s:NetrwLeftmouse and s:NetrwCLeftmouse will
- return without doing anything if invoked
- when inside a non-netrw window
- Jun 15, 2016 * gx now calls netrw#GX() which returns
- the word under the cursor. The new
- wrinkle: if one is in a netrw buffer,
- then netrw's s:NetrwGetWord().
- Jun 22, 2016 * Netrw was executing all its associated
- Filetype commands silently; I'm going
- to try doing that "noisily" and see if
- folks have a problem with that.
- Aug 12, 2016 * Changed order of tool selection for
- handling http://... viewing.
- (Nikolay Aleksandrovich Pavlov)
- Aug 21, 2016 * Included hiding/showing/all for tree
- listings
- * Fixed refresh (^L) for tree listings
- v156: Feb 18, 2016 * Changed =~ to =~# where appropriate
- Feb 23, 2016 * s:ComposePath(base,subdir) now uses
- fnameescape() on the base portion
- Mar 01, 2016 * (gt_macki) reported where :Explore would
- make file unlisted. Fixed (tst943)
- Apr 04, 2016 * (reported by John Little) netrw normally
- suppresses browser messages, but sometimes
- those "messages" are what is wanted.
- See |g:netrw_suppress_gx_mesg|
- Apr 06, 2016 * (reported by Carlos Pita) deleting a remote
- file was giving an error message. Fixed.
- Apr 08, 2016 * (Charles Cooper) had a problem with an
- undefined b:netrw_curdir. He also provided
- a fix.
- Apr 20, 2016 * Changed s:NetrwGetBuffer(); now uses
- dictionaries. Also fixed the "No Name"
- buffer problem.
- v155: Oct 29, 2015 * (Timur Fayzrakhmanov) reported that netrw's
- mapping of ctrl-l was not allowing refresh of
- other windows when it was done in a netrw
- window.
- Nov 05, 2015 * Improved s:TreeSqueezeDir() to use search()
- instead of a loop
- * NetrwBrowse() will return line to
- w:netrw_bannercnt if cursor ended up in
- banner
- Nov 16, 2015 * Added a <Plug>NetrwTreeSqueeze (|netrw-s-cr|)
- Nov 17, 2015 * Commented out imaps -- perhaps someone can
- tell me how they're useful and should be
- retained?
- Nov 20, 2015 * Added |netrw-ma| and |netrw-mA| support
- Nov 20, 2015 * gx (|netrw-gx|) on a URL downloaded the
- file in addition to simply bringing up the
- URL in a browser. Fixed.
- Nov 23, 2015 * Added |g:netrw_sizestyle| support
- Nov 27, 2015 * Inserted a lot of <c-u>s into various netrw
- maps.
- Jan 05, 2016 * |netrw-qL| implemented to mark files based
- upon |location-list|s; similar to |netrw-qF|.
- Jan 19, 2016 * using - call delete(directoryname,"d") -
- instead of using g:netrw_localrmdir if
- v7.4 + patch#1107 is available
- Jan 28, 2016 * changed to using |winsaveview()| and
- |winrestview()|
- Jan 28, 2016 * s:NetrwTreePath() now does a save and
- restore of view
- Feb 08, 2016 * Fixed a tree-listing problem with remote
- directories
- v154: Feb 26, 2015 * (Yuri Kanivetsky) reported a situation where
- a file was not treated properly as a file
- due to g:netrw_keepdir == 1
- Mar 25, 2015 * (requested by Ben Friz) one may now sort by
- extension
- Mar 28, 2015 * (requested by Matt Brooks) netrw has a lot
- of buffer-local mappings; however, some
- plugins (such as vim-surround) set up
- conflicting mappings that cause vim to wait.
- The "<nowait>" modifier has been included
- with most of netrw's mappings to avoid that
- delay.
- Jun 26, 2015 * |netrw-gn| mapping implemted
- * :Ntree NotADir resulted in having
- the tree listing expand in the error messages
- window. Fixed.
- Jun 29, 2015 * Attempting to delete a file remotely caused
- an error with "keepsol" mentioned; fixed.
- Jul 08, 2015 * Several changes to keep the |:jumps| table
- correct when working with
- |g:netrw_fastbrowse| set to 2
- * wide listing with accented characters fixed
- (using %-S instead of %-s with a |printf()|
- Jul 13, 2015 * (Daniel Hahler) CheckIfKde() could be true
- but kfmclient not installed. Changed order
- in netrw#BrowseX(): checks if kde and
- kfmclient, then will use xdg-open on a unix
- system (if xdg-open is executable)
- Aug 11, 2015 * (McDonnell) tree listing mode wouldn't
- select a file in a open subdirectory.
- * (McDonnell) when multiple subdirectories
- were concurrently open in tree listing
- mode, a ctrl-L wouldn't refresh properly.
- * The netrw:target menu showed duplicate
- entries
- Oct 13, 2015 * (mattn) provided an exception to handle
- windows with shellslash set but no shell
- Oct 23, 2015 * if g:netrw_usetab and <c-tab> now used
- to control whether NetrwShrink is used
- (see |netrw-c-tab|)
- v153: May 13, 2014 * added another |g:netrw_ffkeep| usage {{{2
- May 14, 2014 * changed s:PerformListing() so that it
- always sets ft=netrw for netrw buffers
- (ie. even when syntax highlighting is
- off, not available, etc)
- May 16, 2014 * introduced the |netrw-ctrl-r| functionality
- May 17, 2014 * introduced the |netrw-:NetrwMB| functionality
- * mb and mB (|netrw-mb|, |netrw-mB|) will
- add/remove marked files from bookmark list
- May 20, 2014 * (Enno Nagel) reported that :Lex <dirname>
- wasn't working. Fixed.
- May 26, 2014 * restored test to prevent leftmouse window
- resizing from causing refresh.
- (see s:NetrwLeftmouse())
- * fixed problem where a refresh caused cursor
- to go just under the banner instead of
- staying put
- May 28, 2014 * (László Bimba) provided a patch for opening
- the |:Lexplore| window 100% high, optionally
- on the right, and will work with remote
- files.
- May 29, 2014 * implemented :NetrwC (see |netrw-:NetrwC|)
- Jun 01, 2014 * Removed some "silent"s from commands used
- to implemented scp://... and pscp://...
- directory listing. Permits request for
- password to appear.
- Jun 05, 2014 * (Enno Nagel) reported that user maps "/"
- caused problems with "b" and "w", which
- are mapped (for wide listings only) to
- skip over files rather than just words.
- Jun 10, 2014 * |g:netrw_gx| introduced to allow users to
- override default "<cfile>" with the gx
- (|netrw-gx|) map
- Jun 11, 2014 * gx (|netrw-gx|), with |'autowrite'| set,
- will write modified files. s:NetrwBrowseX()
- will now save, turn off, and restore the
- |'autowrite'| setting.
- Jun 13, 2014 * added visual map for gx use
- Jun 15, 2014 * (Enno Nagel) reported that with having hls
- set and wide listing style in use, that the
- b and w maps caused unwanted highlighting.
- Jul 05, 2014 * |netrw-mv| and |netrw-mX| commands included
- Jul 09, 2014 * |g:netrw_keepj| included, allowing optional
- keepj
- Jul 09, 2014 * fixing bugs due to previous update
- Jul 21, 2014 * (Bruno Sutic) provided an updated
- netrw_gitignore.vim
- Jul 30, 2014 * (Yavuz Yetim) reported that editing two
- remote files of the same name caused the
- second instance to have a "temporary"
- name. Fixed: now they use the same buffer.
- Sep 18, 2014 * (Yasuhiro Matsumoto) provided a patch which
- allows scp and windows local paths to work.
- Oct 07, 2014 * gx (see |netrw-gx|) when atop a directory,
- will now do |gf| instead
- Nov 06, 2014 * For cygwin: cygstart will be available for
- netrw#BrowseX() to use if its executable.
- Nov 07, 2014 * Began support for file://... urls. Will use
- |g:netrw_file_cmd| (typically elinks or links)
- Dec 02, 2014 * began work on having mc (|netrw-mc|) copy
- directories. Works for linux machines,
- cygwin+vim, but not for windows+gvim.
- Dec 02, 2014 * in tree mode, netrw was not opening
- directories via symbolic links.
- Dec 02, 2014 * added resolved link information to
- thin and tree modes
- Dec 30, 2014 * (issue#231) |:ls| was not showing
- remote-file buffers reliably. Fixed.
- v152: Apr 08, 2014 * uses the |'noswapfile'| option (requires {{{2
- vim 7.4 with patch 213)
- * (Enno Nagel) turn |'rnu'| off in netrw
- buffers.
- * (Quinn Strahl) suggested that netrw
- allow regular window splitting to occur,
- thereby allowing |'equalalways'| to take
- effect.
- * (qingtian zhao) normally, netrw will
- save and restore the |'fileformat'|;
- however, sometimes that isn't wanted
- Apr 14, 2014 * whenever netrw marks a buffer as ro,
- it will also mark it as nomod.
- Apr 16, 2014 * sftp protocol now supported by
- netrw#Obtain(); this means that one
- may use "mc" to copy a remote file
- to a local file using sftp, and that
- the |netrw-O| command can obtain remote
- files via sftp.
- * added [count]C support (see |netrw-C|)
- Apr 18, 2014 * when |g:netrw_chgwin| is one more than
- the last window, then vertically split
- the last window and use it as the
- chgwin window.
- May 09, 2014 * SavePosn was "saving filename under cursor"
- from a non-netrw window when using :Rex.
- v151: Jan 22, 2014 * extended :Rexplore to return to buffer {{{2
- prior to Explore or editing a directory
- * (Ken Takata) netrw gave error when
- clipboard was disabled. Sol'n: Placed
- several if has("clipboard") tests in.
- * Fixed ftp://X@Y@Z// problem; X@Y now
- part of user id, and only Z is part of
- hostname.
- * (A Loumiotis) reported that completion
- using a directory name containing spaces
- did not work. Fixed with a retry in
- netrw#Explore() which removes the
- backslashes vim inserted.
- Feb 26, 2014 * :Rexplore now records the current file
- using w:netrw_rexfile when returning via
- |:Rexplore|
- Mar 08, 2014 * (David Kotchan) provided some patches
- allowing netrw to work properly with
- windows shares.
- * Multiple one-liner help messages available
- by pressing <cr> while atop the "Quick
- Help" line
- * worked on ShellCmdPost, FocusGained event
- handling.
- * |:Lexplore| path: will be used to update
- a left-side netrw browsing directory.
- Mar 12, 2014 * |netrw-s-cr|: use <s-cr> to close
- tree directory implemented
- Mar 13, 2014 * (Tony Mechylynck) reported that using
- the browser with ftp on a directory,
- and selecting a gzipped txt file, that
- an E19 occurred (which was issued by
- gzip.vim). Fixed.
- Mar 14, 2014 * Implemented :MF and :MT (see |netrw-:MF|
- and |netrw-:MT|, respectively)
- Mar 17, 2014 * |:Ntree| [dir] wasn't working properly; fixed
- Mar 18, 2014 * Changed all uses of set to setl
- Mar 18, 2014 * Commented the netrw_btkeep line in
- s:NetrwOptionSave(); the effect is that
- netrw buffers will remain as |'bt'|=nofile.
- This should prevent swapfiles being created
- for netrw buffers.
- Mar 20, 2014 * Changed all uses of lcd to use s:NetrwLcd()
- instead. Consistent error handling results
- and it also handles Window's shares
- * Fixed |netrw-d| command when applied with ftp
- * https: support included for netrw#NetRead()
- v150: Jul 12, 2013 * removed a "keepalt" to allow ":e #" to {{{2
- return to the netrw directory listing
- Jul 13, 2013 * (Jonas Diemer) suggested changing
- a <cWORD> to <cfile>.
- Jul 21, 2013 * (Yuri Kanivetsky) reported that netrw's
- use of mkdir did not produce directories
- following the user's umask.
- Aug 27, 2013 * introduced |g:netrw_altfile| option
- Sep 05, 2013 * s:Strlen() now uses |strdisplaywidth()|
- when available, by default
- Sep 12, 2013 * (Selyano Baldo) reported that netrw wasn't
- opening some directories properly from the
- command line.
- Nov 09, 2013 * |:Lexplore| introduced
- * (Ondrej Platek) reported an issue with
- netrw's trees (P15). Fixed.
- * (Jorge Solis) reported that "t" in
- tree mode caused netrw to forget its
- line position.
- Dec 05, 2013 * Added <s-leftmouse> file marking
- (see |netrw-mf|)
- Dec 05, 2013 * (Yasuhiro Matsumoto) Explore should use
- strlen() instead s:Strlen() when handling
- multibyte chars with strpart()
- (ie. strpart() is byte oriented, not
- display-width oriented).
- Dec 09, 2013 * (Ken Takata) Provided a patch; File sizes
- and a portion of timestamps were wrongly
- highlighted with the directory color when
- setting `:let g:netrw_liststyle=1` on Windows.
- * (Paul Domaskis) noted that sometimes
- cursorline was activating in non-netrw
- windows. All but one setting of cursorline
- was done via setl; there was one that was
- overlooked. Fixed.
- Dec 24, 2013 * (esquifit) asked that netrw allow the
- /cygdrive prefix be a user-alterable
- parameter.
- Jan 02, 2014 * Fixed a problem with netrw-based ballon
- evaluation (ie. netrw#NetrwBaloonHelp()
- not having been loaded error messages)
- Jan 03, 2014 * Fixed a problem with tree listings
- * New command installed: |:Ntree|
- Jan 06, 2014 * (Ivan Brennan) reported a problem with
- |netrw-P|. Fixed.
- Jan 06, 2014 * Fixed a problem with |netrw-P| when the
- modified file was to be abandoned.
- Jan 15, 2014 * (Matteo Cavalleri) reported that when the
- banner is suppressed and tree listing is
- used, a blank line was left at the top of
- the display. Fixed.
- Jan 20, 2014 * (Gideon Go) reported that, in tree listing
- style, with a previous window open, that
- the wrong directory was being used to open
- a file. Fixed. (P21)
- v149: Apr 18, 2013 * in wide listing format, now have maps for {{{2
- w and b to move to next/previous file
- Apr 26, 2013 * one may now copy files in the same
- directory; netrw will issue requests for
- what names the files should be copied under
- Apr 29, 2013 * Trying Benzinger's problem again. Seems
- that commenting out the BufEnter and
- installing VimEnter (only) works. Weird
- problem! (tree listing, vim -O Dir1 Dir2)
- May 01, 2013 * :Explore ftp://... wasn't working. Fixed.
- May 02, 2013 * introduced |g:netrw_bannerbackslash| as
- requested by Paul Domaskis.
- Jul 03, 2013 * Explore now avoids splitting when a buffer
- will be hidden.
- v148: Apr 16, 2013 * changed Netrw's Style menu to allow direct {{{2
- choice of listing style, hiding style, and
- sorting style
- ==============================================================================
- 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 <NcampObell@SdrPchip.AorgM-NOSPAM>
- 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:noet:norl:fdm=marker
|