Pi_netrw

Nvim :help 页面,生成源代码 使用 tree-sitter-vimdoc 解析器。


------------------------------------------------ NETRW 参考手册 作者:Charles E. Campbell ------------------------------------------------ 作者:Charles E. Campbell <[电子邮件保护]>(请先从 Campbell 的电子邮件中删除 NOSPAM)
版权:版权所有 (C) 2017 Charles E Campbell VIM 许可证适用于此软件包中的文件,包括 netrw.vim、pi_netrw.txt、netrwFileHandlers.vim、netrwSettings.vim 和 syntax/netrw.vim。与其他任何免费软件一样,netrw.vim 及其关联文件按“原样”提供,不附带任何形式的明示或暗示保证。不保证适销性。不保证适合任何特定目的。通过使用此插件,您同意在任何情况下,版权持有者均不对使用此软件造成的任何损害负责。使用风险自负!

1. 内容 netrw-contents {{{1

1. 内容..............................................|netrw-contents| 2. 使用 Netrw 的开始...................................|netrw-start| 3. Netrw 参考.......................................|netrw-ref| 外部应用程序和协议.................|netrw-externapp| 读取.............................................|netrw-read| 写入.............................................|netrw-write| 源代码............................................|netrw-source| 目录列表...................................|netrw-dirlist| 更改用户 ID 和密码....................|netrw-chgup| 变量和设置..............................|netrw-variables| 路径...............................................|netrw-path| 4. 面向网络的文件传输........................|netrw-xfer| NETRC...............................................|netrw-netrc| 密码............................................|netrw-passwd| 5. 激活............................................|netrw-activate| 6. 透明远程文件编辑.......................|netrw-transparent| 7. Ex 命令...........................................|netrw-ex| 8. 变量和选项.................................|netrw-variables| 9. 浏览..............................................|netrw-browse| 浏览简介............................|netrw-intro-browse| 快速参考:映射...............................|netrw-browse-maps| 快速参考:命令...........................|netrw-browse-cmds| 横幅显示......................................|netrw-I| 标记目录.............................|netrw-mb| 浏览............................................|netrw-cr| 压缩当前树形列表目录........|netrw-s-cr| 使用水平分割窗口浏览...........|netrw-o| 使用新标签页浏览.............................|netrw-t| 使用垂直分割窗口浏览.............|netrw-v| 更改列表样式(细、宽、长树)..........|netrw-i| 更改为已标记的目录..................|netrw-gb| 快速隐藏/显示点文件......................|netrw-gh| 更改仅本地文件权限.................|netrw-gp| 更改为前序目录.................|netrw-u| 更改为后继目录...................|netrw-U| 使用特殊处理程序自定义浏览.........|netrw-x| 删除书签..................................|netrw-mB| 删除文件或目录.......................|netrw-D| 目录浏览命令........................|netrw-explore| 使用星号和模式浏览...................|netrw-star| 显示有关文件的信息...................|netrw-qf| 编辑文件或目录隐藏列表..................|netrw-ctrl-h| 编辑排序序列........................|netrw-S| 强制视为文件或目录............|netrw-gd| netrw-gf 上移............................................|netrw--| 隐藏文件或目录.........................|netrw-a| 改进浏览..................................|netrw-ssh-hack| 列出书签和历史记录.......................|netrw-qb| 创建新目录..............................|netrw-d| 将浏览目录设置为当前目录.|netrw-cd| 标记文件.......................................|netrw-mf| 取消标记文件.....................................|netrw-mF| 通过位置列表标记文件......................|netrw-qL| 通过 QuickFix 列表标记文件......................|netrw-qF| 通过正则表达式标记文件.................|netrw-mr| 标记文件:任意 shell 命令...............|netrw-mx| 标记文件:任意 shell 命令,整块......|netrw-mX| 标记文件:任意 Vim 命令.................|netrw-mv| 标记文件:参数列表.........................|netrw-ma| netrw-mA 标记文件:缓冲区列表...........................|netrw-cb| netrw-cB 标记文件:压缩和解压缩.........|netrw-mz| 标记文件:复制...............................|netrw-mc| 标记文件:差异..................................|netrw-md| 标记文件:编辑...............................|netrw-me| 标记文件:Grep..................................|netrw-mg| 标记文件:通过后缀隐藏和显示.........|netrw-mh| 标记文件:移动................................|netrw-mm| 标记文件:源代码..............................|netrw-ms| 标记文件:设置目标目录..........|netrw-mt| 标记文件:标记...............................|netrw-mT| 标记文件:使用书签设置目标目录......|netrw-Tb| 标记文件:使用历史记录设置目标目录........|netrw-Th| 标记文件:取消标记.............................|netrw-mu| Netrw 浏览器变量.............................|netrw-browser-var| Netrw 浏览和选项的不兼容性.........|netrw-incompatible| Netrw 设置窗口...............................|netrw-settings-window| 获取文件....................................|netrw-O| 预览窗口......................................|netrw-p| 上一个窗口.....................................|netrw-P| 刷新列表..............................|netrw-ctrl-l| 反转排序顺序.............................|netrw-r| 重命名文件或目录.......................|netrw-R| 选择排序样式.............................|netrw-s| 设置编辑窗口..............................|netrw-C| 10. 问题和解决方法....................................|netrw-problems| 11. 调试 Netrw 本身................................|netrw-debug| 12. 历史记录...............................................|netrw-history| 13. 待办事项..................................................|netrw-todo| 14. 致谢...............................................|netrw-credits|

2. 使用 Netrw 的开始 netrw-start {{{1

Netrw 使得读取文件、写入文件、浏览网络和本地浏览变得容易!首先,确保已启用插件,因此您需要在您的 <.vimrc> 中至少包含以下内容:(或参见 netrw-activate)
set nocp                    " 'compatible' is not set
filetype plugin on          " plugins are enabled
Netrw 支持使用 url 对其他机器上的文件进行“透明”编辑(参见 netrw-transparent)。例如,假设您在另一台机器上有一个帐户;如果您可以使用 scp,请尝试
vim scp://hostname/path/to/file
想要使 ssh/scp 更易于使用吗?查看 netrw-ssh-hack
那么,如果您有 ftp,而不是 ssh/scp 呢?也很简单;请尝试
vim ftp://hostname/path/to/file
想要使 ftp 更易于使用吗?看看您的 ftp 是否支持名为
.netrc> -- 通常它位于您的主目录中,只有用户可以读取(即,不是组、世界、其他等),并且包含类似于
machine HOSTNAME login USERID password "PASSWORD"
machine HOSTNAME login USERID password "PASSWORD"
...
default          login USERID password "PASSWORD"
Windows 的 ftp 不支持 .netrc;但是,用户可以在其 .vimrc 中有
let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\MyUserName\MACHINE'
Netrw 会将主机名替换为它尝试打开的 URL 中的“MACHINE”,因此用户可以指定
userid
password
每个站点在一个单独的文件中:c:\Users\MyUserName\MachineName。
现在谈谈浏览 -- 当您只是想在编辑文件之前浏览一下周围。要浏览当前主机,只需“编辑”目录
vim .
vim /home/userid/path
要浏览远程主机,请“编辑”目录(但要确保目录名称后跟“/”)
vim scp://hostname/
vim ftp://hostname/path/to/dir/
有关更多信息,请参见 netrw-browse
netrw 支持的协议不仅仅是 scp 和 ftp:参见下一节,netrw-externapp,了解如何将这些外部应用程序与 netrw 和 vim 结合使用。

防止加载 netrw-noload

如果您想使用插件,但出于某种原因不想使用 netrw,那么您需要避免加载 netrw 的插件部分和自动加载部分。您可以在 <.vimrc> 中添加以下两行来实现这一点
:let g:loaded_netrw       = 1
:let g:loaded_netrwPlugin = 1

3. Netrw 参考 netrw-ref {{{1

除了 netrw-start 中提到的 scp 和 ftp 之外,Netrw 还支持多种协议。这些协议包括 dav、fetch、http,... 嗯,只需查看 netrw-externapp 中的列表。每个协议都与一个变量关联,该变量保存支持该协议的默认命令。

外部应用程序和协议 netrw-externapp {{{2

协议 变量 默认值 -------- ---------------- ------------- dav: g:netrw_dav_cmd = "cadaver" 如果 cadaver 可执行 dav: g:netrw_dav_cmd = "curl -o" 否则,如果 curl 可用 fetch: g:netrw_fetch_cmd = "fetch -o" 如果 fetch 可用 ftp: g:netrw_ftp_cmd = "ftp" http: g:netrw_http_cmd = "elinks" 如果 elinks 可用 http: g:netrw_http_cmd = "links" 否则,如果 links 可用 http: g:netrw_http_cmd = "curl" 否则,如果 curl 可用 http: g:netrw_http_cmd = "wget" 否则,如果 wget 可用 http: g:netrw_http_cmd = "fetch" 否则,如果 fetch 可用 http: g:netrw_http_put_cmd = "curl -T" rcp: g:netrw_rcp_cmd = "rcp" rsync: g:netrw_rsync_cmd = "rsync" (参见 g:netrw_rsync_sep) scp: g:netrw_scp_cmd = "scp -q" sftp: g:netrw_sftp_cmd = "sftp" file: g:netrw_file_cmd = "elinks" 或 "links"
g:netrw_http_xcmd : http://.. 协议的选项字符串是通过此变量指定的,并且可以独立覆盖。默认情况下,http 处理命令的选项参数为
elinks : "-source >"
links  : "-dump >"
curl   : "-L -o"
wget   : "-q -O"
fetch  : "-o"
例如,如果您的系统上有 elinks,而您希望使用尝试呈现文本的方式查看页面,则可能希望在
let g:netrw_http_xcmd= "-dump >"
您的 .vimrc 中。
g:netrw_http_put_cmd: 此选项指定可执行文件和任何需要的选项。此命令对 URL 执行 PUT 操作。
通常,您可以将 URL 符号与常规编辑命令一起使用,例如
:e ftp://[user@]machine/path
Netrw 还提供 Nread 命令
:Nread ? 提供帮助 :Nread "machine:path" 使用 rcp :Nread "machine path" 使用 ftp w/ <.netrc> :Nread "machine id password path" 使用 ftp :Nread "dav://machine[:port]/path" 使用 cadaver :Nread "fetch://[user@]machine/path" 使用 fetch :Nread "ftp://[user@]machine[[:#]port]/path" 使用 ftp w/ <.netrc> :Nread "http://[user@]machine/path" 使用 http 使用 wget :Nread "rcp://[user@]machine/path" 使用 rcp :Nread "rsync://[user@]machine[:port]/path" 使用 rsync :Nread "scp://[user@]machine[[:#]port]/path" 使用 scp :Nread "sftp://[user@]machine/path" 使用 sftp
您可以将 URL 符号与常规文件写入命令一起使用,例如
:w ftp://[user@]machine/path
Netrw 还提供 Nwrite 命令
:Nwrite ? 帮助 :Nwrite "machine:path" 使用 rcp :Nwrite "machine path" 使用 ftp w/ <.netrc> :Nwrite "machine id password path" 使用 ftp :Nwrite "dav://machine[:port]/path" 使用 cadaver :Nwrite "ftp://[user@]machine[[:#]port]/path" 使用 ftp w/ <.netrc> :Nwrite "rcp://[user@]machine/path" 使用 rcp :Nwrite "rsync://[user@]machine[:port]/path" 使用 rsync :Nwrite "scp://[user@]machine[[:#]port]/path" 使用 scp :Nwrite "sftp://[user@]machine/path" 使用 sftp http: 不支持!

源代码 netrw-source {{{2

可以使用 URL 语法与普通的源代码命令,例如
:so ftp://[user@]machine/path
Netrw 也提供 Nsource 命令
:Nsource ? 帮助 :Nsource "dav://machine[:port]/path" 使用 cadaver :Nsource "fetch://[user@]machine/path" 使用 fetch :Nsource "ftp://[user@]machine[[:#]port]/path" 使用 ftp w/ <.netrc> :Nsource "http://[user@]machine/path" 使用 http 使用 wget :Nsource "rcp://[user@]machine/path" 使用 rcp :Nsource "rsync://[user@]machine[:port]/path" 使用 rsync :Nsource "scp://[user@]machine[[:#]port]/path" 使用 scp :Nsource "sftp://[user@]machine/path" 使用 sftp
可以通过尝试编辑目录来浏览目录并获取列表
:e scp://[user]@hostname/path/
:e ftp://[user]@hostname/path/
对于远程目录列表(例如使用 scp 或 ftp),尾部的 "/" 是必要的(斜线告诉 netrw 将参数视为要浏览的目录,而不是要下载的文件)。
Nread 命令也可以用于实现此功能(同样,尾部的斜线是必要的)
:Nread [protocol]://[user]@hostname/path/
netrw-login netrw-password

更改用户 ID 和密码 netrw-chgup netrw-userpass {{{2

尝试使用 ftp 会提示您输入用户 ID 和密码。这些信息将保存在全局变量 g:netrw_uids:netrw_passwd 中;后续使用 ftp 将会重新使用这两个字符串,从而简化 ftp 的使用。但是,如果您需要使用不同的用户 ID 和/或密码,则需要先调用 NetUserPass()。要绕过输入密码的需要,请检查您的 ftp 是否支持主目录中的 <.netrc> 文件。另请参阅 netrw-passwd(如果您使用的是 ssh/scp 并希望找出如何避免为 scp 输入密码,请查看 netrw-ssh-hack)。
:NetUserPass [uid [password]] -- 按需提示 :call NetUserPass() -- 提示输入 uid 和密码 :call NetUserPass("uid") -- 提示输入密码 :call NetUserPass("uid","password") -- 设置全局 uid 和密码

NETRW 变量和设置 netrw-variables {{{2

(另请参阅: netrw-browser-var : netrw 浏览器选项变量 netrw-protocol : 文件传输协议选项变量 netrw-settings : 额外的文件传输选项 netrw-browser-options : 这些选项影响浏览目录)
Netrw 提供了许多变量,允许您根据自己的偏好定制 netrw。查看它们的一种方法是通过命令 :NetrwSettings(参见 netrw-settings),它将显示您当前的 netrw 设置。大多数此类设置在下面、netrw-browser-optionsnetrw-externapp 中有描述
b:netrw_lastfile 上一次网络读取/写入文件,保留在每个缓冲区基础上(支持纯 :Nw)
g:netrw_bufsettings netrw 缓冲区的设置(默认)noma nomod nonu nowrap ro nobl
g:netrw_chgwin 指定一个窗口号,后续文件编辑将在该窗口中进行。(另请参阅 netrw-C)(默认)-1
g:Netrw_funcref 指定一个函数(或多个函数),当 netrw 编辑文件时调用。首先编辑文件,然后调用函数引用 (Funcref)。此变量也可以保存一个 List 的 Funcrefs。(默认)未定义。(g:Netrw... 中的大写字母是必需的,因为它保存的是函数引用)
Example: place in .vimrc; affects all file opening
fun! MyFuncRef()
endfun
let g:Netrw_funcref= function("MyFuncRef")
g:Netrw_UserMaps 指定一个函数或 List 函数,可用于设置用户指定的映射和功能。见 netrw-usermaps
g:netrw_ftp 如果不存在,则使用默认 ftp =0 使用默认 ftp (uid password) =1 使用备用 ftp 方法 (user uid password) 如果您在使用 ftp 时遇到问题,请尝试更改此变量的值,看看备用 ftp 方法是否适用于您的设置。
g:netrw_ftp_options 默认情况下选择,这些选项应该关闭交互式提示,并限制 ftp 在初始连接时尝试自动登录。但是,似乎并非所有 ftp 实现都支持此选项(例如 ncftp)。="-i -n"
g:netrw_ftpextracmd 默认: 不存在 如果此变量存在,则其中包含的任何字符串都将被放置到您 ftp 客户端的命令集中。例如: ="passive"
g:netrw_ftpmode ="binary" (默认) ="ascii"
g:netrw_ignorenetrc =0 (linux、cygwin 的默认值) =1 如果您有一个 <.netrc> 文件,但它不起作用,并且您希望忽略它,则将此变量设置为如上所示。(Windows + cmd.exe 的默认值)
g:netrw_menu =0 禁用 netrw 的菜单 =1 (默认) 启用 netrw 的菜单
g:netrw_nogx 如果此变量存在,则 "gx" 映射将不可用(参见 netrw-gx
g:netrw_uid (ftp) 用户 ID,保留在每个 vim 会话基础上 s:netrw_passwd (ftp) 密码,保留在每个 vim 会话基础上
g:netrw_preview =0 (默认) 预览窗口显示在水平分割的窗口中 =1 预览窗口显示在垂直分割的窗口中。同样,它也会以相同的方式影响 "上一个窗口"(参见 netrw-P)。g:netrw_alto 变量可用于提供额外的分割控制: g:netrw_preview g:netrw_alto 结果 0 0 :aboveleft 0 1 :belowright 1 0 :topleft 1 1 :botright 要控制大小,请参见 g:netrw_winsize
g:netrw_scpport = "-P" : 用于为 scp 设置端口的选项 g:netrw_sshport = "-p" : 用于为 ssh 设置端口的选项
g:netrw_sepchr =\0xff =\0x01 对于 enc == euc-jp(也许也应该用于其他情况,请告诉我)在内部将优先级代码与文件名分开。见 netrw-p12
g:netrw_silent =0 : 正常完成传输 =1 : 静默完成传输
g:netrw_use_errorwindow =2: 来自 netrw 的消息将使用弹出窗口 移动鼠标并暂停以删除弹出窗口。=1 : 来自 netrw 的消息将使用一个单独的单行窗口。此窗口提供可靠的消息传递。=0 : (默认) 来自 netrw 的消息将使用 echoerr;消息似乎并不总是以这种方式显示,但您不必退出窗口。
g:netrw_cygwin =1 假设 Windows 下的 scp 来自 cygwin。还允许网络浏览使用带有时间和大小排序的 ls(如果使用 Windows,则为默认值) =0 假设 Windows 的 scp 接受 Windows 风格的路径 网络浏览使用 dir 而不是 ls 如果您使用的是 unix,则忽略此选项
g:netrw_use_nt_rcp =0 不要使用 WinNT、Win2000 和 WinXP 的 rcp =1 以二进制模式使用 WinNT 的 rcp(默认值)

路径 netrw-path {{{2

对于大多数协议,文件路径通常是相对于用户目录的。但是,某些协议可能会将路径相对于某个关联目录。例如,
example:  vim scp://user@host/somefile
example:  vim scp://user@host/subdir1/subdir2/somefile
其中 "somefile" 在 "user" 的主目录中。如果您希望使用根相关的路径获取文件,请使用完整路径
example:  vim scp://user@host//somefile
example:  vim scp://user@host//subdir1/subdir2/somefile

4. 面向网络的文件传输 netrw-xfer {{{1

Vim 下的面向网络的文件传输由一个 vim 脚本 (<netrw.vim>) 使用插件技术实现。它目前支持使用 rcp、scp、ftp 或 ftp+<.netrc>、scp、fetch、dav/cadaver、rsync 或 sftp 通过网络读取和写入。
http 目前通过使用 wget 或 fetch 支持只读。
<netrw.vim> 是一个标准插件,充当 Vim 与各种文件传输程序之间的粘合剂。它使用 autocommand 事件(BufReadCmd、FileReadCmd、BufWriteCmd)来拦截带有 url 风格文件名的读取/写入。
ex. vim ftp://hostname/path/to/file
冒号之前的字符指定要使用的协议;在这个例子中,它是 ftp。然后,<netrw.vim> 脚本将制定一个命令或一系列命令(通常是 ftp),它将这些命令发布到一个外部程序(ftp、scp 等),该程序负责实际的文件传输/协议。文件从一个临时文件读取/写入(在 Unix/Linux 下,/tmp/...),<netrw.vim> 脚本将清理这些文件。
现在,谈谈 Jan Minář 的“FTP 用户名和密码泄露”;首先,ftp 不是一个安全的协议。用户名和密码通过互联网“明文”传输;任何嗅探工具都可以获取这些信息;这不是 netrw 的问题,而是 ftp 的问题。如果您担心这个问题,请尝试使用 scp 或 sftp 代替。
Netrw 在同一个 vim 会话中以及远程主机名保持不变的情况下会重复使用用户 ID 和密码。
Jan 似乎对 netrw 如何处理 ftp 有点困惑;通常,在一个“ftp 会话”中执行多个命令,他似乎认为 uid/密码应该只在一个 ftp 会话中保留。但是,netrw 在每个“ftp 会话”中执行所有 ftp 操作;因此,仅记住一个“ftp 会话”的 uid/密码就相当于根本不记住 uid/密码。恕我直言,当用户浏览远程目录时,这将很快变得令人厌烦。
另一方面,感谢 Jan M. 指出了 netrw(以及 vim 本身)在处理“精心制作”的文件名时存在许多漏洞。shellescape()fnameescape() 函数是由 Bram Moolenaar 为了解决这类问题而编写的,netrw 已经修改为使用它们。不过,我的建议是,如果“文件名”看起来像你不希望执行的 vim 命令,就不要打开它。
netrw-putty netrw-pscp netrw-psftp 可以通过设置一个变量来修改任何协议的实现外部应用程序(例如,scp 使用变量 g:netrw_scp_cmd,默认为“scp -q”)。例如,考虑使用 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"'
(注意: 据报道,windows 7 与 putty v0.6 的“-batch”选项不起作用,所以最好为该系统关闭它)
有关 putty、pscp、psftp 等的更多信息,请参见 netrw-p8
FTP 是一种古老的协议,但有许多实现方式。不幸的是,一些实现方式比较“吵闹”(即在文件末尾添加垃圾信息)。因此,有顾虑的用户可以选择编写一个 NetReadFixup() 函数,在使用 FTP 读取文件后进行清理。一些 Unix 系统(例如 FreeBSD)提供了一个名为“fetch”的实用程序,它使用 FTP 协议,但不会产生“噪音”,并且比 FTP 更方便,实际上,对于 <netrw.vim> 来说,使用起来更方便。因此,如果“fetch”可用(即可执行),则可以使用它来进行基于 ftp://... 的传输。
对于 rcp、scp、sftp 和 http,可以使用网络文件传输进行透明传输;即
vim rcp://[user@]machine/path
vim scp://[user@]machine/path
如果你的 FTP 支持 <.netrc>,那么如果该文件中存在所需的机器名称、用户 ID 和密码三元组,它也可以被透明地使用。但是,你的 FTP 必须能够自行使用 <.netrc> 文件。
vim ftp://[user@]machine[[:#]portnumber]/path
Windows 提供了一个 FTP(通常是 c:\Windows\System32\ftp.exe),它使用一个选项 -s:filename(filename 可以并且可能应该是一个完整的路径),该选项包含在 FTP 启动时将自动运行的 FTP 命令。你可以使用此功能为一个站点输入用户名和密码
userid
password
netrw-windows-netrc netrw-windows-s 如果 g:netrw_ftp_cmd 包含 -s:[path/]MACHINE,那么(仅在 Windows 机器上)netrw 会将当前机器名称替换为 FTP 连接请求的 MACHINE。因此,可以有多个 machine.ftp 文件,其中包含用于 FTP 的登录和密码。例如
let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE'
vim ftp://myhost.somewhere.net/
将使用一个文件
C:\Users\Myself\myhost.ftp
通常,FTP 需要查询用户以获取用户 ID 和密码。后者将“静默”进行;即,将显示星号而不是实际键入的密码。Netrw 将保留最近一次传输的用户 ID 和密码,以便随后对该机器进行的后续传输(读/写)将无需额外的提示。
netrw-urls
+=================================+============================+============+ | 读取 | 写入 | 使用 | +=================================+============================+============+ | 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 | 不可用 | fetch | | :Nread fetch://[user@]host/path| | | +---------------------------------+----------------------------+------------+ | FILE: | | | | file:///* | file:///* | | | file://127.0.0.1/* | file://127.0.0.1/* | | +---------------------------------+----------------------------+------------+ | 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 可执行: (*4) | | | | http://[user@]host/path | 不可用 | wget | +---------------------------------+----------------------------+------------+ | HTTP: fetch 可执行 (*4) | | | | http://[user@]host/path | 不可用 | 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) 对于绝对路径,请使用 scp://machine//path。
(*2) 如果存在 <.netrc>,则假定它将与你的 FTP 客户端配合使用。否则,脚本将提示输入用户 ID 和密码。
(*3) 对于 FTP,“machine”可以是 machine#port 或 machine:port,如果需要使用与标准 FTP 端口不同的端口。
(*4) 对于 http:...,,如果 wget 可用,它将被使用。否则,如果 fetch 可用,它将被使用。
:Nread 和 :Nwrite 两种 ex-命令都可以接受多个文件名。
<.netrc> 文件通常位于你的主目录中,其中包含将主机名(机器名称)映射到你希望与其一起使用的用户 ID 和密码的行。
<.netrc> 文件中行的典型语法如下所示。Unix 下的 FTP 通常支持 <.netrc>;Windows 下的 FTP 通常不支持。
machine {full machine name} login {user-id} password "{password}"
default login {user-id} password "{password}"
你的 FTP 客户端必须自行处理 <.netrc> 的使用,但如果
.netrc> 文件存在,FTP 传输不会询问用户 ID 或密码。
注意:由于此文件包含密码,请务必确保其他人无法读取此文件!大多数程序会拒绝使用对其他人可读的 .netrc。不要忘记系统管理员仍然可以读取该文件!例如,对于 Linux/Unix:chmod 600 .netrc
即使 Windows 的 FTP 客户端通常不支持 .netrc,netrw 也提供了一种变通方法:请参见 netrw-windows-s

PASSWORD netrw-passwd

该脚本尝试使用 inputsecret()(一个内置的 Vim 函数)以不可见的方式获取 FTP 的密码。有关如何在设置密码后更改密码的信息,请参见 netrw-userpass
不幸的是,netrw 似乎无法将密码传递给 scp。因此,每次通过 scp 进行传输都需要重新输入密码。但是,netrw-ssh-hack 可以帮助解决这个问题。

5. 激活 netrw-activate {{{1

只要 Vim 的 'nocompatible' 模式启用,网络文件传输默认可用。Netrw 的脚本文件位于系统的 plugin、autoload 和 syntax 目录中;只要你启动 vim,就会自动加载 plugin/netrwPlugin.vim 脚本。autoload/netrw.vim 中的主要脚本仅在你实际使用 netrw 时才会加载。我建议你至少在你的 <.vimrc> 自定义文件中包含以下内容
set nocp
if version >= 600
  filetype plugin indent on
endif
此外,在你的 .vimrc 文件中包含以下行,你可以在使用 [g]vim 时无需任何文件名,显示当前目录时立即激活 netrw
" Augroup VimStartup:
augroup VimStartup
  au!
  au VimEnter * if expand("%") == "" | e . | endif
augroup END

6. 透明远程文件编辑 netrw-transparent {{{1

只要进行常规文件读写(通过 :autocmdBufReadCmdBufWriteCmdSourceCmd 事件调用),就会发生透明文件传输。因此,你可以像操作本地文件一样轻松地读取、写入或源代码网络上的文件!
vim ftp://[user@]machine/path
...
:wq
有关如何鼓励你的 vim 使用 netrw 等插件的更多信息,请参见 netrw-activate
要无密码使用 scp:,请参见 netrw-ssh-hack

7. Ex 命令 netrw-ex {{{1

支持通常的读写命令。还有一些额外的命令可用。通常,你不需要像 netrw-transparent 中所示的那样使用 Nwrite 或 Nread(即,只需使用
:e URL
:r URL
:w URL
代替,视情况而定)——请参见 netrw-urls。在以下解释中,{netfile} 是指向远程文件的 URL。
:Nwrite :Nw :[range]Nw[rite] 将指定行写入 b:netrw_lastfile 中指定的当前文件。(相关:netrw-nwrite
:[range]Nw[rite] {netfile} [{netfile}]... 将指定行写入 {netfile}
:Nread :Nr :Nr[ead] 将 b:netrw_lastfile 中指定的文件中的行读入当前缓冲区。(相关:netrw-nread
:Nr[ead] {netfile} {netfile}... 在当前行之后读取 {netfile}
:Nsource :Ns :Ns[ource] {netfile} 源代码 {netfile}。要使用远程 .vimrc 启动 vim,可以使用以下方法(所有内容都在一行上)(感谢 Antoine Mechelynck)
vim -u NORC -N
 --cmd "runtime plugin/netrwPlugin.vim"
 --cmd "source scp://HOSTNAME/.vimrc"
(相关:netrw-source)
:call NetUserPass() NetUserPass()
如果 g:netrw_uid 和 s:netrw_passwd 不存在,此函数将查询用户以获取它们。(相关:netrw-userpass
:call NetUserPass("userid") 此调用将设置 g:netrw_uid,如果密码不存在,则将查询用户以获取密码。(相关:netrw-userpass
:call NetUserPass("userid","passwd") 此调用将设置 g:netrw_uid 和 s:netrw_passwd。用户 ID 和密码由 FTP 传输使用。你可以使用空字符串(即 "")有效地删除用户 ID 和密码。(相关:netrw-userpass
:NetrwSettings 此命令在 netrw-settings 中有描述——用于显示 netrw 设置并更改 netrw 行为。

8. 变量和选项 netrw-var netrw-settings {{{1

<netrw.vim> 脚本提供了多个变量,它们充当选项,影响 <netrw.vim> 的文件传输行为。这些变量通常可以在用户的 <.vimrc> 文件中设置:(另请参见 netrw-settings netrw-protocolnetrw-options
                -------------
                Netrw Options
                -------------
Option                        Meaning
--------------                -----------------------------------------------
b:netrw_col 持有当前光标位置(在 NetWrite 期间)g:netrw_cygwin =1 假设 Windows 下的 scp 来自 cygwin(默认/Windows)=0 假设 Windows 下的 scp 接受 Windows 风格的路径(默认/其他)g:netrw_ftp =0 使用默认 FTP(uid 密码)g:netrw_ftpmode ="binary"(默认)="ascii"(你的选择)g:netrw_ignorenetrc =1(默认)如果你有一个 <.netrc> 文件,但你不想使用它,则设置此变量。它仅存在就足以导致忽略 <.netrc>。b:netrw_lastfile 持有最新的方法/机器/路径。b:netrw_line 持有当前行号(在 NetWrite 期间)g:netrw_silent =0 正常完成传输 =1 静默完成传输 g:netrw_uid 持有当前的 FTP 用户 ID。g:netrw_use_nt_rcp =0 不要使用 WinNT/2K/XP 的 rcp(默认)=1 使用 WinNT/2K/XP 的 rcp,二进制模式 -----------------------------------------------------------------------
netrw-internal-variables
该脚本还将在内部临时使用以下变量。
                     -------------------
                     Temporary Variables
                     -------------------
Variable                Meaning
--------                ------------------------------------
b:netrw_method 索引指示 rcp/ftp+.netrc/ftp w:netrw_method(与 b:netrw_method 相同)g:netrw_machine 从输入解析的机器名称 b:netrw_fname 被访问的文件名
------------------------------------------------------------
Netrw 支持多种协议。这些协议使用下面列出的变量调用,用户可以修改。
                       ------------------------
                       Protocol Control Options
                       ------------------------
Option            Type        Setting         Meaning
---------         --------    --------------  ---------------------------
netrw_ftp 变量 =不存在 userid 由 "user userid" 设置 =0 userid 由 "user userid" 设置 =1 userid 由 "userid" 设置 NetReadFixup 函数 =不存在 无改变 =存在 允许用户通过 ftp 自动将文件读取转换为他们希望的任何方式,由 NetReadFixup() 处理 g:netrw_dav_cmd 变量 ="cadaver" 如果 cadaver 可执行 g:netrw_dav_cmd 变量 ="curl -o" 否则如果 curl 可执行 g:netrw_fetch_cmd 变量 ="fetch -o" 如果 fetch 可用 g:netrw_ftp_cmd 变量 ="ftp" g:netrw_http_cmd 变量 ="fetch -o" 如果 fetch 可用 g:netrw_http_cmd 变量 ="wget -O" 否则如果 wget 可用 g:netrw_http_put_cmd 变量 ="curl -T" g:netrw_list_cmd 变量 ="ssh USEPORT HOSTNAME ls -Fa" g:netrw_rcp_cmd 变量 ="rcp" g:netrw_rsync_cmd 变量 ="rsync" g:netrw_rsync_sep 变量 ="/" 用于分隔主机名和文件规范 g:netrw_scp_cmd 变量 ="scp -q" g:netrw_sftp_cmd 变量 ="sftp"
-------------------------------------------------------------------------
g:netrw_..._cmd 选项 (g:netrw_ftp_cmdg:netrw_sftp_cmd) 指定用于处理 ftp 协议的外部程序。它们可能包含命令行选项(如 -p 用于被动模式)。示例
let g:netrw_ftp_cmd= "ftp -p"
浏览通过使用 g:netrw_list_cmd 支持;子字符串 "HOSTNAME" 将通过替换为当前主机名的请求来改变。
两个选项 (g:netrw_ftpnetrw-fixup) 都可以帮助解决某些有问题的 ftp。为了更好地理解如何在 ftp 出现问题时使用这些选项,对 netrw 如何执行 ftp 读取进行了一些讨论。
对于 ftp,netrw 通常在一个临时文件中构建以下格式的几行
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
---------------------------------------------------------------------
Netrw 然后使用过滤器执行上面的几行
:%! {g:netrw_ftp_cmd} -i [-n]
其中 g:netrw_ftp_cmd 通常是 "ftp",-i 告诉 ftp 不要交互 -n 意味着不使用 netrc,用于方法 #3 (没有 <.netrc> 的 ftp)
如果 <.netrc> 存在,它将被用来避免查询用户以获取 userid 和密码。传输的文件被放入一个临时文件。然后将临时文件读入请求它的主编辑会话窗口,并删除临时文件。
如果您的 ftp 不接受 "user" 命令,而是直接要求 userid,请尝试在您的 <.vimrc> 中添加 "let netrw_ftp=1"。
netrw-cadaver
为了处理不受信任服务器的 SSL 证书对话框,您可以下载证书并将其放入 /usr/ssl/cert.pem。此操作将服务器处理渲染为 "受信任"。
netrw-fixup netreadfixup 如果您的 ftp 由于某种原因生成了不需要的行(如 AUTH 消息),您可以编写一个 NetReadFixup() 函数
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
> 如果存在 NetReadFixup() 函数,它将被调用,因此允许您自定义阅读过程。

浏览简介 netrw-intro-browse {{{2

(快速参考: netrw-quickmaps netrw-quickcoms)
Netrw 支持您本地系统和远程主机上目录的浏览;浏览包括列出文件和目录、进入目录、编辑其中的文件、删除文件/目录、创建新目录、移动(重命名)文件和目录、复制文件和目录等。您可以标记文件并对它们执行任何系统命令!Netrw 浏览器通常实现以前资源管理器的映射和命令用于远程目录,尽管细节(如相关的全局变量名称)必然不同。要浏览目录,只需“编辑”它!
vim /your/directory/
vim .
vim c:\your\directory\
Netrw 远程文件和目录浏览器处理两种协议:ssh 和 ftp。url 中的协议,如果是 ftp,会导致 netrw 也在其远程浏览中使用 ftp。指定任何其他协议将导致它用于文件传输;但 ssh 协议将用于执行远程浏览。
要使用 Netrw 的远程目录浏览器,只需尝试读取带有尾部斜杠的“文件”,它将被解释为列出目录的请求
vim [protocol]://[user@]hostname/path/
其中 [协议] 通常是 scp 或 ftp。例如,试试
vim ftp://ftp.home.vim.org/pub/vim/
对于本地目录,不需要尾部斜杠。再次,因为很容易错过:要浏览远程目录,URL 必须以斜杠结尾!
如果您想避免使用 ssh 或 scp 对远程目录列表重复输入密码,请参阅 netrw-ssh-hack。要避免使用 ftp 输入密码,请参阅 netrw-netrc(如果您的 ftp 支持)。
您可以做几件事来影响浏览器显示文件的方式
* 要更改列表样式,请按“i”键 (netrw-i)。目前有四种样式:薄、长、宽和树。要使该更改“永久”,请参阅 g:netrw_liststyle
* 要隐藏文件(不想再看到那些 xyz~ 文件了吗?)请参阅 netrw-ctrl-h
* 按 s 按名称、时间或大小对文件进行排序。
请参阅 netrw-browse-cmds 以了解您可以使用 netrw 完成的所有操作!
netrw-getftype netrw-filigree netrw-ftype getftype() 函数用于将一些花边附加到本地列出的文件以指示文件类型
目录:/ 可执行文件:* fifo:| 链接:@ 套接字:=
花边也会影响 g:netrw_sort_sequence

快速帮助 netrw-quickhelp {{{2

(使用 ctrl-] 选择主题)~ 浏览简介...............................|netrw-intro-browse| 快速参考: 映射.........................|netrw-quickmap| 快速参考: 命令.....................|netrw-browse-cmds| 隐藏编辑隐藏列表..............................|netrw-ctrl-h| 隐藏文件或目录...................|netrw-a| 通过后缀隐藏/显示.....................|netrw-mh| 隐藏点文件.............................|netrw-gh| 列表样式选择列表样式(薄/长/宽/树)....|netrw-i| 关联的设置变量...................|g:netrw_liststyle| 用于执行列表的 shell 命令.........|g:netrw_list_cmd| 快速文件信息...............................|netrw-qf| 按排序选择排序样式(名称/时间/大小).........|netrw-s| 编辑排序序列..................|netrw-S| 排序选项...............................|g:netrw_sort_options| 关联的设置变量...................|g:netrw_sort_sequence| 反转排序顺序.........................|netrw-r|
netrw-quickmap netrw-quickmaps 快速参考: 映射 netrw-browse-maps {{{2
---                        -----------------                        ----
Map                        Quick Explanation                        Link
---                        -----------------                        ----
<F1> 导致 Netrw 发布帮助 <cr> Netrw 将进入目录或读取文件 netrw-cr <del> Netrw 将尝试删除文件/目录 netrw-del <c-h> 编辑文件隐藏列表 netrw-ctrl-h <c-l> 导致 Netrw 刷新目录列表 netrw-ctrl-l <c-r> 使用 gvim 服务器浏览 netrw-ctrl-r <c-tab> 缩小/展开 netrw/资源管理器窗口 netrw-c-tab - 使 Netrw 上升一个目录 netrw-- a 在普通显示之间循环,netrw-a 隐藏(抑制显示与 g:netrw_list_hide 匹配的文件)和显示(仅显示与 g:netrw_list_hide 匹配的文件) cd 使浏览目录成为当前目录 netrw-cd C 设置编辑窗口 netrw-C d 创建目录 netrw-d D 尝试删除文件(s)/目录(ies) netrw-D gb 转到以前书签目录 netrw-gb gd 强制视为目录 netrw-gd gf 强制视为文件 netrw-gf gh 快速隐藏/显示点文件 netrw-gh gn 使树的顶部成为光标下的目录 netrw-gn gp 更改仅本地文件的权限 netrw-gp i 在薄、长、宽和树列表之间循环 netrw-i I 切换显示横幅 netrw-I mb 书签当前目录 netrw-mb mc 将标记的文件复制到标记文件目标目录 netrw-mc md 将差异应用于标记的文件(最多 3 个) netrw-md me 将标记的文件放在参数列表上并编辑它们 netrw-me mf 标记文件 netrw-mf mF 取消标记文件 netrw-mF mg 将 vimgrep 应用于标记的文件 netrw-mg mh 切换标记文件后缀在隐藏列表中的存在 netrw-mh mm 将标记的文件移动到标记文件目标目录 netrw-mm mr 使用 shell 样式的 regexp 标记文件 netrw-mr mt 当前浏览目录成为标记文件目标 netrw-mt mT 将 ctags 应用于标记的文件 netrw-mT mu 取消标记所有标记的文件 netrw-mu mv 将任意 vim 命令应用于标记的文件 netrw-mv mx 将任意 shell 命令应用于标记的文件 netrw-mx mX 将任意 shell 命令整体应用于标记的文件|netrw-mX| mz 压缩/解压缩标记的文件 netrw-mz o 在一个新的 netrw-o 浏览器窗口中进入光标下的文件/目录。使用水平分割。 O 获取光标指定的文件 netrw-O p 预览文件 netrw-p P 在以前使用的窗口中浏览 netrw-P qb 列出书签目录和历史记录 netrw-qb qf 显示文件信息 netrw-qf qF 使用快速修复列表标记文件 netrw-qF qL 使用 位置列表 标记文件 netrw-qL r 反转排序顺序 netrw-r R 重命名指定的文件(s)/目录(ies) netrw-R s 选择排序样式:按名称、时间或文件大小 netrw-s S 指定后缀优先级以进行名称排序 netrw-S t 在一个新标签中进入光标下的文件/目录|netrw-t| u 更改为最近访问的目录 netrw-u U 更改为随后访问的目录 netrw-U v 在一个新的 netrw-v 浏览器窗口中进入光标下的文件/目录。使用垂直分割。 x 使用关联的程序查看文件 netrw-x X 通过 system() 执行光标下的文件名 netrw-X
% 在 netrw 的当前目录中打开一个新文件 netrw-%
netrw-mouse netrw-leftmouse netrw-middlemouse netrw-rightmouse <leftmouse> (仅限 gvim) 选择鼠标下的单词,如同按下 <cr> (例如,编辑文件,更改目录) <middlemouse> (仅限 gvim) 与 P 相同,选择鼠标下的单词;请参阅 netrw-P <rightmouse> (仅限 gvim) 使用鼠标下的单词删除文件/目录 <2-leftmouse> (仅限 gvim) 当:* 在 netrw 选择的文件中,并且 * g:netrw_retmap == 1 并且 * 用户在 netrw 自动加载之前没有定义 <2-leftmouse> 映射,那么双击左键将返回到 netrw 浏览器窗口。请参阅 g:netrw_retmap<s-leftmouse> (仅限 gvim) 像 mf 一样,将标记文件。拖动按住 shift 键的左键将标记多个文件。(参阅 netrw-mf)
(要禁用浏览时的鼠标按钮: g:netrw_mousemaps)
netrw-quickcom netrw-quickcoms 快速参考:命令 netrw-explore-cmds netrw-browse-cmds {{{2 :NetrwClean[!]............................................|netrw-clean| :NetrwSettings............................................|netrw-settings| :Ntree....................................................|netrw-ntree| :Explore[!] [dir] 浏览当前文件所在的目录......|netrw-explore| :Hexplore[!] [dir] 水平分割并浏览.............|netrw-explore| :Lexplore[!] [dir] 左侧浏览器切换...................|netrw-explore| :Nexplore[!] [dir] 垂直分割并浏览...............|netrw-explore| :Pexplore[!] [dir] 垂直分割并浏览...............|netrw-explore| :Rexplore 返回到浏览器.....................|netrw-explore| :Sexplore[!] [dir] 分割并浏览目录 .............|netrw-explore| :Texplore[!] [dir] 标签页并浏览..........................|netrw-explore| :Vexplore[!] [dir] 垂直分割并浏览...............|netrw-explore|

横幅显示 netrw-I

可以通过按下 "I" 来切换横幅的显示。
另请参阅: g:netrw_banner
为目录添加书签 netrw-mb netrw-bookmark netrw-bookmarks {{{2
可以使用以下命令轻松地为当前浏览的目录添加书签
mb
.netrwbook
书签保存在 vim 会话之间,保存在名为 .netrwbook 的文件中,该文件是一个 List,通常存储在用户 'runtimepath' 上的第一个目录中;条目按排序顺序保存。
如果有标记的文件和/或目录,mb 将将它们添加到书签列表中。
netrw-:NetrwMB
此外,还可以使用 :NetrwMB 为文件或目录添加书签。
:NetrwMB[!] [files/directories]
不带感叹号:将文件/目录添加到 Netrw 的书签系统中
在 netrw 缓冲区中不带参数:如果存在标记的文件,则:书签标记的文件,否则:书签光标下的文件/目录 在 netrw 缓冲区之外不带参数:书签当前打开的文件 带有参数: glob() 每个参数并将它们添加书签
带感叹号:从 Netrw 的书签系统中删除文件/目录
:NetrwMB 命令在 netrw 缓冲区之外可用(一旦在会话中调用了 netrw)。
当 netrw(和 vim)不活动时,".netrwbook" 文件保存书签。默认情况下,它存储在用户 'runtimepath' 上的第一个目录中。
相关主题: netrw-gb 如何返回(转到)书签 netrw-mB 如何删除书签 netrw-qb 如何列出书签 g:netrw_home 控制 .netrwbook 的保存位置

浏览 netrw-enter netrw-cr {{{2

浏览很简单:将光标移动到想要查看的文件或目录上。按下 <cr>(回车键)将选择该文件或目录。目录将被列出,文件将使用原始读取请求中给定的协议打开。
注意事项:有四种列出形式(参阅 netrw-i)。Netrw 假设在长格式和宽格式的列表中,两个或多个空格分隔文件名和目录名。因此,如果您的文件名或目录名包含两个或多个连续的空格,或者任何尾随空格,那么您需要使用“薄”格式来选择它。
g:netrw_browse_split 选项(默认值为零)可用于将文件打开操作放到新窗口或标签页中,而不是默认行为。当选项为 1 或 2 时,分割将分别采用水平或垂直方式。当选项设置为 3 时,<cr> 将使文件出现在新标签页中。
当使用 gui (gvim) 时,可以通过按下 <leftmouse> 按钮来选择文件。此外,如果
* g:netrw_retmap == 1 并且(它的默认值为 0) * 在 netrw 选择的文件中,并且 * 用户在 netrw 加载之前没有定义 <2-leftmouse> 映射
那么双击左键将返回到 netrw 浏览器窗口。
Netrw 尝试通过保存并重用先前获取的目录列表缓冲区来加快浏览速度,尤其是在远程浏览中,用户可能需要输入密码。 g:netrw_fastbrowse 变量用于控制此行为;用户可以选择慢速浏览(不重用缓冲区)、中等速度浏览(仅对远程目录重用目录缓冲区列表)和快速浏览(尽可能频繁地重用目录缓冲区列表)。这种重用的代价是,当进行更改(例如,新文件被引入到目录中)时,列表可能会过时。用户始终可以通过按下 ctrl-L 来刷新目录列表缓冲区(参阅 netrw-ctrl-l)。
netrw-s-cr
压缩当前树列表目录~
当树列表样式启用(参阅 netrw-i)并且用户使用 gvim 时,<s-cr> 映射可用于压缩(关闭)当前包含光标的目录。
否则,用户可以重新映射自己选择的键组合来获得这种效果
nmap <buffer> <silent> <nowait> YOURKEYCOMBO  <Plug>NetrwTreeSqueeze
将此行放在 $HOME/ftplugin/netrw/netrw.vim 中;它需要为 netrw 缓冲区专门生成。
使用水平分割窗口浏览 netrw-o netrw-horiz {{{2
通常,用户使用 <cr> 进入文件或目录。但是,"o" 映射允许用户打开一个新窗口来保存新的目录列表或文件。使用水平分割。(要使用垂直分割,请参阅 netrw-v)
通常,o 键会使用新的窗口和光标在顶部水平分割窗口。
相关设置变量: g:netrw_alto g:netrw_winsize
相关主题: netrw-ctrl-r netrw-o netrw-p netrw-P netrw-t netrw-v 相关设置变量: g:netrw_alto 控制上下分割 g:netrw_winsize 控制初始大小
使用新标签页浏览 netrw-t {{{2
通常,用户使用 <cr> 进入文件或目录。"t" 映射允许用户打开一个新窗口,在新标签页中保存新的目录列表或文件。
如果用户希望在新标签页中以后台方式显示新的列表,请使用 gT
相关主题: netrw-ctrl-r netrw-o netrw-p netrw-P netrw-t netrw-v 相关设置变量: g:netrw_winsize 控制初始大小
使用垂直分割窗口浏览 netrw-v {{{2
通常,用户使用 <cr> 进入文件或目录。但是,"v" 映射允许用户打开一个新窗口来保存新的目录列表或文件。使用垂直分割。(要使用水平分割,请参阅 netrw-o)
通常,v 键会使用新的窗口和光标在左侧垂直分割窗口。
只有一个树列表缓冲区;在显示的子目录上使用 "v" 会分割屏幕,但同一个缓冲区将显示两次。
相关主题: netrw-ctrl-r netrw-o netrw-p netrw-P netrw-t netrw-v 相关设置变量: g:netrw_altv 控制左右分割 g:netrw_winsize 控制初始大小
使用 gvim 服务器浏览 netrw-ctrl-r {{{2
用户可以将一个浏览用的 gvim 与用于编辑的 gvim 分开。在 netrw 浏览器中的文件(而不是目录)上使用 <c-r> 映射,它将使用 gvim 服务器(参阅 g:netrw_servername)。随后使用 <cr>(参阅 netrw-cr)将重用该服务器来编辑文件。
相关主题: netrw-ctrl-r netrw-o netrw-p netrw-P netrw-t netrw-v 相关设置变量: g:netrw_servername : 设置服务器名称 g:netrw_browse_split : 控制 <cr> 如何打开文件

更改列表样式(薄 长 宽 树) netrw-i {{{2

"i" 映射在薄、长、宽和树列表格式之间循环。
薄列表格式仅显示文件和目录的名称。
长列表格式是基于 ssh 针对远程目录的 "ls" 命令,或者针对本地目录显示文件名、文件大小(以字节为单位)以及上次修改的时间和日期。使用长列表格式时,netrw 无法识别包含尾随空格的文件名。对于此类文件,请使用薄列表格式。
宽列表格式使用两个或多个连续的空格来分隔文件名;使用该格式时,netrw 无法识别或使用包含两个或多个连续空格或任何尾随空格的文件名。但是,薄列表格式可以处理此类文件。宽列表格式是最紧凑的。
树形列表格式包含一个顶层目录,后面跟着一个或多个 "|" 符号前缀的文件和目录,这些符号指示目录深度。可以通过在目录名称上按 <cr> 键来打开和关闭目录。
可以将首选的列表样式设置为默认样式;请参见 g:netrw_liststyle。例如,在你的 .vimrc 中添加以下行,
let g:netrw_liststyle= 3
树形样式将成为你的默认列表样式。
使用 netrw 树形显示的一种典型方法是
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...

更改文件权限 netrw-gp {{{2

"gp" 将询问你光标下文件的新权限。目前,这仅适用于本地文件。
关联设置变量:g:netrw_chgperm
更改到书签目录 netrw-gb {{{2
要更改目录回到书签目录,请使用
{cnt}gb
可以使用任何计数来引用任何书签。请注意,netrw-qb 会显示书签和历史记录;要转到历史记录中存储的位置,请参见 netrw-unetrw-U
相关主题:netrw-mB 如何删除书签 netrw-mb 如何创建书签 netrw-qb 如何列出书签
更改到上级目录 netrw-u netrw-updir {{{2
每次更改到新目录(当前会话中的新目录)时,netrw 都会将目录保存到最近访问的目录历史记录列表中(除非 g:netrw_dirhistmax 为零;默认情况下,它保存十项条目)。使用 "u" 映射,可以更改到较早的目录(上级目录)。要执行相反的操作,请参见 netrw-U
"u" 映射还接受计数,以便在历史记录中后退多格。为了方便起见,qb(参见 netrw-qb)会列出该计数中可能使用的历史记录编号。
.netrwhist
请参见 g:netrw_dirhistmax,了解如何控制历史记录堆栈格的数量。文件 ".netrwhist" 在 netrw(和 vim)不活动时保存历史记录。默认情况下,它存储在用户 'runtimepath' 上的第一个目录中。
相关主题:netrw-U 更改到下级目录 g:netrw_home 控制 .netrwhist 的保存位置
更改到下级目录 netrw-U netrw-downdir {{{2
使用 "U" 映射,可以更改到较晚的目录(下级目录)。此映射与 "u" 映射相反。(参见 netrw-u)使用 qb 映射来列出书签和历史记录。(参见 netrw-qb
"U" 映射还接受计数,以便在历史记录中前进多格。
请参见 g:netrw_dirhistmax,了解如何控制历史记录堆栈格的数量。

更改树形顶层 netrw-ntree :Ntree netrw-gn {{{2

可以使用以下命令为树形列表指定新的树形顶层
:Ntree [dirname]
如果没有 "dirname",则使用当前行(并删除任何前导深度信息)。如果指定了 "dirname",则使用指定的目录名称。
"gn" 映射将获取光标下的单词,并将其用于更改树形列表的顶层。

NETRW 清理 netrw-clean :NetrwClean {{{2

使用 :NetrwClean,可以轻松地从你的主目录中删除 netrw;更确切地说,是从你的 'runtimepath' 上的第一个目录中删除 netrw。
使用 :NetrwClean!,netrw 将尝试从你的 'runtimepath' 上的所有目录中删除 netrw。当然,你必须拥有正确的写/删除权限才能执行此操作。
使用这两种命令形式,netrw 都会首先询问你确认删除确实是你想执行的操作。如果 netrw 没有删除文件的权限,它将发出错误消息。
使用特殊处理程序自定义浏览 netrw-x netrw-handler {{{2
某些文件,例如 html、gif、jpeg、(word/office)doc 等文件,最好使用特殊处理程序(即计算机操作系统提供的工具)查看。Netrw 允许你通过以下操作调用这些特殊处理程序:
* 在文件路径上按 gx,或者在 netrw 缓冲区中按 x;可以通过定义 g:netrw_nogx 变量来禁用前者 * 在命令行中,键入 :Open <path>,请参见下面的 :Open
还可以使用可视模式(参见 visual-start)选择特殊处理程序将使用的文本。通常,gx 会检查附近是否有 URL 或文件名以获取光标下的文本;可以通过 g:netrw_gx 变量来更改 expand() 使用的内容(选项包括 "<cword>"、"<cWORD>")。请注意,expand("<cfile>") 取决于 'isfname' 设置。或者,可以通过进行可视选择(参见 visual-block),然后按 gx 来选择 gx 将使用的文本。
可以通过添加一个函数 Netrw_get_URL_<filetype> 来调整每个文件类型的选择函数,其中 <filetype>'filetype' 给出。该函数应返回 gx 将使用的 URL 或文件名,如果它返回空字符串,则将回退到默认行为。例如,Markdown 和 HTML 链接的特殊处理程序是
" 使 gx 在隐藏的链接上工作,无论光标的具体位置如何
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='https://www.pythonlang.cn'>Python is here</a>
  "                  <a href="https://www.pythonlang.cn"/>
  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
除了文件路径之外,光标下的文本可能是一个 URL。默认情况下,netrw 使用以下正则表达式来确定光标下的文本是否为 URL
:let g:netrw_regex_url = '\%(\%(http\|ftp\|irc\)s\?\|file\)://\S\{-}'
关联设置变量:g:netrw_gx 控制 gx 如何获取光标下的文本 g:netrw_nogx 在编辑时阻止 gx 映射 g:netrw_suppress_gx_mesg 控制 gx 对浏览器消息的抑制

打开文件和启动应用程序 netrw-gx :Open :Launch {{{2

Netrw 通过以下方法确定哪个特殊处理程序
* 如果 g:netrw_browsex_viewer 存在,则将使用它来尝试查看文件。如果要使用的查看器不支持处理远程 URL 目录,请将 g:netrw_browsex_support_remote 设置为 0。 * 否则
* 对于 Windows:使用 explorer.exe * 对于 Mac OS X:使用 open * 对于 Linux:使用 xdg-open。
要通过适当的处理程序打开路径(或 URL)<path>,请键入
:Open <path>
不需要进行转义,无论是针对 shell 还是 Vim 的命令行。
要启动特定应用程序 <app> <args>,通常 <args><path>
:Launch <app> <args>.
由于 <args> 可以是任意复杂的,特别是包含多个文件路径,因此转义操作由用户完成。
如果你通过设置 g:loaded_netrwPlugin 禁用了 netrw 插件(参见 netrw-noload),则可以使用
:call netrw#Launch('<app> <args>')
:call netrw#Open('<path>')
netrw-curdir

删除书签 netrw-mB {{{2

要删除书签,请使用
{cnt}mB
如果有标记的文件,则 mB 会将它们从书签列表中删除。
或者,可以使用 :NetrwMB!(参见 netrw-:NetrwMB)。
:NetrwMB! [files/directories]
相关主题:netrw-gb 如何返回(转到)书签 netrw-mb 如何创建书签 netrw-qb 如何列出书签

删除文件或目录 netrw-delete netrw-D netrw-del {{{2

如果文件没有用 netrw-mf 标记:(本地标记文件列表)
删除/移除文件和目录涉及将光标移到要删除的文件/目录上,然后按 "D"。目录必须首先为空,才能成功移除。如果该目录是目录的软链接,则 netrw 将进行两次删除目录的请求,然后才能成功。netrw 会在执行移除操作之前询问你确认。可以使用 "V" 命令(可视选择)选择一系列行,然后按 "D"。
如果文件已用 netrw-mf 标记:(本地标记文件列表)
标记的文件(和空目录)将被删除;同样,在实际删除之前,系统会要求你确认删除。
另一种方法是删除与模式匹配的文件。
* 使用 :MF pattern(参见 netrw-:MF);然后按 "D"。
* 使用 mr(参见 netrw-mr),系统会提示你输入模式。这将导致匹配的文件被标记。然后,按 "D"。
请注意,只能使用 "D" 映射删除空目录。普通文件也使用 delete() 删除。
g:netrw_rm_cmdg:netrw_rmf_cmdg:netrw_rmdir_cmd 变量用于控制尝试移除远程文件和目录。g:netrw_rm_cmd 用于文件,其默认值为
g:netrw_rm_cmd: ssh HOSTNAME rm
g:netrw_rmdir_cmd 变量用于支持目录的移除。其默认值为
g:netrw_rmdir_cmd: ssh HOSTNAME rmdir
如果使用 g:netrw_rmdir_cmd 移除目录失败,netrw 然后将尝试再次使用 g:netrw_rmf_cmd 变量移除它。其默认值为
g:netrw_rmf_cmd: ssh HOSTNAME rm -f
相关主题:netrw-d 关联设置变量:g:netrw_rm_cmd g:netrw_ssh_cmd
:[N]Explore[!] [dir]... 浏览当前文件所在目录 :Explore :[N]Hexplore[!] [dir]... 水平分割并浏览 :Hexplore
:[N]Lexplore[!] [dir]... 切换左侧资源管理器 :Lexplore
:[N]Sexplore[!] [dir]... 分割并浏览当前文件所在目录 :Sexplore :[N]Vexplore[!] [dir]... 垂直分割并浏览 :Vexplore
:Texplore [dir]... 新标签页并浏览 :Texplore
:Rexplore ... 返回/离开资源管理器 :Rexplore
与 :Explore **/pattern 一起使用 : (另请参见 netrw-starstar) :Nexplore............. 转到下一个匹配文件 :Nexplore
:Pexplore............. 转到上一个匹配文件 :Pexplore
netrw-:Explore
:Explore 将在当前文件所在的目录(如果指定了目录 [dir],则在该目录)打开本地目录浏览器。仅当文件已被修改且未设置 'hidden' 时,窗口才会被分割,否则浏览窗口将接管该窗口。通常,分割是水平进行的。另请参见:netrw-:Rexplore :Explore! 与 :Explore 类似,但将使用垂直分割。
netrw-:Hexplore
:Hexplore [dir] 使用 :belowright 水平分割执行 :Explore。 :Hexplore! [dir] 使用 :aboveleft 水平分割执行 :Explore。
netrw-:Lexplore
:[N]Lexplore [dir] 在当前标签页的左侧切换一个全高度资源管理器窗口。如果省略 [dir],它将在当前目录上打开一个 netrw 窗口;:Lexplore [dir] 将在左侧浏览器显示中显示指定的目录,无论从哪个窗口发出命令。
默认情况下,:Lexplore 将把未初始化的 g:netrw_chgwin 更改为 2;因此,编辑将优先在窗口#2 中进行。
[N] 为新的 :Lexplore 窗口指定 g:netrw_winsize。这意味着,如果 [N] < 0 : 如果 [N] = 0 : 使用 N 列作为 Lexplore 窗口,则进行普通分割,如果 [N] > 0 : 新窗口将使用当前窗口的 N%。
喜欢这种方法的人通常也喜欢树形显示;请参见 g:netrw_liststyle
:[N]Lexplore! [dir] 与 :Lexplore 类似,区别在于全高度资源管理器窗口将在右侧打开,并且未初始化的 g:netrw_chgwin 将被设置为 1(例如,编辑将优先发生在最左边的窗口)。
netrw-:Sexplore
:[N]Sexplore 将始终在调用本地目录浏览器之前分割窗口。与 Explore 一样,分割通常是水平进行的。:[N]Sexplore! [dir] 与 :Sexplore 类似,但分割将垂直进行。
netrw-:Texplore
:Texplore [dir] 在生成浏览器窗口之前执行 :tabnew
netrw-:Vexplore
:[N]Vexplore [dir] 使用 :leftabove 垂直分割执行 :Explore。:[N]Vexplore! [dir] 使用 :rightbelow 垂直分割执行 :Explore。
可选参数为
[N]: 此参数将覆盖 g:netrw_winsize,以指定新的资源管理器窗口应具有的行和/或列数量。否则,将使用 g:netrw_winsize 变量(如果用户已指定)来控制新的资源管理器窗口应具有的行和/或列数量。
[dir]: 默认情况下,这些资源管理器命令使用当前文件所在的目录。但是,可以显式提供要使用的目录(路径);例如,
:Explore /some/path
netrw-:Rexplore
:Rexplore 此命令与其他 Explore 命令略有不同,因为它不一定会打开资源管理器窗口。
返回资源管理器~ 当使用 netrw 编辑文件时(例如,当光标位于 netrw 浏览器窗口中的文件名上时按下 <cr> 时),在编辑该文件时发出的 :Rexplore 将使显示返回到该窗口中最后一个 netrw 浏览器显示的状态。
从资源管理器返回~ 相反,当编辑目录时,发出 :Rexplore 将返回到编辑该窗口中最后编辑的文件。
<2-leftmouse> 映射(仅在 gvim 和协作模式下可用)与 :Rexplore 执行相同的操作。
netrw-star netrw-starpat netrw-starstar netrw-starstarpat netrw-grep 使用星号和模式进行浏览 {{{2
当 Explore、Sexplore、Hexplore 或 Vexplore 与以下四种模式之一一起使用时,Explore 将生成一个文件列表,该列表满足对本地文件系统的请求。这些浏览模式不适用于远程文件浏览。
*/filepat 当前目录中满足 filepat 的文件 **/filepat 当前目录或其下满足文件模式的文件 *//pattern 当前目录中包含模式的文件(使用 vimgrep) **//pattern 当前目录或其下包含模式的文件(使用 vimgrep)
光标将置于列表中的第一个文件上。然后可以使用 :Nexplore 继续转到该列表上的后续文件,或使用 :Pexplore 转到该列表上的先前文件。Explore 将更新目录并将光标置于适当位置。
一个简单的
:Explore
将清除浏览列表。
如果您的控制台或 GUI 生成了可识别的向上或向下移动序列,那么您可能会发现使用向上箭头和向下箭头很方便。netrw 将它们映射如下
<s-down> == Nexplore,以及 <s-up> == Pexplore。
例如,考虑
:Explore */*.c
:Nexplore
:Nexplore
:Pexplore
状态行将在状态行的右侧显示类似“Match 3 of 20”的信息。

显示有关文件的信息 netrw-qf {{{2

将光标置于文件名上,按下“qf”将显示文件的大小和上次修改时间戳。目前,此功能仅适用于本地文件。

编辑文件或目录隐藏列表 netrw-ctrl-h netrw-edithide {{{2

“<ctrl-h>” 映射会弹出一个请求器,允许用户更改 g:netrw_list_hide 中包含的文件/目录隐藏列表。隐藏列表由一个或多个以逗号分隔的模式组成。满足这些模式的文件和/或目录将被隐藏(即不显示)或仅显示匹配的文件和/或目录(请参见 netrw-a)。
“gh” 映射(请参见 netrw-gh)在通常的隐藏列表和隐藏以“.”开头的文件或目录之间快速切换。
例如,
let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+'
实际上,这使得 netrw-gh 命令的效果成为初始设置。它的含义是
\(^\|\s\s\) : 如果该行以以下内容开头,- 或 - 遇到两个连续的空格 \zs : 现在开始隐藏匹配 \. : 如果现在以点开头 \S\+ : 然后后跟一个或多个非空格字符
关联的设置变量:g:netrw_hide g:netrw_list_hide 关联主题:netrw-a netrw-gh netrw-mh
当“按”为名称时,可以使用排序顺序 (g:netrw_sort_sequence) 指定优先级。排序顺序通常通过后缀优先考虑名称列表,但任何模式都可以。模式以逗号分隔。默认排序顺序为(全部在一行)
对于 Unix
'[\/]$,\<core\%(\.\d\+\)\=,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,
\.info$,\.swp$,\.bak$,\~$'
否则
'[\/]$,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,
\.swp$,\.bak$,\~$'
唯一的 * 是所有未被其他模式覆盖的文件名的最终归属。可以通过修改 g:netrw_sort_sequence 变量(手动或在您的 <.vimrc> 中)或使用“S” 映射来更改排序顺序。
相关主题:netrw-s netrw-S 关联的设置变量:g:netrw_sort_sequence g:netrw_sort_options

通过 SYSTEM() 执行光标下的文件 netrw-X {{{2

当光标位于可执行文件上时,按下 X 将弹出一个提示,使用文件名提示任何参数。按下 [return] 后,netrw 将使用该命令和参数调用 system()。结果将由 :echomsg 显示,因此 :messages 将重复显示结果。Ansi 转义序列将被剥离。
请参见 cmdline-window,了解有关如何编辑参数的更多说明。
强制作为文件或目录处理 netrw-gd netrw-gf {{{2
远程符号链接(即通过 ssh 或 ftp 列出的符号链接)存在问题,因为很难判断它们链接到文件还是目录。
要强制作为文件处理:使用
gf
要强制作为目录处理:使用
gd

向上移动 netrw-- {{{2

要向上移动一个目录,请按下“ - ”或在列表中位于 ../ 目录条目上时按下 <cr>
Netrw 将使用 g:netrw_list_cmd 中的命令来执行更改 HOSTNAME 后目录列表操作,HOSTNAME 由用户提供的 url 指定。默认情况下,netrw 提供如下命令
ssh HOSTNAME ls -FLa
其中 HOSTNAME 成为尝试读取时请求的 [user@]hostname。当然,用户可以使用任何首选命令来覆盖此命令。实现远程浏览的 NetList 函数预期目录将以尾部斜杠标记。

隐藏文件或目录 netrw-a netrw-hiding {{{2

Netrw 的浏览功能允许您以三种方式使用隐藏列表:忽略它、隐藏匹配的文件以及仅显示匹配的文件。
如果沒有檔案透過 netrw-mf 標記。
「a」映射允許使用者在三種隱藏模式之間循環切換。
變數 g:netrw_list_hide 儲存一個以逗號分隔的模式列表,這些模式基於正則運算式(例如 ^.*\.obj$,^\.),用於指定隱藏列表。(另請參閱 netrw-ctrl-h)要設定隱藏列表,請使用 <c-h> 映射。例如,要隱藏以「.」開頭的檔案,可以使用 <c-h> 映射將隱藏列表設定為 '^\..*'(或者可以在您的 <.vimrc> 中加入 let g:netrw_list_hide= '^\..*')。然後可以使用「a」鍵顯示所有檔案、隱藏匹配的檔案或僅顯示匹配的檔案。
示例:\.[ch]$ 這個隱藏列表命令會隱藏/顯示所有 *.c 和 *.h 檔案。
示例:\.c$,\.h$ 這個隱藏列表命令也會隱藏/顯示所有 *.c 和 *.h 檔案。
別忘了使用「a」映射來選擇您想要的模式(常規/隱藏/顯示)!
如果檔案已使用 netrw-mf 標記,則此命令將
如果顯示所有檔案或非隱藏檔案:通過將標記的檔案追加到 g:netrw_list_hide 列表中並僅顯示非隱藏檔案來修改 g:netrw_list_hide 列表。
否則,如果僅顯示隱藏檔案:通過從 g:netrw_list_hide 列表中刪除標記的檔案並僅顯示非隱藏檔案來修改 g:netrw_list_hide 列表。endif
netrw-gh netrw-hide 作為一個快速捷徑,您可以按下
gh
在隱藏以句點(點)開頭的檔案和不隱藏它們之間切換。
相關設定變數:g:netrw_list_hide g:netrw_hide 相關主題:netrw-a netrw-ctrl-h netrw-mh
netrw-gitignore
Netrw 提供一個輔助函數 'netrw_gitignore#Hide()',當與 g:netrw_list_hide 一起使用時,會自動隱藏所有被 git 忽略的檔案。
'netrw_gitignore#Hide' 在以下檔案中搜尋模式
'./.gitignore'
'./.git/info/exclude'
global gitignore file: `git config --global core.excludesfile`
system gitignore file: `git config --system core.excludesfile`
不存在的檔案將被忽略。Git 忽略模式取自現有的檔案,並轉換為隱藏檔案的模式。例如,如果您在 .gitignore 檔案中擁有 '*.log',它將被轉換為 '.*\.log'。
要使用此函數,只需將其輸出賦予 g:netrw_list_hide 選項。
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.

改進瀏覽 netrw-listhack netrw-ssh-hack {{{2

特別是使用遠端目錄瀏覽器時,不斷輸入密碼很麻煩。
對於 Linux/Unix 系統,Rob Flickenger(O'Reilly,ISBN 0-596-00461-3)的書籍「Linux Server Hacks - 100 工業級強度的技巧和工具」提供了一個設定無密碼 ssh 和 scp 的技巧,並討論了相關的安全問題。它曾經在 http://hacks.oreilly.com/pub/h/66 上提供,但顯然該地址現在已被重定向到某個「黑客雜誌」。我將嘗試根據該文章和 Ben Schmidt 的通訊進行摘要
1. 在本地機器(ssh 客戶端)上生成一對公鑰/私鑰。
ssh-keygen -t rsa
(saving the file in ~/.ssh/id_rsa as prompted)
2. 當被要求輸入密碼(兩次)時,只需按下 <CR> 以免輸入密碼。如果您確實使用了密碼,您也需要使用 ssh-agent,這樣您每隔一次會話只需要輸入一次密碼。如果您不使用密碼,只需登入您的本地電腦或以任何方式訪問密鑰檔案,就足以訪問任何已授權該密鑰登入的 ssh 服務器。
3. 這將創建兩個檔案
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
4. 在目標機器(ssh 服務器)上
cd
mkdir -p .ssh
chmod 0700 .ssh
5. 在您的本地機器(ssh 客戶端)上:(一行)
ssh {serverhostname}
  cat '>>' '~/.ssh/authorized_keys2' < ~/.ssh/id_rsa.pub
或者,對於 OpenSSH,(一行)
ssh {serverhostname}
  cat '>>' '~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub
您可以使用以下命令進行測試
ssh {serverhostname}
您應該登入到伺服器機器,而無需再輸入任何內容。
如果您決定使用密碼,請執行
ssh-agent $SHELL
ssh-add
ssh {serverhostname}
當您使用 ssh-add 時,系統會提示您輸入密鑰密碼,但在您使用 ssh 後就不會再次提示。對於與 vim 的使用,您可以使用
ssh-agent vim
並且在下次在 vim 中時使用
:!ssh-add
或者,您可以將 ssh-agent 應用於您打算運行 vim 的終端
ssh-agent xterm &
並在需要時執行 ssh-add。
對於 Windows,vim 郵件列表上的人員提到 Pageant 有助於避免不斷需要輸入密碼。
Kingston Fung 撰寫了關於避免不斷需要輸入密碼的另一種方法
為了避免每次都需要為 scp 輸入密碼,您在文檔中提供了一個技巧來設定一個無密碼 ssh 帳戶。我找到了更好的方法:我可以使用一個需要密碼的常規 ssh 帳戶來訪問素材,而無需每次都輸入密碼。這對安全性和平常使用都很好。我嘗試了 ssh 公鑰認證 + ssh-agent,實現了這個功能,並且它有效!
Ssh 提示
Thomer Gil 提供了一個關於如何加快 netrw+ssh 的提示:http://thomer.com/howtos/netrw_ssh.html
Alex Young 提供了關於加快 ssh 的幾個提示:http://usevim.com/2012/03/16/editing-remote-files/

列出書籤和歷史記錄 netrw-qb netrw-listbookmark {{{2

按下「qb」(查詢書籤)將列出書籤目錄和目錄遍歷歷史記錄。
相關主題:netrw-gb 如何返回(前往)書籤 netrw-mb 如何製作書籤 netrw-mB 如何刪除書籤 netrw-u 通過歷史堆疊更改為前一個目錄 netrw-U 通過歷史堆疊更改為後一個目錄
創建新目錄 netrw-d {{{2
使用「d」映射,您可以在遠端(取決於全局變數 g:netrw_mkdir_cmd)或本地(取決於全局變數 g:netrw_localmkdir)創建新目錄。Netrw 將請求新目錄的名稱。在那裡,一個裸 <CR> 將中止目錄的創建。嘗試創建一個已經存在的本地目錄(作為檔案或目錄)將被檢測到、報告並忽略。

將瀏覽目錄設為當前目錄 netrw-cd {{{2

默認情況下,g:netrw_keepdir 為 1。此設定表示當前目錄不會跟蹤瀏覽目錄。(為與 v6 的檔案瀏覽器向後兼容而完成)。
將 g:netrw_keepdir 設定為 0 會告訴 netrw 使 vim 的當前目錄跟蹤 netrw 的瀏覽目錄。
但是,考慮到 g:netrw_keepdir 的默認設定為 1,其中 netrw 維護其自己的當前目錄概念,為了使這兩個目錄相同,請使用「cd」映射(輸入 cd)。該映射將將 Vim 的當前目錄概念設定為 netrw 的當前瀏覽目錄。
netrw-cd:這個映射的名稱從「c」更改為 cd(參見 netrw-cd)。此更改是為了允許 netrw-cbnetrw-cB 映射。
相關設定變數:g:netrw_keepdir

標記檔案 netrw-:MF netrw-mf {{{2

(另請參閱 netrw-mr
Netrw 提供多種標記檔案的方法
* 可以將游標置於檔名上,然後按下「mf」來標記檔案。
* 使用 gvim,此外可以使用 <s-leftmouse> 來標記檔案。(參見 netrw-mouse
* 可以使用 :MF 命令,它接受一個檔案列表(對於本地目錄,該列表可以包含萬用字元 - 參見 glob()
:MF *.c
(請注意,:MF 使用 <f-args> 在空格處斷開行)
* 使用 參數列表 標記檔案 (netrw-mA)
* 基於 位置列表 標記檔案 (netrw-qL)
* 基於快速修復列表標記檔案 (netrw-qF) (快速修復錯誤列表)
以下 netrw 映射使用標記的檔案
netrw-a 隱藏標記的檔案/目錄 netrw-D 刪除標記的檔案/目錄 netrw-ma 將標記的檔案的名稱移動到 參數列表 netrw-mA參數列表 檔名移動到標記的檔案列表 netrw-mb 將標記的檔案附加到書籤 netrw-mB 從書籤中刪除標記的檔案 netrw-mc 將標記的檔案複製到目標 netrw-md 將 vimdiff 應用於標記的檔案 netrw-me 編輯標記的檔案 netrw-mF 取消標記標記的檔案 netrw-mg 將 vimgrep 應用於標記的檔案 netrw-mm 將標記的檔案移動到目標 netrw-ms Netrw 將來源標記的檔案 netrw-mt 設定 netrw-mmnetrw-mc 的目標 netrw-mT 使用標記的檔案生成標籤 netrw-mv 將 vim 命令應用於標記的檔案 netrw-mx 將 shell 命令應用於標記的檔案 netrw-mX 將 shell 命令應用於標記的檔案,整體 netrw-mz 壓縮/解壓縮標記的檔案 netrw-O 獲取標記的檔案 netrw-R 重新命名標記的檔案
可以像標記檔案一樣一次取消標記一個檔案;即將游標置於標記的檔案上,然後按下「mf」。此過程也適用於使用 gvim 的 <s-leftmouse>。可以通過按下「mu」取消標記所有檔案(參見 netrw-mu)。
標記的檔案使用「netrwMarkFile」突出顯示組進行突出顯示,默認情況下它與「Identifier」關聯(參見 group-name 下的 Identifier)。您可以通過放入類似以下內容來更改突出顯示組
highlight clear netrwMarkFile
hi link netrwMarkFile ..whatever..
到 $HOME/.vim/after/syntax/netrw.vim 中。
如果滑鼠已啟用並與您的 vim 配合使用,您可以使用 <s-leftmouse> 標記一個或多個檔案。您可以通過拖動左鍵來標記多個檔案。(參見 netrw-mouse
markfilelist global_markfilelist local_markfilelist 所有標記的檔案都將輸入到全局標記的檔案列表中;只有一個這樣的列表。此外,每個 netrw 緩衝區也有自己的緩衝區局部標記的檔案列表;由於 netrw 緩衝區與特定目錄關聯,這意味著每個目錄都有自己的局部標記的檔案列表。各種對標記的檔案進行操作的命令使用標記的檔案列表之一。
已知問題:如果使用樹狀模式 (g:netrw_liststyle) 且多個目錄具有相同名稱的檔案,則標記此類檔案將導致所有此類檔案被突出顯示,就好像它們都被標記了一樣。但是,markfilelist 中只包含選定的檔案。這個問題不太可能被修復。

取消標記檔案 netrw-mF {{{2

(另請參閱 netrw-mfnetrw-mu
「mF」命令將取消標記當前緩衝區中的所有檔案。您也可以在特定已標記的檔案上使用 mf (netrw-mf) 來取消標記該檔案。

通過位置列表標記檔案 netrw-qL {{{2

(另请参阅 netrw-mf)
可以使用 "qL" 将 location-list 转换为已标记的文件列表。然后您可以继续使用 me (netrw-me) 等命令对其进行编辑。

通过快速修复列表标记文件 netrw-qF {{{2

(另请参阅 netrw-mf)
可以使用 "qF" 将 quickfix-error-lists 转换为已标记的文件列表。然后您可以继续使用 me (netrw-me) 等命令对其进行编辑。快速修复错误列表由调用 :vimgrep 生成,例如。

通过正则表达式标记文件 netrw-mr {{{2

(另请参阅 netrw-mf)
您也可以通过按 "mr" 来标记文件;netrw 将提示您 "Enter regexp: "。然后您可以输入类似 *.c$ 的 shell 风格正则表达式(参见 glob())。对于远程系统,glob() 不起作用 - 因此 netrw 将 "*" 转换为 ".*"(参见 regexp)并基于此标记文件。将来,我可能会让使用 regexp 而不是 glob() 风格表达式成为可能(另一个选项)。
有关如何编辑正则表达式的更多信息,请参见 cmdline-window
已标记的文件,任意 VIM 命令 netrw-mv {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用本地已标记的文件列表)
"mv" 映射会导致 netrw 对本地已标记文件列表中的每个文件单独执行一个任意 vim 命令
* 1split * sil! keepalt e file * 运行 vim 命令 * sil! keepalt wq!
将提示您 "Enter vim command: ",以获取您希望使用的 vim 命令。有关如何编辑命令的更多信息,请参见 cmdline-window
已标记的文件,任意 shell 命令 netrw-mx {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用本地已标记的文件列表)
激活 "mx" 映射后,netrw 将询问用户要应用于所有已标记文件的某些(外部)命令。命令中的所有 "%" 将依次替换为每个已标记文件的名称。如果命令中没有 "%",则该命令后面将跟一个空格和一个已标记的文件名。
示例:(标记文件)mx 输入命令:cat
结果是一系列 shell 命令:cat 'file1' cat 'file2' ...
已标记的文件,任意 shell 命令,整块 netrw-mX {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用全局已标记的文件列表)
激活 'mX' 映射后,netrw 将询问用户要应用于全局已标记文件列表中的所有已标记文件的某些(外部)命令。"整块" 表示将对所有文件同时执行一个命令
command files
例如,此方法可用于选择文件并创建 tar 包
(mark files)
mX
Enter command: tar cf mynewtarball.tar
此示例将运行的命令
tar cf mynewtarball.tar 'file1' 'file2' ...
已标记的文件:参数列表 netrw-ma netrw-mA(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用全局已标记的文件列表)
使用 ma 将文件名从已标记的文件列表移动到参数列表。使用 mA 将文件名从参数列表移动到已标记的文件列表。
已标记的文件:缓冲区列表 netrw-cb netrw-cB(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用全局已标记的文件列表)
使用 cb 将文件名从已标记的文件列表移动到缓冲区列表。使用 cB 将文件名从缓冲区列表复制到已标记的文件列表。
已标记的文件:压缩和解压缩 netrw-mz {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用本地已标记的文件列表)
如果任何已标记的文件已压缩,则 "mz" 将解压缩它们。如果任何已标记的文件已解压缩,则 "mz" 将使用由 g:netrw_compress 指定的命令压缩它们;默认情况下,该命令为 "gzip"。
对于解压缩,netrw 使用一个 Dictionary,其中包含后缀及其关联的解压缩实用程序;请参见 g:netrw_decompress
请记住,可以使用正则表达式标记多个文件(参见 netrw-mr);这对于压缩和解压缩大量文件特别有用。
关联的设置变量:g:netrw_compress g:netrw_decompress
已标记的文件:复制 netrw-mc {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用全局已标记的文件列表)
使用 mt (netrw-mt) 选择目标目录。然后更改目录,选择文件(参见 netrw-mf),并按 "mc"。复制操作从当前窗口(执行 mf 的窗口)到目标进行。
如果没有使用 netrw-mt 设置目标目录,则 netrw 将询问您要复制到的目录。
您也可以将目录及其内容(仅限本地)复制到目标目录。
已标记的文件:diff netrw-md {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用全局已标记的文件列表)
使用 vimdiff 可视化所选文件之间的差异(为此可以选择两个或三个文件)。使用全局已标记的文件列表。
已标记的文件:编辑 netrw-me {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用全局已标记的文件列表)
"me" 命令将把已标记的文件放到 arglist 上,并开始编辑它们。可以使用 :Rexplore 返回到资源管理器窗口。(使用 :n:p 编辑 arglist 中的下一个和上一个文件)
已标记的文件:grep netrw-mg {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用全局已标记的文件列表)
"mg" 命令将对已标记的文件应用 :vimgrep。该命令将询问所需的模式;然后您可以输入
/pattern/[g][j]
! /pattern/[g][j]
pattern
使用 /pattern/,编辑将从 vimgrep 设置的 quickfix 列表中的第一个项目开始(参见 :copen:cnext:cprevious:cclose)。:vimgrep 命令正在使用中,因此没有 'g' 的情况下,每行只添加到快速修复列表一次;使用 'g' 的情况下,将包含所有匹配项。
使用 /pattern/j,"mg" 将将当前已标记的文件列表缩减为仅包含也包含指定模式的已标记文件。因此,您可以使用
mr ...file-pattern...
mg /pattern/j
以获得满足文件模式但仅限于包含某些所需模式的文件的已标记文件列表。
已标记的文件:通过后缀隐藏和取消隐藏 netrw-mh {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用本地已标记的文件列表)
"mh" 命令提取已标记文件的后缀,并在隐藏列表上切换它们的存在。请注意,以这种方式多次标记相同的后缀将导致该后缀的存在在每个文件中切换(因此,具有相同后缀的已标记文件的数量是偶数,与根本没有选择它们的效果相同)。
相关主题:netrw-a g:netrw_list_hide
已标记的文件:移动 netrw-mm {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用全局已标记的文件列表)
警告:移动文件比复制文件更危险。移动的文件首先会被复制,然后被删除;如果复制操作失败而删除操作成功,您将丢失该文件。请先尝试使用不重要的文件,或者使用 mc 和 D 自己执行复制和删除操作。请自行承担风险使用!
使用 mt (netrw-mt) 选择目标目录。然后更改目录,选择文件(参见 netrw-mf),并按 "mm"。移动操作从当前窗口(执行 mf 的窗口)到目标进行。
关联的设置变量:g:netrw_localmovecmd g:netrw_ssh_cmd
已标记的文件:源 netrw-ms {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用本地已标记的文件列表)
使用 "ms",netrw 将对已标记的文件使用源代码(使用 vim 的 :source 命令)
已标记的文件:设置目标目录 netrw-mt {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr
设置已标记文件的复制/移动到目标(参见 netrw-mcnetrw-mm
* 如果光标位于文件名上,则使用 netrw 窗口当前显示的目录作为复制/移动到目标。
* 此外,如果光标位于横幅中,则使用 netrw 窗口当前显示的目录作为复制/移动到目标。除非目标已经是当前目录。在这种情况下,键入 "mf" 将清除目标。
* 但是,如果光标位于目录名称上,则使用该目录作为复制/移动到目标
* 可以使用 :MT [directory] 命令设置目标 netrw-:MT 此命令使用 <q-args>,因此目录名称中的空格可以在不转义的情况下使用。
* 在启用了鼠标的 vim 或 gvim 中,可以通过使用 <c-leftmouse> 来选择目标
在 vim 会话中一次只有一个复制/移动到目标;即该目标是一个脚本变量(参见 s:var),并且在所有 netrw 窗口(在 vim 的一个实例中)之间共享。
在使用菜单和 gvim 时,netrw 提供了一个 "Targets" 条目,允许您从书签和历史记录列表中选择一个目标。
相关主题:标记文件......................................|netrw-mf| 通过正则表达式标记文件................|netrw-mr| 已标记的文件:使用书签设置目标目录.....|netrw-Tb| 已标记的文件:使用历史记录设置目标目录.......|netrw-Th|
已标记的文件:标记 netrw-mT {{{2(有关如何标记文件的说明,请参见 netrw-mfnetrw-mr)(使用全局已标记的文件列表)
“mT” 映射将使用 g:netrw_ctags(默认情况下为“ctags”)命令应用于标记的文件。 对于远程浏览,为了创建标签文件,netrw 将使用 ssh(参见 g:netrw_ssh_cmd),因此 ssh 必须在远程系统上可用才能使其正常工作。 对于本地系统,请参见 ctags,了解如何获取版本。 我自己使用 hdrtags,目前可在 http://www.drchip.org/astronaut/src/index.html 获取,并且我
let g:netrw_ctags= "hdrtag"
在我的 <.vimrc> 中。
当远程文件集被标记时,生成的标签文件将被“获取”;也就是说,将复制一份到本地系统的目录中。 然后修改本地标签文件,以便可以通过网络使用它。 修改涉及标签中文件的名称;每个文件名之前都带有用于获取它的 netrw 兼容 URL。 当您随后使用其中一个跳转到标签的操作(tags)时,netrw 将使用该 URL 编辑所需的文件并跳转到标签。
相关的设置变量: g:netrw_ctags g:netrw_ssh_cmd
标记的文件:使用书签的目标目录 netrw-Tb {{{2
设置标记文件的复制/移动目标。
netrw-qb 映射将提供书签(和历史记录)列表。 您可以通过使用 [count]Tb(默认计数:1)选择其中一个书签作为标记文件的目标。
相关主题: 将文件复制到目标............................|netrw-mc| 列出书签和历史记录......................|netrw-qb| 标记的文件:设置目标目录.........|netrw-mt| 标记的文件:使用历史记录的目标目录.......|netrw-Th| 标记文件......................................|netrw-mf| 通过正则表达式标记文件................|netrw-mr| 将文件移动到目标.............................|netrw-mm|
标记的文件:使用历史记录的目标目录 netrw-Th {{{2
设置标记文件的复制/移动目标。
netrw-qb 映射将提供历史记录(和书签)列表。 您可以通过使用 [count]Th(默认计数:0;即当前目录)选择其中一个历史记录条目作为标记文件的目标。
相关主题: 将文件复制到目标............................|netrw-mc| 列出书签和历史记录......................|netrw-qb| 标记的文件:设置目标目录.........|netrw-mt| 标记的文件:使用书签的目标目录.....|netrw-Tb| 标记文件......................................|netrw-mf| 通过正则表达式标记文件................|netrw-mr| 将文件移动到目标.............................|netrw-mm|
标记的文件:取消标记 netrw-mu {{{2(参见 netrw-mfnetrw-mF
“mu” 映射将取消标记所有当前标记的文件。 此命令与“mF”不同,后者只取消标记当前目录中的文件,而“mu”将取消标记全局文件和所有缓冲区本地标记的文件。(参见 netrw-mF
(如果您对 netrw 文件传输设置感兴趣,请参见 netrw-optionsnetrw-protocol
<netrw.vim> 浏览器以变量的形式提供设置,您可以修改这些设置;通过将这些设置放在您的 <.vimrc> 中,您可以自定义浏览偏好。(另见:netrw-settings
---                                -----------
Var                                Explanation
---                                -----------
g:netrw_altfile 有些人喜欢 CTRL-^ 返回到上次编辑的文件。 通过将此参数设置为 1 来选择它。 其他人喜欢 CTRL-^ 返回到 netrw 浏览缓冲区。 通过将此参数设置为 0 来选择它。默认值:=0
g:netrw_alto 通过设置此变量(参见 netrw-o)将拆分方式从上方更改为下方。默认值:=&sb(参见 'sb'
g:netrw_altv 通过设置此变量(参见 netrw-v)将拆分方式从左侧更改为右侧。默认值:=&spr(参见 'spr'
g:netrw_banner 启用/禁止横幅 =0:禁止显示横幅 =1:启用横幅(默认值)
g:netrw_bannerbackslash 如果此变量存在且不为零,则横幅将使用反斜杠而不是正斜杠显示。
g:netrw_browse_split 浏览时,<cr> 将通过以下方式打开文件: =0:重复使用相同的窗口(默认值) =1:首先水平拆分窗口 =2:首先垂直拆分窗口 =3:在新标签页中打开文件 =4:像“P”一样(即打开上一个窗口) 请注意,g:netrw_preview 可用于获得垂直拆分而不是水平拆分。 =[servername,tab-number,window-number] 给定这样一个 List,将使用名为“servername”的远程服务器进行编辑。 它还将使用指定的标签和窗口编号来执行编辑(参见 clientservernetrw-ctrl-r) 此选项不会影响 :Lexplore 窗口的生成。
g:netrw_browsex_viewer 指定用户对查看器的偏好
"kfmclient exec"
"gnome-open"
g:netrw_browsex_support_remote 指定指定的查看器是否支持远程 URL。(参见 netrw-handler)。
g:netrw_chgperm Unix/Linux: "chmod PERM FILENAME" Windows: "cacls FILENAME /e /p PERM" 用于更改文件的访问权限。
g:netrw_clipboard =1 默认情况下,netrw 将尝试确保剪贴板的值保持不变。 但是,一些用户报告说他们使用它时速度有问题;因此,此选项在设置为零时,可以让此类用户阻止 netrw 保存和恢复剪贴板(后者只在需要时进行)。 这意味着如果剪贴板被正常 netrw 操作(无意中)更改,它将不会恢复到之前的状态。
g:netrw_compress ="gzip" 将使用此命令压缩标记的文件
g:Netrw_corehandler 允许您指定在通过 netrw 的浏览器的“x”命令(参见 netrw-x)处理<core> 文件时要执行的其他操作。 如果存在,g:Netrw_corehandler 指定一个或多个函数引用(参见 Funcref)。(大写 g:Netrw... 是必需的,因为它包含一个函数引用)
g:netrw_ctags ="ctags" 用于创建标签的默认外部程序
g:netrw_cursor = 2(默认值)此选项控制 netrw 对 'cursorline'(cul)和 'cursorcolumn'(cuc)设置的使用
值 细长树 宽 =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
其中 u-cul:用户 'cursorline' 的初始设置使用 u-cuc:用户 'cursorcolumn' 的初始设置使用 U-cul:用户 'cursorline' 的当前设置使用 U-cuc:用户 'cursorcolumn' 的当前设置使用 cul:'cursorline' 将在本地设置 cuc:'cursorcolumn' 将在本地设置
“初始设置”是指 netrw 最后一次看到 g:netrw_cursor >= 5 或 netrw 最初运行时生效的 'cuc''cul' 设置的值。
g:netrw_decompress = { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf"} 一个映射到解压缩程序的字典。
g:netrw_dirhistmax =10:控制过去历史记录的最大数量。 可以为零以禁止历史记录。(相关:netrw-qb netrw-u netrw-U
g:netrw_dynamic_maxfilenamelen =32:启用 g:netrw_maxfilenamelen 的动态确定,这会影响本地文件长列表。
g:netrw_errorlvl =0:允许显示大于或等于此值的错误级别 0:提示 1:警告 2:错误
g:netrw_fastbrowse =0:慢速目录浏览;从不重复使用目录列表;始终获取目录列表。 =1:中等速度目录浏览;仅在远程目录浏览时重复使用目录列表。(默认值) =2:快速目录浏览;仅在目录以前未被访问过(或使用 netrw-ctrl-l)时才获取目录列表。
快速浏览保留旧的目录列表缓冲区,这样就不需要重新获取它们。 此功能对于远程浏览尤其重要。 但是,如果在这些目录中添加或删除文件,则旧的目录缓冲区将过时。 您可以始终使用 netrw-ctrl-l 刷新此类目录列表。 此选项让用户可以选择在准确性(即最新的列表)和速度之间进行权衡。
g:netrw_ffkeep(默认值:不存在) 如果此变量存在且为零,则 netrw 不会对 'fileformat' 进行保存和恢复。
g:netrw_fname_escape =' ?&;%' 在远程读写之前使用在文件名上
g:netrw_ftp_browse_reject ftp 会产生许多错误和警告,这些错误和警告可能会在列表中显示为“目录”和“文件”。 此模式用于删除此类嵌入式消息。 默认值为:'^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 用于传递给 ftp 进行目录列表的选项。 默认值:unix 或 g:netrw_cygwin 设置:: "ls -lF" 否则为 "dir"
g:netrw_ftp_sizelist_cmd 用于传递给 ftp 进行目录列表的选项,按文件大小排序。 默认值:unix 或 g:netrw_cygwin 设置:: "ls -slF" 否则为 "dir"
g:netrw_ftp_timelist_cmd 用于传递给 ftp 进行目录列表的选项,按最后修改时间排序。默认值:unix 或 g:netrw_cygwin 设置为: "ls -tlF",否则为 "dir"
g:netrw_glob_escape ='[]*?`{~$' (unix) ='[]*?`{$' (windows 在目录名中这些字符将在应用 glob() 之前进行转义
g:netrw_gx ="<cfile>" 此选项控制 gx (netrw-gx) 如何获取光标下的文本。有关可能性,请参见 expand()
g:netrw_hide 由 "a" 映射控制(参见 netrw-a) =0 : 显示所有 =1 : 显示非隐藏文件 =2 : 仅显示隐藏文件 默认值: =1
g:netrw_home 书签和历史记录保存的位置的主目录(作为 .netrwbook 和 .netrwhist)。Netrw 对字符串使用 expand()。默认值:stdpath("data")(参见 stdpath())
g:netrw_keepdir =1(默认值)使当前目录不受浏览目录的影响。=0 使当前目录与浏览目录相同。当前浏览目录包含在 b:netrw_curdir 中(另请参见 netrw-cd)
g:netrw_keepj ="keepj"(默认值)netrw 尝试使 :jumps 表不受影响。="" netrw 将不使用 :keepjumps,仅对保存/恢复位置有例外。
g:netrw_list_cmd 用于列出远程目录的命令 默认值:(如果 ssh 可执行)"ssh HOSTNAME ls -FLa"
g:netrw_list_cmd_options 如果此变量存在,则其内容将附加到 g:netrw_list_cmd。例如,使用 "2>/dev/null" 在 unix 系统上消除横幅消息。
g:netrw_liststyle 设置默认列表样式: = 0:精简列表(每行一个文件) = 1:长列表(每行一个文件,带有时间戳信息和文件大小) = 2:宽列表(多列文件) = 3:树状列表
g:netrw_list_hide 用于隐藏文件的逗号分隔模式列表 模式是正则表达式(参见 regexp) 对 git-ignore 文件有一些特殊支持:您可以添加来自辅助函数 'netrw_gitignore#Hide() 的输出,自动隐藏所有被 git 忽略的文件。有关更多详细信息,请参见 netrw-gitignore。默认值:""
示例
let g:netrw_list_hide= '.*\.swp$'
let g:netrw_list_hide= netrw_gitignore#Hide() .. '.*\.swp$'
g:netrw_localcopycmd ="cp" Linux/Unix/MacOS/Cygwin =expand("$COMSPEC") Windows 将标记的文件 (netrw-mf) 复制到目标目录 (netrw-mt, netrw-mc)
g:netrw_localcopycmdopt ='' Linux/Unix/MacOS/Cygwin =' \c copy' Windows g:netrw_localcopycmd 的选项
g:netrw_localcopydircmd ="cp" Linux/Unix/MacOS/Cygwin =expand("$COMSPEC") Windows 将目录复制到目标目录。(netrw-mc, netrw-mt)
g:netrw_localcopydircmdopt =" -R" Linux/Unix/MacOS/Cygwin =" /c xcopy /e /c /h/ /i /k" Windows g:netrw_localcopydircmd 的选项
g:netrw_localmkdir ="mkdir" Linux/Unix/MacOS/Cygwin =expand("$COMSPEC") Windows 用于创建本地目录的命令
g:netrw_localmkdiropt ="" Linux/Unix/MacOS/Cygwin =" /c mkdir" Windows g:netrw_localmkdir 的选项
g:netrw_localmovecmd ="mv" Linux/Unix/MacOS/Cygwin =expand("$COMSPEC") Windows 将标记的文件 (netrw-mf) 移动到目标目录 (netrw-mt, netrw-mm)
g:netrw_localmovecmdopt ="" Linux/Unix/MacOS/Cygwin =" /c move" Windows g:netrw_localmovecmd 的选项
g:netrw_maxfilenamelen 默认值为 32,选择该值是为了使长列表适合 80 列显示。如果您的屏幕更宽,并且您的文件或目录名称超过 32 个字节,您可以设置此选项以保持列表为列状。
g:netrw_mkdir_cmd 用于通过 ssh 创建远程目录的命令(另请参见 g:netrw_remote_mkdir) 默认值: "ssh USEPORT HOSTNAME mkdir"
g:netrw_mousemaps =1(默认值)在浏览时启用鼠标按钮: 左键单击:打开文件/目录 shift-左键单击:标记文件 中键单击:与 P 相同 右键单击:删除文件/目录 =0:禁用鼠标映射
g:netrw_nobeval 不存在(默认值)如果此变量存在,则将抑制气球评估(参见 'ballooneval')
g:netrw_sizestyle 未定义:实际字节(默认值) ="b" : 实际字节(默认值) ="h" : 人类可读(例如 5k、4m、3g) 使用 1000 为基数 ="H" : 人类可读(例如 5K、4M、3G) 使用 1024 为基数 长列表 (netrw-i) 和查询文件映射 (netrw-qf) 将使用指定的样式显示文件大小。
g:netrw_usetab 如果此变量存在且非零,则将启用支持收缩/展开 Lexplore 或 netrw 窗口的 <tab> 映射。(参见 netrw-c-tab)
g:netrw_remote_mkdir 用于通过 ftp 创建远程目录的命令(另请参见 g:netrw_mkdir_cmd) 默认值: "mkdir"
g:netrw_retmap 如果它存在并设置为 1,则: * 如果在 netrw 选择的文件中,并且 * 没有正常模式 <2-leftmouse> 映射存在,则 <2-leftmouse> 将被映射,以便轻松返回到 netrw 浏览器窗口。示例:单击一次以选择并打开文件,双击以返回。
请注意,您可以选择: * 让 g:netrw_retmap= 1,并且 * nmap <silent> YourChoice <Plug>NetrwReturn,并使用另一个映射(而不是 <2-leftmouse>)来调用返回。
您也可以使用 :Rexplore 命令执行相同的操作。
默认值: =0
g:netrw_rm_cmd 用于删除远程文件的命令 默认值: "ssh USEPORT HOSTNAME rm"
g:netrw_rmdir_cmd 用于删除远程目录的命令 默认值: "ssh USEPORT HOSTNAME rmdir"
g:netrw_rmf_cmd 用于删除远程软链接的命令 默认值: "ssh USEPORT HOSTNAME rm -f"
g:netrw_servername 使用此变量为 netrw-ctrl-r 提供其服务器要使用的名称。默认值: "NETRWSERVER"
g:netrw_sort_by 按 "name"、"time"、"size" 或 "exten" 排序。默认值: "name"
g:netrw_sort_direction 排序方向:"normal" 或 "reverse" 默认值: "normal"
g:netrw_sort_options 排序是使用 :sort 完成的;此变量的值将附加到 sort 命令。因此,您可以忽略大小写,例如,在您的 .vimrc 中使用以下内容
let g:netrw_sort_options="i"
默认值: ""
g:netrw_sort_sequence 按名称排序时,首先按逗号分隔的模式序列排序。请注意,应在您的模式中考虑任何用于指示文件类型的修饰。默认值: '[\/]$,,\.bak$,\.o$,\.h$, \.info$,\.swp$,\.obj$'
g:netrw_special_syntax 如果为真,则某些文件将在浏览器中使用特殊语法显示
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
此外,在 'suffixes' 中提到的那些组也被添加到特殊文件突出显示组中。这些语法突出显示组默认链接到 netrwGray 或 Folded(参见 hl-Folded),但您可以将类似以下内容的行放在
hi link netrwCompress Visual
中您的 <.vimrc> 中,以使用您自己的偏好。或者,您可以将这些规范放在
.vim/after/syntax/netrw.vim.
* netrwGray has not been previously
  defined
* the gui is running
例如,我个人使用深色背景配色方案,在 .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 有时会生成一些不需要的行、消息、横幅等等,这些东西你不希望它们冒充为“目录”和“文件”。使用此模式来删除这些嵌入的消息。默认值为:'^total\s\+\d\+$'
g:netrw_ssh_cmd 您可以指定一个可执行命令,而不是 ssh,用于远程操作,例如列表、文件删除等。默认值:ssh
g:netrw_suppress_gx_mesg =1 : 浏览器有时会生成一些通常不需要的消息,这些消息与页面混合在一起。但是,当使用链接时,例如,这些消息是浏览器生成的。通过将此选项设置为 0,netrw 将不会抑制浏览器消息。
g:netrw_tmpfile_escape =' &;' escape() 将应用于所有临时文件,以转义这些字符。
g:netrw_timefmt 指定用于 vim 的 strftime() 的格式字符串。默认值 "%c" 是“当前区域设置的首选日期和时间表示”根据我的 strftime() 手册页条目;但是,并非所有人都满意它。一些备选方案:"%a %d %b %Y %T"、" %a %Y-%m-%d %I-%M-%S %p" 默认值: "%c"
g:netrw_use_noswf netrw 通常会避免为浏览器缓冲区写入交换文件。但是,在某些系统下,这显然会导致出现讨厌的 ml_get 错误;如果您遇到 ml_get 错误,请尝试在您的 .vimrc 中添加 let g:netrw_use_noswf= 0。默认值: 1
g:netrw_winsize 指定使用 "o"(参见 netrw-o)、"v"(参见 netrw-v)、:Hexplore:Vexplore 创建的新窗口的初始大小。g:netrw_winsize 是一个整数,描述了用于新窗口的当前 netrw 缓冲区的窗口的百分比。如果 g:netrw_winsize 小于零,则将使用 g:netrw_winsize 的绝对值来指定新窗口的行数或列数。如果 g:netrw_winsize 为零,则将进行正常拆分(即,'equalalways' 将生效,例如)。默认值: 50(表示 50%)
g:netrw_wiw =1 指定收缩 netrw/Lexplore 窗口时使用的最小窗口宽度(参见 netrw-c-tab)。
g:netrw_xstrlen 控制 netrw 如何计算字符串长度,包括多字节字符的字符串长度。(感谢 N Weibull 和 T Mechelynck) =0: 使用 Vim 内置的 strlen() =1: 代码点的数量 (拉丁字母 a + 合并的重音符号为两个代码点) (默认) =2: 间隔代码点的数量 (拉丁字母 a + 合并的重音符号为一个间隔代码点;一个制表符为一个;宽窄 CJK 为一个;等等) =3: 虚拟长度 (将制表符视为 1 到 'tabstop' 之间的任何值,将宽 CJK 视为 2 而不是 1,将阿拉伯字母 alif 在紧邻 lam 前面时视为零,否则视为一,等等)
g:NetrwTopLvlMenu 此变量指定顶级菜单名称;默认情况下,它是“Netrw.”。如果您希望更改此名称,请在您的 .vimrc 中进行更改。

NETRW 浏览和选项的不兼容性 netrw-incompatible {{{2

Netrw 被设计为通过保存用户选项、将选项设置为与 netrw 的需求兼容的值,然后恢复它们来处理用户选项。但是,autochdir 选项
:set acd
存在问题。Autochdir 将当前目录设置为包含您正在编辑的文件的目录;这显然也适用于目录。换句话说,autochdir 将当前目录设置为包含“文件”的目录(即使该“文件”本身是一个目录)。

NETRW 设置窗口 netrw-settings-window {{{2

使用 NetrwSettings.vim 插件,
:NetrwSettings
将弹出一个窗口,其中包含 netrw 用于其设置的许多变量。您可以更改任何变量的值;当您保存文件时,其中的设置将被使用。您也可以在任何行上按“?”以获取关于每个变量的作用的帮助。

获取文件 netrw-obtain netrw-O {{{2

如果没有标记文件
在浏览远程目录时,您可以通过按 O 键获取光标下的文件(即在您的本地机器上获取副本,但不编辑)。
如果有标记文件
将获取标记的文件(即,将副本传输到您的本地机器,但不设置为编辑)。
此操作仅支持 ftp 和 scp(但由于这两个协议都可用于浏览,所以这应该不是问题)。然后,状态栏的右侧将显示类似于“获取文件名”的消息。传输完成后,状态行将恢复。
Netrw 还可以使用本地浏览器“获取”文件。Netrw 对目录的显示不一定与 Vim 的“当前目录”相同,除非在用户的 <.vimrc> 中将 g:netrw_keepdir 设置为 0。您可以使用本地浏览器选择文件(将光标置于其上),然后按“O”将“获取”该文件;即将其复制到 Vim 的当前目录。
相关主题:* 要查看当前目录,请使用 :pwd * 要将当前浏览的目录设为当前目录,请参见 netrw-cd * 要自动将当前浏览的目录设为当前目录,请参见 g:netrw_keepdir
netrw-newfile netrw-createfile 在 NETRW 的当前目录中打开一个新文件 netrw-% {{{2
要在 netrw 的当前目录中打开一个新文件,请按“%”。此映射将询问用户新文件名;该名称的空文件将被放置在 netrw 的当前目录中(即 b:netrw_curdir)。
如果使用 Lexplore (netrw-:Lexplore),新文件将在 g:netrw_chgwin 窗口中生成。
相关主题:netrw-d

预览窗口 netrw-p netrw-preview {{{2

当光标位于要预览的文件名上时,您可以使用“p”键使用预览窗口。然后,显示将拆分为两个部分,分别显示浏览器(光标将保留在其中)和文件(参见 :pedit)。默认情况下,拆分将是水平的;如果您已先设置 g:netrw_preview,则可以使用垂直拆分。
一组有趣的 netrw 设置是
let g:netrw_preview   = 1
let g:netrw_liststyle = 3
let g:netrw_winsize   = 30
这些将
1. 将预览文件的默认拆分方式设为垂直拆分 2. 将默认列表样式设为“树” 3. 当打开垂直预览窗口时,目录列表将仅使用 30% 的可用列;其余窗口用于预览窗口。
相关:如果您喜欢这个想法,您可能也会对 :Lexplore (netrw-:Lexplore) 或 g:netrw_chgwin 感兴趣

上一个窗口 netrw-P netrw-prvwin {{{2

要编辑光标下的文件或目录,使其在先前使用过的(最后访问过的)窗口中(参见 :he CTRL-W_p),请按“P”。如果只有一个窗口,则该窗口将被水平拆分(默认情况下)。
如果有多个窗口,则先前窗口将被重新用于所选文件/目录。如果先前窗口的关联缓冲区已被修改,并且只有一个窗口具有该缓冲区,则会询问用户是否希望先保存缓冲区(是、否或取消)。
相关操作 netrw-cr netrw-o netrw-t netrw-v 关联的设置变量:g:netrw_alto 控制上下拆分 g:netrw_altv 控制左右拆分 g:netrw_preview 控制水平拆分与垂直拆分 g:netrw_winsize 控制初始大小
另请参见:g:netrw_chgwin netrw-p
要刷新本地或远程目录列表,请按 ctrl-l (<c-l>) 或在列表中的 ./ 目录条目上按 <cr>。您也可以使用“:e .”刷新本地目录。

反转排序顺序 netrw-r netrw-reverse {{{2

您可以通过按“r”键在普通排序顺序和反向排序顺序之间切换。
相关主题:netrw-s 关联的设置变量:g:netrw_sort_direction

重命名文件或目录 netrw-move netrw-rename netrw-R {{{2

如果没有标记文件:(参见 netrw-mf)
重命名文件和目录涉及将光标移动到要移动(重命名)的文件/目录,然后按“R”。然后将询问您要将文件/目录重命名为什么名称。您可以使用“V”命令(可视选择)选择一行范围,然后按“R”;将询问您每个文件的重命名目标。
如果有标记文件:(参见 netrw-mf)
标记的文件将被重命名(移动)。将如上所述询问您以指定要将文件/目录移动到的位置。
如果您在重命名查询中回答“s/frompattern/topattern/”,则标记文件列表上的后续文件将通过获取每个名称、应用该替换并将每个文件重命名为结果来重命名。例如
mr  [query: reply with *.c]
R   [query: reply with s/^\(.*\)\.c$/\1.cpp/]
此示例将标记所有“*.c”文件,然后将它们重命名为“*.cpp”文件。Netrw 会在未经确认的情况下保护您免受覆盖本地文件,但不会保护您免受覆盖远程文件。
ctrl-X 字符对于重命名文件具有特殊含义
<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.
警告
请注意,移动文件是一个危险的操作;复制更安全。这是因为对于远程文件,“移动”实际上是复制 + 删除——如果复制失败而删除成功,您可能会丢失该文件。请自行承担风险。
g:netrw_rename_cmd 变量用于实现远程重命名。默认情况下,它的值为
ssh HOSTNAME mv
您可以通过在使用薄样式时使用 V (linewise-visual) 选择它们来重命名一组文件和目录。
有关如何编辑命令行的更多信息,请参见 cmdline-editing;尤其是,您会发现 <ctrl-f>(启动命令行窗口编辑)和 <ctrl-c>(使用光标下的命令行)与 R 命令结合使用非常有用。

选择排序样式 netrw-s netrw-sort {{{2

您可以按名称、时间或(文件)大小选择排序样式。“s”映射允许您在这三种选择之间循环;目录列表将自动刷新以反映所选的样式。
相关主题:netrw-r netrw-S 关联的设置变量:g:netrw_sort_by g:netrw_sort_sequence

设置编辑窗口 netrw-editwindow netrw-C netrw-:NetrwC {{{2

您可以使用“C”映射、使用 :NetrwC [win#] 命令或通过将 g:netrw_chgwin 设置为所选窗口号来选择一个 netrw 窗口进行编辑。随后选择要编辑的文件 (netrw-cr) 将使用该窗口。
* C : 单独使用将选择当前包含 netrw 缓冲区的窗口,以供随后通过 netrw-cr 进行编辑。C 映射仅在 netrw 缓冲区中可用。
* [count]C : 该计数将用作要用于随后通过 netrw-cr 进行编辑的窗口号。
* :NetrwC 将 g:netrw_chgwin 设置为当前窗口
* :NetrwC win# 将 g:netrw_chgwin 设置为指定的窗口号
使用
let g:netrw_chgwin= -1
将恢复默认编辑行为(即,后续编辑将使用当前窗口)。
相关主题:netrw-cr g:netrw_browse_split 关联的设置变量:g:netrw_chgwin
缩小或扩大 NETRW 或 LEXPLORE 窗口 netrw-c-tab {{{2
<c-tab> 键将切换 netrw 或 :Lexplore 窗口的宽度,但前提是 g:netrw_usetab 存在且不为零(当然,只有当您的终端支持区分 <c-tab> 和普通 <tab> 时才有效)。
* 如果当前窗口是 netrw 窗口,则切换其宽度(在 g:netrw_wiw 和其原始宽度之间)
* 否则,如果当前标签页中存在 :Lexplore 窗口,则切换其宽度
* 否则,打开一个 :Lexplore 窗口
如果 g:netrw_usetab 存在且为零,或者 <c-tab> 存在预先映射,则 <c-tab> 将不会被映射。也可以将除 <c-tab> 之外的其他内容映射: (但您仍然需要设置 g:netrw_usetab)。
nmap <unique> (whatever)        <Plug>NetrwShrink
相关主题: :Lexplore 关联设置变量: g:netrw_usetab

用户指定的映射 netrw-usermaps {{{1

可以创建自定义用户映射。指定一个变量 g:Netrw_UserMaps 来保存 List 中的键映射字符串和函数名列表
[["keymap-sequence","ExampleUserMapFunc"],...]
当 netrw 为 netrw 缓冲区设置映射时,如果 g:Netrw_UserMaps 存在,则会调用内部函数 netrw#UserMaps(islocal)。此函数遍历 g:Netrw_UserMaps 列表中的所有条目
* 设置映射
nno <buffer> <silent> KEYMAP-SEQUENCE
:call s:UserMaps(islocal,"ExampleUserMapFunc")
* 如果该函数调用的结果是字符串 "refresh",则刷新 * 如果结果字符串不为空,则执行该字符串 (:exe result) * 如果结果是 List,则对结果 List 中的每个字符串执行上述两个操作
用户函数传递一个参数;它类似于
fun! ExampleUserMapFunc(islocal)
其中 a:islocal 为 1 表示它是本地目录系统调用,为 0 表示远程目录系统调用。
netrw-call netrw-expose netrw-modify 使用 netrw#Expose("varname") 访问 netrw 内部(脚本本地)变量。使用 netrw#Modify("varname",newvalue) 更改 netrw 内部变量。使用 netrw#Call("funcname"[,args]) 使用指定的参数调用 netrw 内部函数。
示例:获取 netrw 标记文件列表的副本
let netrwmarkfilelist= netrw#Expose("netrwmarkfilelist")
示例:修改 netrw 标记文件列表的值
call netrw#Modify("netrwmarkfilelist",[])
示例:通过对 gu 的映射清除 netrw 的标记文件列表
" 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. 问题和解决方法 netrw-problems {{{1
(本节可能会随着我获得反馈而不断扩展) (另请参阅 netrw-debug) netrw-p1
P1. 我使用的是 Windows,并且我的网络浏览(使用 ftp)无法按时间或大小进行排序! - 或者 - 远程系统是 Windows 服务器;为什么我无法按时间或大小排序?
Windows 的 ftp 对 ls 的支持有限(即,它不接受排序选项)。它不支持 -F,该选项提供解释性字符(ABC/ 表示 "ABC 是一个目录")。然后 netrw 使用 "dir" 来获取其简短列表和长列表。如果您认为您的 ftp 支持完整的 ls,请将以下内容添加到您的 <.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"
或者,如果您在 Windows 计算机上安装了 cygwin,请将以下内容添加到您的 <.vimrc>
let g:netrw_cygwin= 1
当远程系统为 Windows 时,也会出现此问题。在这种情况下,各种 g:netrw_ftp_[time|size]list_cmds 与上面显示的一致,但远程系统不会正确地修改其列表行为。
netrw-p2
P2. 我尝试了 rcp://user@host/ (或 ftp 之外的其他协议) 并且 netrw 使用了 ssh! 这不是我想要的...
Netrw 有两种方法来浏览远程目录:ssh 和 ftp。除非您明确指定 ftp,否则将使用 ssh。当需要下载文件(不仅仅是目录列表)时,netrw 将使用给定的协议来执行此操作。
netrw-p3
P3. 我希望长列表成为默认列表。 {{{2
将以下语句添加到您的 vimrc
let g:netrw_liststyle= 1
查看 netrw-browser-var 以获取您可以设置的其他自定义选项。
netrw-p4
P4. 我的时间在本地浏览时显示得很奇怪 {{{2
您的系统中的 strftime() 是否接受 "%c" 以生成类似 "Sun Apr 27 11:49:23 1997" 的日期?如果不是,请执行 "man strftime" 并找出应该使用哪个选项。然后将其添加到您的 vimrc
let g:netrw_timefmt= "%X"  (where X is the option)
netrw-p5
P5. 我希望我的当前目录跟踪我的浏览。 {{{2 如何操作?
将以下行添加到您的 vimrc
let g:netrw_keepdir= 0
netrw-p6
P6. 我的文件名中使用中文(或其他非 ASCII)字符, {{{2 并且 netrw (Explore、Sexplore、Hexplore 等) 无法显示它们!
(摘自吴永伟在 vim 邮件列表中的回答) 我现在看到了问题。您的代码页不是 936,对吗?Vim 似乎只能打开在当前代码页中有效的名称的文件,就像许多其他不使用 Unicode 版本的 Windows API 的应用程序一样。这是一个与操作系统相关的问题。当系统区域设置使用 UTF-8 时,例如现代 Linux 发行版,您就不会遇到此类问题。
(...这是我推荐人们使用 utf-8 的另一个原因!)
netrw-p7
P7. 我收到 "ssh 在您的系统上不可执行" 的错误消息 - 我该 {{{2 怎么办?
(Dudley Fox) 我认识的大多数人都使用 putty 来进行 Windows ssh。这是一个免费的 ssh/telnet 应用程序。您可以在此处了解更多信息
(Marlin Unruh) 这个程序对我来说也很有效。它是一个单一可执行文件,因此他/她可以将其复制到 Windows\System32 文件夹中并创建一个快捷方式。
(Dudley Fox) 您可能还想考虑使用 plink,因为它听起来最像您要找的东西。plink 是 putty 套件中的一个应用程序。
(Vissale Neang) 也许您可以尝试使用 OpenSSH for windows,它可以从以下地址获取
它不需要完整的 Cygwin 包。
(Antoine Mechelynck) 对于在原生 Windows 环境中工作的单个类 Unix 程序,我建议从 sourceforge 上的 GnuWin32 项目获取,如果该项目有的话
与在 Windows 之上设置类 Unix 虚拟机的 Cygwin 不同,GnuWin32 是使用 Windows 系统调用重写的 Unix 实用程序,其程序在 cmd.exe "Dos 框" 中运行良好。
(dave) 下载 WinSCP 并使用它连接到服务器。在“首选项”>“编辑器”中,将 gvim 设置为您的编辑器
点击“添加...”
设置外部编辑器(根据需要调整路径,包括引号和 !.!):"c:\Program Files\Vim\vim82\gvim.exe" !.!
检查下方框中的文件类型是否为 {asterisk}.{asterisk}(所有文件)或您想要的文件类型(cec:将 {asterisk} 更改为 *;我不得不这样写,否则 helptags 系统会认为这是一个标签)
确保它位于列表框的顶部(点击它,然后点击“向上”如果它不在顶部)。如果使用 Norton Commander 风格,您只需按 <F4> 即可在 gvim 的本地副本中编辑文件。
(Vit Gottwald) 如何生成公钥/私钥并将公钥保存到服务器上
http://www.chiark.greenend.org.uk/~sgtatham/putty/0.60/htmldoc/Chapter8.html#pubkey-gettingready
                      (8.3 Getting ready for public key authentication)
如何使用私钥与 "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) 我发现 cwRsync 附带的 ssh 非常出色,并且在大多数我遇到的 Windows 系统上安装了 cwRsync 或 cwRsyncServer。我想 COPSSH 由同一个人打包,可能更适合作为 Windows 上的 ssh 使用,并且可能包括 sftp 等,我怀疑 cwRsync 没有,尽管它可能会有
(cec) 要正确使用上述建议,您需要在您的 .vimrc 中修改以下用户可设置变量
第一个 (g:netrw_ssh_cmd) 最重要;大多数其他变量将默认使用 g:netrw_ssh_cmd 中的字符串。
netrw-p8 netrw-ml_get P8. 我正在浏览、更改目录,然后砰的一声! 出现了 ml_get 错误,我不得不关闭 vim。有什么办法解决这个问题吗?
通常情况下,netrw 会尝试避免为其临时目录缓冲区写入交换文件。但是,在某些系统上,这种尝试似乎会导致 ml_get 错误。请尝试在您的 <.vimrc> 中将 g:netrw_use_noswf 设置为 0
let g:netrw_use_noswf= 0
netrw-p9
P9. 我被 "[something] 是一个目录" 和 {{{2 "按 ENTER 或键入命令以继续" 提示困扰...
"[something] 是一个目录" 提示是由 Vim 发出的,而不是由 netrw 发出的,似乎无法解决这个问题。结合默认的 cmdheight 为 1,此消息会导致 "按 ENTER..." 提示。所以:阅读 hit-enter;我还建议您在您的 <.vimrc> 文件中将 'cmdheight' 设置为 2(或更大)。
netrw-p10
P10. 我希望有两个窗口;左边是一个简短的窗口,右边是我的 {{{2 编辑窗口。我该如何实现?
您可能希望 netrw 像在一个侧边窗口中一样运行。如果是这样,您可能会发现 ":[N]Lexplore" 满足您的需求。可选的 "[N]" 允许您选择 :Lexplorer 窗口启动时所需的列数(请参阅 g:netrw_winsize 了解此参数的工作原理)。
以前的解决方案
* 在您的 <.vimrc> 中添加以下行:let g:netrw_altv = 1 * 编辑当前目录::e . * 选择一些文件,按 v * 按您希望的方式调整窗口大小(请参阅 CTRL-W_<CTRL-W_>)。如果您使用的是 gvim,您可以使用鼠标拖动分隔线。 * 当您需要新文件时,使用 ctrl-w h 返回 netrw 浏览器,选择一个文件,然后按 P(请参阅 CTRL-W_hnetrw-P)。如果您使用的是 gvim,您可以在浏览器窗口中按 <leftmouse>,然后按 <middlemouse> 选择文件。
netrw-p11
P11. 我的目录排序不正确,或者在列出的文件名中出现了多余的字母,或者在宽列表中内容对不齐,...
这可能是由于编码问题。我通常使用 utf-8,但实际上只使用 ascii(即 32-126 之间的字节)。多字节编码每个字符使用两个(或更多)字节。您可能需要更改 g:netrw_sepchr 和/或 g:netrw_xstrlen
netrw-p12
P12. 我是 Windows + putty + ssh 用户,当尝试 {{{2 浏览时,目录缺少尾部的 "/",因此 netrw 将它们视为文件传输,而不是尝试浏览子目录。我该如何解决?
(mikeyao) 如果您想在 Windows 下通过 ssh 和 putty 使用 vim,请尝试将 pscp/psftp 与 plink 结合使用。pscp/psftp 用于连接,plink 用于在服务器上执行命令,例如:使用 'ls' 列出文件和目录。
以下是我用于执行此操作的设置
" 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-p13
P13. 我希望使用 Nwrite 和 scp/ssh 样式连接加速写入。如何操作?(Thomer M. Gil)
尝试使用 ssh 的 ControlMaster 和 ControlPath(参见 ssh_config 手册页)来通过单个网络连接共享多个 ssh 连接。这将减少每次文件写入时的加密握手,有时可以将速度提高一个数量级。(参见 http://thomer.com/howtos/netrw_ssh.html)(经许可包含)
在你的 ~/.ssh/config 中添加以下内容
# you change "*" to the hostname you care about
Host *
  ControlMaster auto
  ControlPath /tmp/%r@%h:%p
然后创建到主机的 ssh 连接并保持运行
ssh -N host.domain.com
现在使用 Vim 的 Netrw 远程打开文件,享受速度的提升
vim scp://host.domain.com//home/user/.bashrc
netrw-p14
P14. 我如何使用双击而不是 netrw 通常的 {{{2 单击来打开文件或目录?(Ben Fritz)
首先,使用以下命令禁用 netrw 的映射
let g:netrw_mousemaps= 0
然后在 $HOME/.vim/after/ftplugin/netrw.vim 中创建仅针对 netrw 缓冲区的映射
nmap <buffer> <2-leftmouse> <CR>
注意,将 g:netrw_mousemaps 设置为零将关闭所有 netrw 的鼠标映射,而不仅仅是 <leftmouse> 映射。(参见 g:netrw_mousemaps
netrw-p15
P15. 在编辑远程文件(例如::e ftp://hostname/path/file)时,{{{2 在 Windows 下,我收到一条 E303 消息,抱怨它无法打开交换文件。
(romainl)看起来你是在受保护的目录中启动 Vim 的。从你的 $HOME 或其他可写目录启动 netrw。
netrw-p16
P16. Netrw 正在自行关闭缓冲区。{{{2 什么步骤可以重现问题?1. :Explore,导航目录,打开文件 2. :Explore,打开另一个文件 3. 步骤 1 中打开的缓冲区将被关闭。o 预期输出是什么?你看到了什么?我预计两个缓冲区都存在,但只有最后一个存在。
(Lance)问题是由 .vimrc 中的 "set autochdir" 引起的。(drchip)我能够使用 'acd' 设置复制此问题。看起来缓冲区并没有真正关闭;“:ls!” 会显示它们(尽管“:ls” 不会)。
netrw-P17
P17. 如何在本地编辑一个只能通过 {{{2 另一个可通过 ssh 访问的服务器访问的文件?参见 http://stackoverflow.com/questions/12469645/ “使用 Vim 远程编辑仅从 ServerA 可访问的 ServerB 上的文件”
netrw-P18
P18. 如何在目录列表中获得编号?{{{2 使用 g:netrw_bufsettings,你可以控制 netrw 的缓冲区设置;尝试将以下内容添加到你的 .vimrc 中
let g:netrw_bufsettings="noma nomod nu nobl nowrap ro nornu"
如果你想使用相对编号,请尝试以下内容
let g:netrw_bufsettings="noma nomod nonu nobl nowrap ro rnu"
netrw-P19
P19. 如何让 gvim 启动时显示目录列表?{{{2 尝试将以下代码片段添加到你的 .vimrc 中
augroup VimStartup
  au!
  au VimEnter * if expand("%") == "" && argc() == 0 &&
  \ (v:servername =~ 'GVIM\d*' || v:servername == "")
  \ | e . | endif
augroup END
如果你愿意,可以使用 Lexplore 代替“e”。此代码片段假设你启用了客户端-服务器功能(即“huge” Vim 版本)。
netrw-P20
P20. 我创建了一个带有重音符号的目录(或文件),{{{2 但 netrw 不允许我进入该目录/读取该文件
可能是 shell 或操作系统使用的编码与你使用的 vim(netrw)不同。未来可能会发布支持“systemencoding”的 Vim 修补程序来解决此问题;目前,只需让 netrw 使用正确的编码。例如
au FileType netrw set enc=latin1
netrw-P21
P21. 当我尝试复制或移动文件时,我收到错误消息:{{{2
**error** (netrw) tried using g:netrw_localcopycmd<cp>; it doesn't work!
怎么了?
Netrw 使用几个系统级命令来执行操作(参见
你可能需要通过在你的 .vimrc 中正确设置来调整其中一个或多个命令的默认命令。另一个困难的原因是这些命令使用 vim 的本地目录,该目录可能与 netrw 显示的浏览目录不同(参见 g:netrw_keepdir)。

11. 调试 Netrw 本身 netrw-debug {{{1

步骤 1:检查你遇到的问题是否已通过获取最新(通常是开发版本)的 netrw 来解决
<netrw.vim> 脚本通常在系统上安装为类似于以下内容:
/usr/local/share/vim/vim8x/plugin/netrwPlugin.vim
/usr/local/share/vim/vim8x/autoload/netrw.vim
        (see output of :echo &rtp)
它会在启动时自动加载(假设:set nocp)。如果你安装了新的 netrw,它将位于
$HOME/.vim/plugin/netrwPlugin.vim
$HOME/.vim/autoload/netrw.vim
步骤 2:假设你已经安装了最新版本的 netrw,请检查你的问题是否真的是由 netrw 引起的。创建一个名为 netrw.vimrc 的文件,内容如下
set nocp
so $HOME/.vim/plugin/netrwPlugin.vim
然后按照以下步骤运行 netrw
vim -u netrw.vimrc --noplugins -i NONE [some path here]
执行所需的 netrw 命令,并检查问题是否仍然存在。此过程将绕过任何由于个人 .vimrc 设置、.viminfo 文件和其他插件引起的故障。如果问题没有出现,则需要确定你的 .vimrc 中的哪个设置会导致与 netrw 冲突,或者哪些插件参与其中。
步骤 3:如果问题仍然存在,请从 netrw 获取调试跟踪
1. 获取 <Decho.vim> 脚本,可作为
Decho.vim 作为“vimball”提供。你应该编辑 Decho.vba.gz 文件并在其中使用源代码
vim Decho.vba.gz
:so %
:q
2. 要在 netrw 中启用调试跟踪,请编辑 <netrw.vim> 文件,输入
vim netrw.vim
:DechoOn
:wq
要恢复到正常的非调试行为,请重新编辑 <netrw.vim> 并输入
vim netrw.vim
:DechoOff
:wq
此命令由 <Decho.vim> 提供,将注释掉所有 Decho 调试语句(Dfunc()、Dret()、Decho()、Dredir())。
3. 然后启动 vim 并尝试通过执行传输或浏览来引发问题。应该会显示一组关于 <netrw.vim> 在尝试通过网络读取/写入你的文件时采取的步骤的消息,这些消息会出现在单独的选项卡或服务器 vim 窗口中。
更改 netrw.vimrc 文件以包含 Decho 插件
set nocp
so $HOME/.vim/plugin/Decho.vim
so $HOME/.vim/plugin/netrwPlugin.vim
你应该继续使用以下命令运行 vim
vim -u netrw.vimrc --noplugins -i NONE [some path here]
以避免与选项和其他插件发生冲突。
要保存文件:在 Linux 下,输出将出现在一个单独的远程服务器窗口中;在其中,只需使用以下命令保存文件
:w! DBG
在不支持客户端服务器的 vim 下,你的调试输出将出现在另一个选项卡中
:tabnext
:set bt=
:w! DBG
此外,如果你输入以下内容会很有帮助
:Dsep <command>
其中 <command> 是你即将键入的下一个命令,从而更容易将调试跟踪的哪一部分与哪个命令相关联。
请将这些信息以及你使用的操作系统和使用的 vim 版本(参见 :version)发送给 <netrw.vim> 的维护者(先删除嵌入的 NOSPAM)
[email protected]

12. 历史 netrw-history {{{1

v172: Sep 02, 2021 * (Bram Moolenaar) Changed "l:go" to "go" * (Bram Moolenaar) no need for "b" in netrw-safe guioptions Nov 15, 2021 * removed netrw_localrm and netrw_localrmdir references Aug 18, 2022 * (Miguel Barro) improving compatibility with powershell 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 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-lists; 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 implemented * :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 balloon evaluation (ie. netrw#NetrwBalloonHelp() 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. 待办事项 netrw-todo {{{1

07/29/09: banner: |g:netrw_banner| 可用于抑制抑制横幅。此功能是新的且实验性的,因此它正在调试过程中。09/04/09: "gp": 看看它是否可以用于远程系统。: 看看它是否可以与标记文件一起使用。

14. 致谢 netrw-credits {{{1

Vim 编辑器由 Bram Moolenaar(感谢,Bram!)dav 支持由 C Campbell 提供 fetch 支持由 Bram Moolenaar 和 C Campbell 提供 ftp 支持由 C Campbell 提供 <[email protected]> http 支持由 Bram Moolenaar 提供 <[email protected]> rcp rsync 支持由 C Campbell 提供(由 Erik Warendorph 建议)scp 支持由 raf 提供 <[email protected]> sftp 支持由 C Campbell 提供
inputsecret()、BufReadCmd、BufWriteCmd 由 C Campbell 贡献
Jérôme Augé -- 还使用新的缓冲区方法与 ftp+.netrc Bram Moolenaar -- 显然是 vim 本身,:e 和 v:cmdarg 使用,fetch,... Yasuhiro Matsumoto -- 指出 undo+0r 问题和解决方案 Erik Warendorph -- 为几个建议(g:netrw_..._cmd 变量,rsync 等)Doug Claar -- 修改以测试 ftp 操作的成功

模型行:{{{1

主要内容
命令索引
快速参考