diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-10-31 19:28:24 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-31 19:28:24 +0800 |
commit | 0ab4d362549399c79f662ca635839dafe6c974db (patch) | |
tree | 81a069b2eb7c63c5bc85c37f3177ebc6d72bfc55 /runtime/doc | |
parent | 0a1eeb90cb9a71c0790be2963c8ea054f2b1651b (diff) | |
parent | 9f79360b92a9dde223b428a84e340152bd6491f7 (diff) | |
download | rneovim-0ab4d362549399c79f662ca635839dafe6c974db.tar.gz rneovim-0ab4d362549399c79f662ca635839dafe6c974db.tar.bz2 rneovim-0ab4d362549399c79f662ca635839dafe6c974db.zip |
Merge pull request #31008 from zeertzjq/vim-3d7e567
vim-patch: netrw fixes
Diffstat (limited to 'runtime/doc')
-rw-r--r-- | runtime/doc/pi_netrw.txt | 108 |
1 files changed, 83 insertions, 25 deletions
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt index 7fc7d4140a..ccc899cd6d 100644 --- a/runtime/doc/pi_netrw.txt +++ b/runtime/doc/pi_netrw.txt @@ -1465,48 +1465,106 @@ 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 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: > +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) + * hitting gx with the cursor atop the file path or alternatively x + in a netrw buffer; the former can be disabled by defining the + |g:netrw_nogx| variable + * when in command line, typing :Open <path>, see |:Open| below. -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 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. - -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 +special handler will use. Normally gx checks for a close-by URL or file name +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. +The selection function can be adapted for each filetype by adding a function +`Netrw_get_URL_<filetype>`, where <filetype> is given by the 'filetype'. +The function should return the URL or file name to be used by gx, and will +fall back to the default behavior if it returns an empty string. +For example, special handlers for links Markdown and HTML are + +" make gx work on concealed links regardless of exact cursor position: > + + function Netrw_get_URL_markdown() + " markdown URL such as [link text](http://ya.ru 'yandex search') + try + let save_view = winsaveview() + if searchpair('\[.\{-}\](', '', ')\zs', 'cbW', '', line('.')) > 0 + return matchstr(getline('.')[col('.')-1:], + \ '\[.\{-}\](\zs' .. g:netrw_regex_url .. '\ze\(\s\+.\{-}\)\?)') + endif + finally + call winrestview(save_view) + return '' + endtry + endfunction + + function Netrw_get_URL_html() + " HTML URL such as <a href='http://www.python.org'>Python is here</a> + " <a href="http://www.python.org"/> + try + let save_view = winsaveview() + if searchpair('<a\s\+href=', '', '\%(</a>\|/>\)\zs', 'cbW', '', line('.')) > 0 + return matchstr(getline('.')[col('.') - 1 : ], + \ 'href=["'.."'"..']\?\zs\S\{-}\ze["'.."'"..']\?/\?>') + endif + finally + call winrestview(save_view) + return '' + endtry + endfunction +< +Other than a file path, the text under the cursor may be a URL. Netrw uses +by default the following regular expression to determine if the text under the +cursor is a URL: +> + :let g:netrw_regex_url = '\%(\%(http\|ftp\|irc\)s\?\|file\)://\S\{-}' +< 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 +OPENING FILES AND LAUNCHING APPS *netrw-gx* *:Open* *:Launch* {{{2 + +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>): + If the viewer you wish to use does not support handling of a remote URL + directory, set |g:netrw_browsex_support_remote| to 0. + * otherwise: + + * for Windows : explorer.exe is used + * for Mac OS X : open is used. + * for Linux : xdg-open is used. + +To open a path (or URL) <path> by the appropriate handler, type > + + :Open <path> +< +No escaping, neither for the shell nor for Vim's command-line, is needed. + +To launch a specific application <app> <args>, often <args> being <path> > + + :Launch <app> <args>. + +Since <args> can be arbitrarily complex, in particular contain many file +paths, the escaping is left to the user. + +If you disabled the netrw plugin by setting g:loaded_netrwPlugin (see +|netrw-noload|), then you can use > + + :call netrw#Launch('<app> <args>') + :call netrw#Open('<path>') +< *netrw-curdir* DELETING BOOKMARKS *netrw-mB* {{{2 |