*pi_netrw.txt* For Vim version 7.1. 最近更新: 2007年5月
NETRW 参考手册 作者: Charles E. Campbell, Jr.
译者: Willis http://vimcdoc.sf.net *dav* *http* *network* *Nwrite* *netrw-file* *fetch* *netrw* *Nread* *rcp* *scp* *ftp* *netrw.vim* *Nsource* *rsync* *sftp*
1. 内容 *netrw-contents* 1. 内容.................................................|netrw-contents| 2. netrw 初步...........................................|netrw-start| 3. netrw 参考手册.......................................|netrw-ref| 控 制 外 部 程 序..................................|netrw-externapp| 读 取..............................................|netrw-read| 写 入..............................................|netrw-write| 目 录 列 表........................................|netrw-dirlist| 改 变 用 户 名 和 密 码............................|netrw-chgup| 变 量..............................................|netrw-variables| 路 径..............................................|netrw-path| 4. 基于网络的文件传输...................................|netrw-xfer| 5. 激活.................................................|netrw-activate| 6. 透明文件传输.........................................|netrw-transparent| 7. Ex 命令..............................................|netrw-ex| 8. 变量和选项...........................................|netrw-var| 9. 目录浏览.............................................|netrw-browse| {{{1 映射...............................................|netrw-maps| 探索...............................................|netrw-explore-cmds| 命令表快速参考.....................................|netrw-browse-cmds| netrw 浏览器变量...................................|netrw-browse-var| 目录浏览简介.......................................|netrw-browse-intro| netrw 浏览和选项不兼容性...........................|netrw-incompatible| 目录探索命令.......................................|netrw-explore| 刷新列表...........................................|netrw-ctrl-l| 向上一层...........................................|netrw--| 浏览...............................................|netrw-cr| 获取文件...........................................|netrw-O| 改变列表方式.......................................|netrw-i| 建立新目录.........................................|netrw-d| 删除文件或目录.....................................|netrw-D| 给文件或目录换名...................................|netrw-move| 隐藏文件或目录.....................................|netrw-a| 编辑文件或目录隐藏列表.............................|netrw-ctrl-h| 水平分割窗口方式浏览...............................|netrw-o| 垂直分割窗口方式浏览...............................|netrw-v| 在新标签页中浏览...................................|netrw-t| 预览窗口...........................................|netrw-p| 选择排序风格.......................................|netrw-s| 编辑排序序列.......................................|netrw-S| 反转排序顺序.......................................|netrw-r| 切换到较早访问的目录...............................|netrw-u| 切换到较迟访问的目录...............................|netrw-U| 通过用户函数定制浏览...............................|netrw-x| 使浏览目录成为当前目录.............................|netrw-c| 把目录加入书签.....................................|netrw-mb| 切换到收入书签的目录...............................|netrw-gb| 列出书签和历史.....................................|netrw-q| 改进目录浏览.......................................|netrw-listhack| }}}1 10. 问题和修正...........................................|netrw-problems| 11. 调试.................................................|netrw-debug| 12. 历史。...............................................|netrw-history| 13. 鸣谢.................................................|netrw-credits| netrw 插件通常被自动执行,因为它是标准插件 |standard-plugin|。虽然这么说,要使 用 netrw,必须使得插件可用。可以在<.vimrc>
里通过如下设置完成:
set nocp " 不设置 'compatible'
filetype plugin on " 允许使用插件
如果在
<.vimrc>
里设置了 "loaded_netrw" 变量,就不会调入该插件:
:let loaded_netrw = 1
{Vi 没有此项功能}
2. netrw 初步 *netrw-start* netrw 使得通过网络进行读写和浏览变得容易! 首先,确信你打开了插件。这样,你需要至少在<.vimrc>
里设置: (或者参见 |netrw-activate|)
set nocp " 不设置 'compatible'
filetype plugin on " 允许使用插件
(见 |'cp'| 和 |:filetype-plugin-on|) netrw 支持用 url "透明" 地编辑其它机器上的文件 (见 |netrw-transparent|)。考虑 一个例子,假设你在其它机器上有一个帐号;尝试
vim scp://hostname/path/to/file
如果你有 ssh 连接的话。想使 ssh/scp 更容易使用么?察看 |netrw-listhack|! 如果你只有 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"
还有浏览 -- 也就是你只想在编辑文件前四处看看。在自己机器上浏览,只要 "编辑" 目 录:
vim .
vim /home/userid/path
要在远端机器上浏览,也就是 "编辑" 目录 (但要确保目录名后面跟上 "/"):
vim scp://hostname/
vim ftp://hostname/path/to/dir/
详情可见 |netrw-browse|! 除了 scp 和 ftp 以外,还支持更多其他的协议!见下一节,|netrw-externapp|。
3. netrw 参考手册 *netrw-ref* 控 制 外 部 程 序 *netrw-externapp* 协议 变量 缺省值 -------- ---------------- ------------- dav: *g:netrw_dav_cmd* = "cadaver" fetch: *g:netrw_fetch_cmd* = "fetch -o" 如果 fetch 可用 ftp: *g:netrw_ftp_cmd* = "ftp" http: *g:netrw_http_cmd* = "curl -o" 如果 curl 可用 http: g:netrw_http_cmd = "wget -q -O" 否则,如果 wget 可用 http: g:netrw_http_cmd = "fetch -o" 否则,如果 fetch 可用 rcp: *g:netrw_rcp_cmd* = "rcp" rsync: *g:netrw_rsync_cmd* = "rsync -a" scp: *g:netrw_scp_cmd* = "scp -q" sftp: *g:netrw_sftp_cmd* = "sftp" 读 取 *netrw-read* *netrw-nread* :Nread ? 给出帮助 :Nread "machine:file" 使用 rcp :Nread "machine file" 使用 ftp 并用<.netrc>
:Nread "machine id password file" 使用 ftp :Nread "dav://machine[:port]/file" 使用 cadaver :Nread "fetch://[user@]machine/file" 使用 fetch :Nread "ftp://[user@]machine[[:#]port]/file" 使用 ftp 并用<.netrc>
:Nread "http://[user@]machine/file" 使用 http 用 wget 方法 :Nread "rcp://[user@]machine/file" 使用 rcp :Nread "rsync://[user@]machine[:port]/file" 使用 rsync :Nread "scp://[user@]machine[[:#]port]/file" 使用 scp :Nread "sftp://[user@]machine/file" 使用 sftp 写 入 *netrw-write* *netrw-nwrite* :Nwrite ? 给出帮助 :Nwrite "machine:file" 使用 rcp :Nwrite "machine file" 使用 ftp 并用<.netrc>
:Nwrite "machine id password file" 使用 ftp :Nwrite "dav://machine[:port]/file" 使用 cadaver :Nwrite "ftp://[user@]machine[[:#]port]/file" 使用 ftp 并用<.netrc>
:Nwrite "rcp://[user@]machine/file" 使用 rcp :Nwrite "rsync://[user@]machine[:port]/file" 使用 rsync :Nwrite "scp://[user@]machine[[:#]port]/file" 使用 scp :Nwrite "sftp://[user@]machine/file" 使用 sftp 不支持 http: 协议! 执 行 脚 本 *netrw-source* :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 目 录 列 表 *netrw-dirlist* :Nread [protocol]://[user]@hostname/path/ *netrw-login* *netrw-password* 改 变 用 户 名 和 密 码 *netrw-chgup* *netrw-userpass* 使用 ftp 的尝试会提示你输入用户名字和密码。它们被存在全局变量 g:netrw_uid 和 g:netrw_passwd 里。下一次使用 ftp 就会再次使用这两个项 目来简化 ftp 将来的应用。不过,如果你要使用别的用户名和/或密码,先调用 NetUserPass()。为了解决输入密码的问题,检查一下你的 ftp 是否支持在你的 主目录下的<.netrc>
文件。另见 |netrw-passwd| (如果你用 ssh/scp 但希望 知道如何能不输入密码,见 |netrw-listhack|)。 :NetUserPass [uid [password]] -- 如果需要,提示 :call NetUserPass() -- 提示 uid 和 password :call NetUserPass("uid") -- 提示 password :call NetUserPass("uid","password") -- 设置全局 uid 和 password 变 量 *netrw-variables* (另见: |netrw-browse-var| |netrw-protocol| |netrw-settings| |netrw-var|) *b:netrw_lastfile* 最近一次通过网络读写的文件,该变量局部于缓冲区 (用于支持无参数的 :Nw ) *g:netrw_ftp* 如果不存在,用缺省的 ftp =0 使用缺省的 ftp (uid password) =1 使用替代的 ftp 方法 (user uid password) 如果你的 ftp 使用有问题,尝试修改此值,看看另一个 ftp 方法是否适合你的设置。 *g:netrw_extracmd* 缺省: 不存在 如果此变量存在,那么它包含的任何字符串将被加入到发送给 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) 用户名, 可用于同一会话中 *g:netrw_passwd* (ftp) 密码, 可用于同一会话中 *g:netrw_shq* = "'" 用于 Unix/Linux 系统 (即单引号) = "'" 用于 Windows + cygwin 系统 (即单引号) = '"' 用于 Windows 系统但不使用 cygwin (即双引号) 控制 scp 和 ftp 命令使用的引号。 *g:netrw_scpport* = "-P" : 设置 scp 端口的选项 *g:netrw_sshport* = "-p" : 设置 ssh 端口的选项 *g:netrw_use_errorwindow* =1 : netrw 的消息会使用分开的单行窗口。该窗口提供 了消息的可靠传送。(缺省) =0 : netrw 的消息使用 echoerr;这种方式下不是所有 消息都保证能看到,但不需要退出窗口。 *g:netrw_win95ftp* =1 如果使用 Win95,删除四个操作系统在传输时 "提供" 的 拖尾行 =0 强制正常的 ftp 行为 (不删除拖尾的行) *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* 对于多数协议,文件路径通常相对于用户目录。不过,有的协议里路径可以相对于一些相 关的目录。例如: vim scp://user@host/somefile
例如: vim scp://user@host/subdir1/subdir2/somefile
其中 "somefile" 在 "user" 的主目录。如果你想要文件相对于根目录的路径,使用完整 路径:例如: vim scp://user@host//somefile
例如: vim scp://user@host//subdir1/subdir2/somefile
4. 基于网络的文件传输 *netrw-xfer* Vim 下基于网络的文件传输是用基于 Vim 脚本的插件技术实现的 (<netrw.vim>
)。目 前,它支持基于网络的读写,并支持 rcp、scp、ftp 或者 ftp+<.netrc>
、scp、fetch、 dav/cadaver、rsync、 或者 sftp。 目前,http 只支持通过 wget 或者 fetch 读取。<netrw.vim>
是一个标准插件,它起到 Vim 和若干文件传输程序的粘结剂作用。它使用 自动命令事件 (BufReadCmd、FileReadCmd、BufWriteCmd) 来拦截貌似 url 的文件名的 读写。
例如 vim ftp://hostname/path/to/file
冒号前面的字符序列指定所使用的协议;在这个例子里,就是 ftp。<netrw.vim>
脚本然后构成一个或多个命令 (一般是 ftp),然后用外部程序去执行 (ftp,scp 等) 来完成实际的文件传输/协议。文件被先读写到一个临时文件里 (在 Unix/Linux 上,/tmp/...),<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"'
|netrw-p8| 介绍更多,如 putty、pscp、psftp 等。 ftp,一个古老的协议,看来被很多实现所支持。不幸的是,很多实现都有问题 (例如, 在文件尾部加入垃圾字符)。所以,如果有这样的问题,用户可以自己决定写一个 NetReadFixup() 函数来在从 ftp 读文件后进行清理。有些 Unix 系统 (例如, FreeBSD) 提供了一个叫 "fetch" 的工具,它使用 ftp 协议,但是没有这样的问题,而 且更方便<netrw.vim>
的使用。所以,只要 "fetch" 可以执行,它就被用来实现 ftp://... (和 http://...) 的读取。见 |netrw-var| 来了解详情。 对于 rcp、scp、sftp 和 http 协议,你可能希望基于网络的文件传输尽可能透明;例如vim rcp://[user@]machine/path
vim scp://[user@]machine/path
如果你的 ftp 支持<.netrc>
,那么也可以透明的使用 ftp,因为需要的机器名字,用户 名和密码都定义在这个文件里。你的 ftp 必须自己能理解并使用<.netrc>
文件。可以 这样,vim ftp://[user@]machine[[:#]portnumber]/path
不然,ftp 通常需要查询用户需要的用户名和密码。后者通常不会被显示出来;也就是, 输入的密码显示的是星号。netrw 会保留用户名和密码,以便以后从相同机器的读写不需 要再提示输入。 *netrw-urls* +=================================+============================+============+ |读
| 写 |使用
| +=================================+============================+============+ |DAV:
| || |
dav://host/path
| |cadaver
| |:Nread dav://host/path
| :Nwrite dav://host/path |cadaver
| +---------------------------------+----------------------------+------------+ |FETCH:
| || |
fetch://[user@]host/path
| || |
fetch://[user@]host:http/path
| 不可用 |fetch
| |:Nread fetch://[user@]host/path
| || +---------------------------------+----------------------------+------------+ |
FILE:
| || |
file:///*
| file:///* || |
file://localhost/*
| file://localhost/* || +---------------------------------+----------------------------+------------+ |
FTP: (*3)
| (*3) || |
ftp://[user@]host/path
| ftp://[user@]host/path |ftp (*2)
| |:Nread ftp://host/path
| :Nwrite ftp://host/path |ftp+.netrc
| |:Nread host path
| :Nwrite host path |ftp+.netrc
| |:Nread host uid pass path
| :Nwrite host uid pass path |ftp
| +---------------------------------+----------------------------+------------+ |HTTP: wget is executable: (*4)
| || |
http://[user@]host/path
| 不可用 |wget
| +---------------------------------+----------------------------+------------+ |HTTP: fetch is executable (*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 客户端会使用之。不然,该脚本提示 输入用户名和密码。 (*3) 对于 ftp,"machine" 可以是 machine#port 或者 machine:port,如果需 要使用不同于标准 ftp 的端口的话。 (*4) 对于 http:...,如果 wget 可用,就使用之。不然,如果 fetch 可用, 就使用之。 :Nread 和 :Nwrite 这几个 ex 命令都能接受多个文件名。 NETRC *netrw-netrc*<.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 传输就不会 询问用户名字和密码。 注意: 既然这个文件包含密码明码,要确保没人能够读到这个文件!许多程序拒绝使用 能给别人读取的 .netrc 文件。当然不要忘记,系统管理员总是可以读到这个文 件的! 密 码 *netrw-passwd* 脚本试图用内建的 Vim 函数 |inputsecret()| 不回显地读取 ftp 的密码。参见 |netrw-uidpass| 了解如何在设置以后修改密码。 不幸的是,netrw 没有办法自动提供密码给 scp。所以每次通过 scp 传输文件都需要重 新输入密码。不过, |netrw-listhack| 有助于解决这个问题。
5. 激活 *netrw-activate* 基于网络的文件传输缺省在 |'nocompatible'| 模式打开时就可用。<netrw.vim>
文件在 你系统的 vim-plugin 目录下,并且在启动 vim 时自动加载。我建议你至少在<.vimrc>
定制文件里放上:
set nocp
if version >= 600
filetype plugin indent on
endif
6. 透明文件传输 *netrw-transparent* 透明文件传输指通过普通的文件读写命令进行的传输 (通过 |:autocmd| 的 |BufReadCmd| 或 |BufWriteCmd| 事件)。这样网络的文件就能和本地文件一样处理。
vim ftp://[user@]machine/path
...
:wq
|netrw-activate| 进一步说明如何让你的 vim 更好地使用 netrw 这样的插件。
7. Ex 命令 *netrw-ex* 支持普通的读写命令。此外,还有一些额外的命令。通常你不需要使用 Nw 或 Nread,就 像 |netrw-transparent| 演示的那样 (也就是,用:e url
:r url
:w url
等即可) -- 见 |netrw-urls|。下面的解释中,{netfile}
指代指向远程文件的 URL。 :[range]
Nw 把特定的行写到当前由 b:netrw_lastfile 指定的文件里。 :[range]
Nw{netfile}
[{netfile}
]... 把特定的行写到{netfile}
所指定的网络文件里。 :Nread 从当前由 b:netrw_lastfile 指定的文件里读取特定的行到当前的缓冲 区。 :Nread{netfile}
{netfile}
... 读取{netfile}
到当前行之后。 :Nsource{netfile}
执行{netfile}
。 启动 vim 时如要使用远程的 .vimrc,可以使用如下 (都在同一行上) (多谢 Antoine Mechelynck) 的命令vim -u NORC -N
--cmd "runtime plugin/netrwPlugin.vim"
--cmd "source scp://HOSTNAME/.vimrc"
*netrw-uidpass* :call NetUserPass() 如果 b:netrw_uid 和 b:netrw_passwd 不存在,该函数向用户查询。 :call NetUserPass("userid") 该调用设置 b:netrw_uid 并且,如果密码不存在的话,向用户查询。 :call NetUserPass("userid","passwd") 该调用设置 b:netrw_uid 和 b:netrw_passwd。用户名和密码则被 ftp 传输使用。要删除用户名和密码,只用使用 "" 字符串就可以了。 :NetrwSettings |netrw-settings| 里描述此命令 -- 用于显示 netrw 设置和修改 netrw 行为。
8. 变量和选项 *netrw-options* *netrw-var*<netrw.vim>
脚本提供若干变量,作为控制<netrw.vim>
行为的选项。这些变量通常在 用户的<.vimrc>
里设置: (另见: |netrw-settings| |netrw-browse-var| |netrw-protocol| |netrw-settings|)
netrw 选项
选项 含义
-------------- -----------------------------------------------
b:netrw_col 保存当前的列号 (NetWrite 时) g:netrw_cygwin =1 假设在 windows 上的 scp 是 cygwin 的版本 (windows 的缺省值) =0 假设在 windows 上的 scp 接受 windows 风格的 路径 (其他情况的缺省值) g:netrw_ftp =0 使用缺省的 ftp (uid password) =1 使用替代的 ftp (user uid password) (见 |netrw-options|) g:netrw_ftpmode ="binary" (缺省) ="ascii" (你的选择) g:netrw_ignorenetrc = 1 (缺省) 如果你有<.netrc>
文件,但是你不想用它,就 这么设置。它唯一的作用是使得<.netrc>
被忽 略。 b:netrw_lastfile 最近一次通过网络读写的方法/机器/路径。 b:netrw_line 保存当前的行号 (NetWrite 时) g:netrw_passwd 保存当前 ftp 的 password。 g:netrw_silent =0 正常方式的传输 =1 安静方式的传输 g:netrw_uid 保存当前 ftp 的 user-id。 =1 使用替代 ftp 方法 (user uid password) (见 |netrw-options|) g:netrw_use_nt_rcp =0 不要使用 WinNT/2K/XP 的 rcp (缺省) =1 使用 WinNT/2K/XP 二进制模式的 rcp g:netrw_win95ftp =0 使用 unix 风格连接 ftp,即使 win95/98/ME 等 =1 使用缺省的方法连接 ftp
脚本里也可以使用以下的内部变量,尽管应该是暂时的。
临时变量
选项 含义
-------------- --------------------------------
g:netrw_method 指名 rcp/ftp+.netrc/ftp 等的索引 g:netrw_machine 保存输入分析结果的机器名 g:netrw_fname 保存访问的文件名
*netrw-protocol* netrw 支持若干协议。调用这些协议时使用下面的列出的变量,用户可以修改。
协议控制选项
选项 类型 设置 意义
--------- -------- -------------- ---------------------------
netrw_ftp 变量 =不存在 userid 由 "user userid" 设置 =0 userid 由 "user userid" 设置 =1 userid 由 "userid" 设置 NetReadFixup 函数 =不存在 没有改变 =存在 允许用户通过 ftp 自动传输的 文件通过 NetReadFixUp() 进行 转换 g:netrw_dav_cmd 变量 ="cadaver" 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_list_cmd 变量 ="ssh USEPORT HOSTNAME ls -Fa" g:netrw_rcp_cmd 变量 ="rcp" g:netrw_rsync_cmd 变量 ="rsync -a" g:netrw_scp_cmd 变量 ="scp -q" g:netrw_sftp_cmd 变量 ="sftp"
*netrw-ftp* g:netrw_..._cmd 选项 (|g:netrw_ftp_cmd| 和 |g:netrw_sftp_cmd|) 指定如何处理特 定的协议 (rcp、ftp 等) 的外部程序,也可以包含需要的命令行选项 (如指定 passive 模式的 -p)。 |g:netrw_list_cmd| 提供浏览支持: 其中的 HOSTNAME 子串会被替代为当前请求的机器 名。 两个选项 (|g:netrw_ftp| 和 |netrw-fixup|) 都提供解决特定 ftp 问题的帮助。为了 更好的理解如何在 ftp 有问题的时候使用这些选项,以下是 netrw 如何进行 ftp 读取 的一点讨论。 对于 ftp,netrw 通常用以下几种格式之一构造命令行,并写到临时文件里:如果 g:netrw_ftp 不存在或者不是 1 如果 g:netrw_ftp 存在且为 1
---------------------------------- ------------------------------
open machine [port] open machine [port] user userid password userid password [g:netrw_ftpmode] password [g:netrw_extracmd] [g:netrw_ftpmode] get filename tempfile [g:netrw_extracmd] get filename tempfile
|g:netrw_ftpmode| 和 |g:netrw_extracmd| 是可选的。 netrw 然后通过过滤命令执行上述命令行::%!
其中 g:netrw_ftp_cmd 通常是 "ftp", -i 告诉 ftp 不要交互 -n 意味着不要用 netrc,它用于方法 #3 (ftp 不用{g:netrw_ftp_cmd}
-i [-n]<.netrc>
) 如果<.netrc>
存在,就不需要想用户查询用户名和密码。传输完毕后,保存文件到临时 文件里。这时,从临时文件里读取的内容被读到被请求的主编辑会话窗口中,并删除临时 文件。 如果你的 ftp 不支持 "user" 命令,而是立即需要输入用户名,那么试试把 "let netrw_ftp=1" 放到你的<.vimrc>
里。 *netrw-cadaver* 要解决不受信任的服务器弹出 SSL 认证对话框的问题,你可以下载该认证,并把它放到 /usr/ssl/cert.pem 里。此操作使该服务器被认为是 "可信任的"。 *netrw-fixup* *netreadfixup* 如果你的 ftp 因某种原因产生不需要的行 (例如 AUTH 消息),你需要写一个 NetReadFixup(tmpfile) 函数:function! NetReadFixup(method,line1,line2)
" a:line1: 当前文件的第一行新行
" a:line2: 当前文件的最后一行新行
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 " 报错
endif
endfunction
如果 NetReadFixup() 函数存在,它就会被调用,这样你就可以订制自己的读取进程。一 个进一步的例子可以看看<netrw.vim>
如何处理 Windows 95 ftp 的函数。不知何种原 因,Windows 95 的 ftp 在传输结束以后加了四个空行,所以应该自动把它们删除。这里 是<netrw.vim>
自己的一些代码:if has("win95") && g:netrw_win95ftp
fun! NetReadFixup(method, line1, line2)
if method == 3 " ftp (无
<.netrc>
)let fourblanklines= line2 - 3
silent fourblanklines.",".line2."g/^\s*/d"
endif
endfunction
endif
9. 目录浏览 *netrw-browse* *netrw-dir* *netrw-list* *netrw-help* 映 射 *netrw-maps*<F1>
.............帮助.......................................|netrw-help|<cr>
.............浏览.......................................|netrw-cr|<del>
............删除文件或目录.............................|netrw-delete| -................往上一层...................................|netrw--| a................隐藏文件或目录.............................|netrw-a| b................把目录加入书签.............................|netrw-mb| B................切换到收入书签的目录.......................|netrw-gb| c................使浏览中的目录成为当前目录.................|netrw-c| d................建立新目录.................................|netrw-d| D................删除文件或目录.............................|netrw-D|<c-h>
............编辑文件/目录隐藏列表......................|netrw-ctrl-h| i................改变列表方式...............................|netrw-i|<c-l>
............刷新列表...................................|netrw-ctrl-l| o................用水平分割进行浏览.........................|netrw-o| p................预览窗口...................................|netrw-p| q................列出书签和历史.............................|netrw-q| r................反转排序顺序...............................|netrw-r| R................给文件或目录换名...........................|netrw-R| s................选择排序风格...............................|netrw-s| S................编辑排序序列...............................|netrw-S| t................在新标签页里浏览...........................|netrw-t| u................切换到较早访问的目录.......................|netrw-u| U................切换到较迟访问的目录.......................|netrw-U| v................用垂直分割进行浏览.........................|netrw-v| x................定制浏览方式...............................|netrw-x| 命 令 *netrw-explore-cmds* :Explore[!] [dir] 探索当前文件所在的目录...................|netrw-explore| :Sexplore[!] [dir] 分割并探索目录...........................|netrw-explore| :Hexplore[!] [dir] 水平分割并探索...........................|netrw-explore| :Vexplore[!] [dir] 垂直分割并探索...........................|netrw-explore| :Texplore[!] [dir] 建立新标签页并探索.......................|netrw-explore| :Pexplore[!] [dir] 垂直分割并探索...........................|netrw-explore| :Nexplore[!] [dir] 垂直分割并探索...........................|netrw-explore| :NetrwSettings.............................................|netrw-settings| 命 令 表 快 速 参 考 *netrw-browse-cmds*---- ----
命令 解释
---- ----
<F1>
netrw 给出帮助信息<cr>
netrw 进入目录或读入文件 |netrw-cr|<del>
netrw 试图删除文件/目录 |netrw-del| - netrw 往上走一层目录 |netrw--| a 在以下三种方式间切换: 正常显示,|netrw-a| 隐藏 (不显示匹配 g:netrw_list_hide 的文件) 和 显示 (只显示匹配 g:netrw_list_hide 的文件) mb 把当前目录加入书签 gb 切换到收入书签的目录 c 使浏览中的目录成为当前目录 |netrw-c| d 建立目录 |netrw-d| D netrw 试图删除文件/目录 |netrw-D|<c-h>
编辑文件隐藏列表 |netrw-ctrl-h| i 在瘦、长、宽和树形的各种列表方式间切换 |netrw-i|<c-l>
netrw 刷新目录列表 |netrw-ctrl-l| o 打开新浏览窗口,进入光标所在的目录。使用水平分割。|netrw-o| O 获取光标指定的文件 |netrw-O| p 预览文件 |netrw-p| P 在前次使用的窗口里浏览 |netrw-P| q 列出书签目录和历史 |netrw-q| r 反转排序顺序 |netrw-r| R 给指定的文件/目录换名 |netrw-R| s 选择排序方式: 按名字、时间或文件大小排序 |netrw-s| S 指定按名字排序的后缀优先级 |netrw-S| t 在新标签页里打开光标所在的文件/目录 |netrw-t| u 切换到较早访问的目录 |netrw-u| U 切换到较迟访问的目录 |netrw-U| v 打开新浏览窗口,进入光标所在的目录。使用垂直分割。|netrw-v| x 在文件上应用函数。(特殊形式的浏览器) |netrw-x| NETRW 浏 览 器 变 量 *netrw-browse-var*---- ----
变量 解释
---- ----
*g:netrw_alto* 置位此变量后,分割后的新窗口出现在下方而不是上 方 (见 |netrw-o|) 缺省: =&sb (见 |'sb'|) *g:netrw_altv* 置位此变量后,分割后的新窗口出现在右方而不是左 方 (见 |netrw-v|) 缺省: =&spr (见 |'spr'|) *g:netrw_browse_split* 浏览时,<cr>
这样打开文件: =0: 重用同一个窗口 =1: 先水平分割窗口 =2: 先垂直分割窗口 =3: 在新标签页中打开文件 *g:netrw_browsex_viewer* 指定查阅器的用户偏好:"kfmclient exec"
"gnome-open"
< 如果使用了"-"
那么 netrwFileHandler() 将寻找处理该扩展名的脚 本/函数 (见 |netrw_filehandler|)。 *g:netrw_fastbrowse* =0: 慢速浏览,不会重用目录列表;总是重新获取目 录列表。 =1: 中速浏览,只有远程浏览才重用目录列表。 (缺省值) =2: 快速浏览,只获取没有浏览过的目录 (或用 |netrw-ctrl-l| 时)。 快速浏览意味着保留旧目录列表的缓冲区,这样就不 需要重新获取了。该特性对远程浏览特别有意义。不 过,如果加入或者删除文件,旧的目录列表就不再是 最新的。此时可用 |netrw-ctrl-l| 刷新目录列表。 本选项提供用户机会来选择准确性和速度的权衡。 *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_hide* 如果为真,使用隐藏列表 缺省: =0 *g:netrw_keepdir* =1 (缺省) 浏览目录时不影响当前目录。 =0 浏览目录时设置当前目录为该目录。 当前的浏览目录保存在 b:netrw_curdir 里 (另见 |netrw-c|) *g:netrw_list_cmd* 列出远程目录的命令 缺省: (如果 ssh 可执行) "ssh USEPORT HOSTNAME ls -FLa" *g:netrw_liststyle* 设置缺省的列表风格: = 0: 瘦列表 (每个文件一行) = 1: 长列表 (每个文件一行,带有时间信息和文件 长度) = 2: 宽列表 (多个文件,分列显示) = 3: 树型风格列表 *g:netrw_list_hide* 逗号分隔的隐藏文件的模式列表 缺省: "" *g:netrw_local_mkdir* 建立本地目录的命令 缺省: "mkdir" *g:netrw_local_rmdir* 删除目录的命令 (rmdir) 缺省: "rmdir" *g:netrw_maxfilenamelen* =32 缺省之所以选为该值,使为了使长列表能在 80 列内显示。如果你的屏幕更宽或者文件或目录名可能 长于 32 个字节,可以设置此选项使列表按列排列 *g:netrw_mkdir_cmd* 建立远程目录的命令 缺省: "ssh USEPORT HOSTNAME mkdir" *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_sort_by* 按 "name" (名字)、"time" (时间) 或 "size" (大 小) 排序 缺省: "name" *g:netrw_sort_direction* 排序方向: "normal" (普通) 或 "reverse" (反转) 缺省: "normal" *g:netrw_sort_sequence* 按名字排序时,先按逗号分隔的此模式序列排序 缺省: '[\/]$,*,\.bak$,\.o$,\.h$, \.info$,\.swp$,\.obj$' *g:netrw_ssh_cmd* 可以用此值代替 ssh,用于执行列表,删除文件等这 些远程动作的可执行命令。 缺省: ssh *g:netrw_ssh_browse_reject* ssh 有时产生你不想要的行、消息、标题和任何你不 希望看作是 "目录" 和 "文件" 的内容。 此模式可用于删除这些内嵌的信息。缺省值为: '^total\s\+\d\+$' *g:netrw_use_noswf* netrw 通常避免给浏览器缓冲区写入交换文件。不 过,在有些系统上,看来这么做引起讨厌的 ml_get 错误;如果你看到 ml_get 错误,尝试在 .vimrc 中 放入 let g:netrw_use_noswf= 0 *g:netrw_timefmt* 指定代替 %c 的 strftime() 的格式字符串 缺省: "%c" *g:netrw_winsize* 指定新的 o/v 窗口的初始大小 缺省: "" *g:NetrwTopLvlMenu* 指定顶层子菜单名;缺省为 "Netrw."。 如果你想改变,在 .vimrc 里进行。 目 录 浏 览 简 介 *netrw-browse-intro* netrw 支持本地系统和远端机器上的目录浏览,包括列出文件和目录、进入目录、编辑那 里的文件、删除文件/目录、建立新目录和移动 (换名) 文件和目录。netrw 浏览器实现 以前探索器里的映射和命令的更一般的版本以支持远程目录,不过具体细节 (比如使用的 全局变量名) 肯定有所不同。 netrw 远程文件和目录浏览器能处理两个协议: ssh 和 ftp。url 如果使用 ftp 协议, netrw 远程浏览时就使用 ftp。相反,如果包含任何其它用于文件传输的协议,netrw 使 用 ssh 协议进行远程目录浏览。 要使用 netrw 的远程目录浏览器,只要读入带拖尾斜杠的 "文件" 就可以,它被解释为 列出目录的请求: vim [protocol]://[user@]hostname/path/ 对于本地目录,拖尾的斜杠不是必要的。 如果要避免 ssh 或 scp 在远程目录列表时输入密码的麻烦,见 |netrw-listhack|。 NETRW 浏 览 和 选 项 不 兼 容 性 *netrw-incompatible* netrw 不能和下面选项一起工作
:set acd
:set fo=...ta...
如果浏览时任何一个选项存在,netrw 会设置 noacd 并删除 |'formatoptions'| 里的 ta 子选项。 *netrw-explore* *netrw-pexplore* *netrw-texplore* *netrw-hexplore* *netrw-sexplore* *netrw-nexplore* *netrw-vexplore* 目 录 探 索 命 令 :Explore[!] [dir]... 探索当前文件所在的目录 *:Explore* :Sexplore[!] [dir]... 分割并探索当前文件所在的目录 *:Sexplore* :Hexplore[!] [dir]... 水平分割 并探索 *:Hexplore* :Vexplore[!] [dir]... 垂直分割 并探索 *:Vexplore* :Texplore [dir]... 建立新标签页并探索 *:Texplore* 用于 :Explore **/模式 : (另见 |netrw-starstar|) :Nexplore............. 转到下一个匹配的文件 *:Nexplore* :Pexplore............. 转到前一个匹配的文件 *:Pexplore* :Explore 会打开当前文件目录上的本地目录浏览器 (或者如果指定,[dir] 目录)。 只有该文件被修改才会分割窗口,否则浏览窗口使用该窗口。通常使用水平分 割。 :Explore! 类似于 :Explore,但使用垂直分割。 :Sexplore 调用本地目录浏览器前总分割窗口。和 Explore 相同,通常使用水平分割。 :Sexplore! [dir] 类似于 :Sexplore,但使用垂直分割。 :Hexplore [dir] 执行 :Explore,用 |:belowright| 水平分割。 :Hexplore! [dir] 执行 :Explore,用 |:aboveleft| 水平分割。 :Vexplore [dir] 执行 :Explore,用 |:leftabove| 垂直分割。 :Vexplore! [dir] 执行 :Explore,用 |:rightbelow| 垂直分割。 :Texplore [dir] 在生成浏览窗口前先执行 tabnew 缺省这些命令使用当前文件的目录。不过你可以显式提供使用的目录 (路径)。 *netrw-starstar* Explore、Sexplore、Hexplore 或 Vexplore 可以使用 **/filepat 模式,比如::Explore **/filename_pattern
netrw 会试图寻找匹配文件名模式 filename_pattern 的当前目录或任何子目录。它在内 部产生匹配模式的文件和其路径的列表;一定程度上类似于下面的 Unix 操作:find $(pwd) -name "$1" -exec "echo" "
更新目录显示,以显示匹配文件所在的子目录。Nexplore 或 Pexplore 可以转到下一个 (或前一个) 匹配文件所在的目录。如果控制台或 GUI 产生的 shift-up 或 shift-down 序列能够被识别,也许你会发现 shift-下箭头 和 shift-上箭头 更方便。netrw 提供它 们的映射:{}
" ";" 2> /dev/null<s-down>
== Nexplore,而<s-up>
== Pexplore。 考虑下例:Explore **/*.c
:Nexplore
:Nexplore
:Pexplore
状态行的右侧会显示 "Match 3 of 20" 这样的消息。 *netrw-starpat* Explore、Sexplore、Hexplore 或 Vexplore 可以使用 */pattern 模式,比如::Explore */pattern
netrw 用 |:vimgrep| 寻找匹配给定模式的文件。 就像 |netrw-starstar| 的情况那样,生成包含给定模式匹配的文件列表。然后移动光标 到第一个包含给定模式的文件;用 |:Nexplore|、|:Pexplore|和 shift-下箭头 和 上箭 头可以操作列表,在列表里移动到下一个或前一个文件。 *netrw-starstarpat* Explore、Sexplore、Hexplore 或 Vexplore 可以使用 **//pattern 模式,比如::Explore **//pattern
Explore 会用 |:vimgrep| 来寻找文件,就像 |netrw-starpat| 那样;不过,Explore 除了搜索当前目录以外,也会搜索子目录。 刷 新 列 表 *netrw-ctrl-l* *netrw-ctrl_l* 要刷新本地或远程目录列表,按 ctrl-l (<c-l>
) 或在列表的 ./ 目录项上按<cr>
。用 ":e ." 也可以刷新本地目录。 向 上 一 层 *netrw--* 要到上一层的目录,按 "-" 或在列表的 ../ 目录项上按<cr>
。 netrw 用 |g:netrw_list_cmd| 命令执行目录列表操作,其中 HOSTNAME 被用户提供的 url 的宿主名替换。netrw 提供的缺省命令是: ssh USEPORT HOSTNAME ls -FLa 其中的 HOSTNAME 将根据读取操作的请求设为 [user@]hostname。很自然地,用户可以自 行设置以覆盖此命令。NetList 函数实现远程目录浏览,它期待拖尾斜杠能标记目录名。 浏 览 *netrw-cr* 浏览很简单: 移动光标到感兴趣的文件或目录上,按<cr>
(回车键) 就可以选择该文件 或目录。如果还是目录,列出其内容,如果是文件,使用原来读请求中给出的协议来打开 该文件。 警 告: 有四种列表的形式 (见 |netrw-i|)。netrw 假设两个或更多的空格定界长列表 和宽列表格式下的文件和目录名。所以如果你的文件或目录名本身内嵌或拖尾两个或更 多的空格,用 "瘦" 格式来选择文件。 |g:netrw_browse_split| 选项缺省为零。可以修改它,使文件的打开在新窗口或标签页 里进行。如果该选项为一,分割会以水平方式进行,如果为二,分割以垂直方式进行。如 果为三,<cr>
使得文件在新标签页里出现。 获 取 文 件 *netrw-O* 浏览远程目录时,用户可用 O 键获取光标所在的文件 (即在本地机器上保存备份,但不 编辑)。此操作只支持 ftp 和 scp (既然只有它们能用作浏览,这应该不是问题)。这时 状态行的右侧会显示 "Obtaining filename" 这样的消息。传输完成后,状态行复原。 netrw 也可以用本地浏览器 "获得" 文件。netrw 显示的目录不一定和 Vim 的 "当前目 录" 一致,除非用户的<.vimrc>
里把 |g:netrw_keepdir| 设为 0。在本地浏览器里选 择文件 (光标移动到该文件名上) 然后按 "O" 就可以 "获得" 该文件;也就是把它复制 到 Vim 的当前目录。 相关主题: * 察看当前目录可用 |:pwd| * 使得当前浏览目录成为当前目录可见 |netrw-c| * 要自动使得当前浏览目录总成为当前目录可见 |g:netrw_keepdir|。 改 变 列 表 方 式 *netrw-i* "i" 映射在瘦、长、宽和树形列表格式之间循环。 短 (瘦) 列表格式只给出文件和目录名。 对于远程目录,长格式基于通过 ssh 执行的 "ls" 命令结果,对于本地目录,则显示文 件名、文件大小 (字节计) 和最近修改日期和时间。使用长格式时,netrw 不能识别带拖 尾空格的文件名。这样的文件只能用瘦列表格式。 宽列表格式使用两个或多个连续的空格来给文件名定界;使用此格式时,netrw 不能识别 内嵌或拖尾带有两个或多个连续的空格的文件名。不过,瘦格式可以处理这些文件。该列 表方式最为紧凑。 树形列表格式列出顶层目录,然后是文件和目录,它们的前面有一个 "|"。可以在目录名 上按<cr>
来打开或关闭目录。只能有一个树状列表的缓冲区;因而,在子目录上按 "v" 或 "o" 只会打开相同的缓冲区,显示两遍。 建 立 新 目 录 *netrw-d* 用 "d" 映射可以在远端 (取决于全局变量 g:netrw_mkdir_cmd) 或本地 (取决于全局变 量 g:netrw_local_mkdir) 建立目录。netrw 会要求新目录的名字。这时单输入<CR>
可 以中止目录建立过程。试图建立已经存在的本地目录 (可以是文件或目录) 会被检测到并 进行报告,然后忽略。 删 除 文 件 或 目 录 *netrw-delete* *netrw-D* *netrw-del* 文件和目录的删除涉及如下操作: 移动光标到要删除的文件/目录,然后按 "D"。目录必 须为空才能成功删除。如果所谓的目录是指向目录的软链接。要成功删除该目录,netrw 需要发出两个请求。删除前 netrw 会给出确认。用 "V" 命令 (可视选择) 然后按 "D" 可以选择行范围。 g:netrw_rm_cmd、g:netrw_rmf_cmd 和 g:netrw_rmdir_cmd 变量用以控制如何删除文件 和目录。g:netrw_rm_cmd 用于文件,缺省值为: g:netrw_rm_cmd: ssh USEPORT HOSTNAME rm :netrw_rmdir_cmd 变量用于删除目录。缺省值为: g:netrw_rmdir_cmd: ssh USEPORT HOSTNAME rmdir 如果用 g:netrw_rmdir_cmd 删除目录失败,netrw 会再尝试一次用 g:netrw_rmf_cmd 变 量进行删除。缺省值为: g:netrw_rmf_cmd: ssh USEPORT HOSTNAME rm -f 给 文 件 或 目 录 换 名 *netrw-move* *netrw-rename* *netrw-R* 换名/移动文件和目录涉及以下操作: 移动光标到要移动 (换名) 的文件/目录,然后按 "R"。你会被询问要把文件/目录移动到那里。用 "V" 命令 (可视选择) 然后按 "R" 可以 选择行范围。 g:netrw_rename_cmd 变量实现换名。缺省值为: ssh USEPORT HOSTNAME mv 用 V (|linewise-visual|) 可以给若干文件和目录同时换名。 隐 藏 文 件 或 目 录 *netrw-a* *netrw-hiding* netrw 的浏览机制提供三种使用隐藏列表的方法: 忽略此列表、隐藏匹配的文件、还有只 显示匹配的文件。用户可以用 "a" 映射在这三种方式间切换。 g:netrw_list_hide 变量保存逗号分隔的模式列表 (例如 \.obj),以指定隐藏列表。(另 见 |netrw-ctrl-h|) 要设置隐藏列表,可以用<c-h>
映射。例如,要隐藏 "." 开头的 文件,可以用<c-h>
映射来设置隐藏列表为 '^\..*' (你也可以在<.vimrc>
里设置 g:netrw_list_hide= '^\..*')。然后用 "a" 键就可以显示所有文件、隐藏匹配文件或 只显示匹配文件。 示例: ^.*\.[ch] 这个隐藏列表命令会隐藏/显示所有的 *.c 和 *.h 文件。 Example: ^.*\.c,^.*\.h 这个隐藏列表命令也会隐藏/显示所有的 *.c 和 *.h 文件。 不要忘记用 "a" 映射来选择你想要的普通/隐藏/显示模式! *netrw-ctrl_h* 编 辑 文 件 或 目 录 的 隐 藏 列 表 *netrw-ctrl-h* *netrw-edithide* "<ctrl-h>
" 映射显示请求以允许用户改变文件/目录隐藏列表。隐藏列表包含一个或多个 逗号分隔的模式列表。可以隐藏 (也就是不显示) 或只显示满足这些模式的文件和/或目 录 (见 |netrw-a|)。 水 平 分 割 窗 口 方 式 浏 览 *netrw-o* *netrw-horiz* 通常用<cr>
方式进入文件或目录。不过,"o" 映射可以打开新窗口来浏览新目录列表或 文件。这里使用水平分割。(垂直分割可见 |netrw-v|) 通常,o 键水平分割窗口并使新窗口和光标出现在上方。要改变水平分割使之把新窗口和 光标放到下方,在你的<.vimrc>
里放上:
let g:netrw_alto = 1
(另见 |netrw-t| |netrw-v| |g:netrw_alto|) 只能有一个树状列表的缓冲区;因而,在子目录上按 "o" 会分割屏幕,但显示相同的缓 冲区两遍。 垂 直 分 割 窗 口 方 式 浏 览 *netrw-v* 通常用<cr>
方式进入文件或目录。不过,"v" 映射可以打开新窗口来浏览新目录列表或 文件。这里使用垂直分割。(水平分割可见 |netrw-o|) 通常,v 键垂直分割窗口并使新窗口和光标出现在左方。要改变垂直分割使之把新窗口和 光标放到右方,在你的<.vimrc>
里放上:
let g:netrw_altv = 1
(另见 |netrw-o| |netrw-t| |g:netrw_altv|) 只能有一个树状列表的缓冲区;因而,在子目录上按 "v" 会分割屏幕,但显示相同的缓 冲区两遍。 在 新 标 签 页 里 浏 览 *netrw-t* 通常你用<cr>
进入文件或目录。"t" 映射允许你在新标签页里打开新的目录列表或文 件。(另见: |netrw-o| |netrw-v|) 预 览 窗 口 *netrw-p* *netrw-preview* 用 "p" 键可以使用预览窗口来预览光标所在的文件名。 前 次 窗 口 *netrw-P* *netrw-prvwin* 要使用上次使用的窗口编辑文件或目录 (见 :he |CTRL-W_P|),按 "P"。 如果只有一个窗口,该窗口被水平分割 (上/下分割由 |g:netrw_alto| 控制,初始大小 由 |g:netrw_winsize| 控制)。 如果多于一个窗口,重用上次使用的窗口以显示选择的文件/目录。如果前次窗口相关联 的缓冲区被修改而且该缓冲区只有这个窗口,用户会被询问是否要先保存该缓冲区 (yes (是)、no (否) 或 cancel (取消))。 选 择 排 序 风 格 *netrw-s* *netrw-sort* 可以选择排序风格,使之按 name (名字)、time (时间) 或 size (文件大小) 排序。 "s" 映射允许你在这三个选择之间循环;目录列表会自动更新以反映选择的风格。 编 辑 排 序 序 列 *netrw-S* *netrw-sortsequence* 如果 "排序风格" 为 name,用此排序序列可决定优先次序 (g:netrw_sort_sequence)。 排序序列里,通常按后缀名安排名字列表的优先级,但其实任何模式都可以用。用逗号定 界模式。缺省的排序序列是:[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$
单独的 * 包含其它模式没有覆盖的所有文件名。用 g:netrw_sort_sequence 变量 (手动 或在<.vimrc>
里设置) 可以修改排序序列,"S" 映射也可以完成。 反 转 排 序 顺 序 *netrw-r* *netrw-reverse* 用 "r" 键可以在正常和反转两种排序顺序之间切换。 切 换 到 较 早 访 问 的 目 录 *netrw-u* *netrw-updir* 每次你切换到新目录时 (当前会话里新出现),netrw 会把该目录保存在最近访问过的目 录历史列表里 (除非 g:netrw_dirhistmax 为零;缺省该值为 10)。用 "u" 映射可以切 换到较早访问的目录 (前任)。相反的操作见 |netrw-U|。 切 换 到 较 迟 访 问 的 目 录 *netrw-U* *netrw-downdir* 用 "U" 映射可以切换到脚次访问的目录 (后任)。和 "u" 映射相反。(见 |netrw-u|) 用 q 映射可以同时列出书签和历史。(见 |netrw-q|) *netrw-gx* 通 过 用 户 函 数 定 制 浏 览 *netrw-x* *netrw-handler* (另见 |netrw_filehandler|) html、gif、jpeg、(word/office) 文档等若干类型的文件最好用特殊处理程序 (也即, 你机器上的特定工具程序) 来察看。netrw 允许你调用这些特殊的处理程序:
* 探索时,按 "x" 键
* 编辑时,在光标所在的特殊文件名上按 gx
(|g:netrw_nogx| 变量存在时不可用) netrw 用下面的方法决定使用哪个特殊处理程序: * 如果存在 |g:netrw_browsex_viewer|,尝试用它来察看文件。包含可用设置的示例 (把它放在<.vimrc>
里):
:let g:netrw_browsex_viewer= "kfmclient exec"
< 或:let g:netrw_browsex_viewer= "gnome-open"
如果 g:netrw_browsex_viewer == '-',那么先调用 netrwFileHandler() (见 |netrw_filehandler|)。 * 对 Windows 32 或 64 来说,使用 url 和 FileProtocolHandler dll。 * 对 Gnome (带 gnome-open) 来说: 使用 gnome-open。 * 对 KDE (带 kfmclient) 来说: 使用 kfmclient。 * 否则,使用 netrwFileHandler 插件。 这些方法使用文件的后缀名来决定 "处理" 这些文件的合适的应用程序。这样就可以处理 OpenOffice (*.sfx)、可视文件 (*.jpg、*.gif 等) 和 PostScript (*.ps、 *.eps)。 *netrw_filehandler* "x" 映射根据文件扩展名来对文件应用一个函数。当然能够调用的前提是该处理函数本身 必须已经存在!例如 mypgm.html x ->
NFH_html("scp://user@host/some/path/mypgm.html")
用户可以编写他们自己的 netrw 文件处理函数来对更多后缀进行特殊处理。参见<plugin/netrwFileHandlers.vim>
的例子来了解如何建立文件处理函数。例如:
" NFH_suffix(filename)
fun! NFH_suffix(filename)
..对文件名进行特殊处理..
endfun
这些函数需要在你的 .vim/plugin (vimfiles\plugin) 目录下的某个文件里定义。Vim 的函数名不能包含标点符号 (除了下划线以外)。要支持包含这类字符的后缀,netrw 会 先按照下表对后缀进行转换:
@ -> AT ! -> EXCLAMATION % -> PERCENT
: -> COLON = -> EQUAL ? -> QUESTION
, -> COMMA - -> MINUS ; -> SEMICOLON
$ -> DOLLAR + -> PLUS ~ -> TILDE
因而,对于下例:
file.rcs,v -> NFH_rcsCOMMAv()
如果你需要更多的转换,请给我发电子邮件:NdrOchip at ScampbellPfamily.AbizM - NOSPAM
提出要求。 使 浏 览 目 录 成 为 当 前 目 录 *netrw-c* *netrw-curdir* |g:netrw_keepdir| 缺省为 1。该设置意味着当前目录不会跟踪浏览目录。 设置 g:netrw_keepdir 为 0 告诉 netrw 使 vim 的当前目录跟踪 netrw 的浏览目录。 不过,保持缺省为 1 的 g:netrw_keepdir 设置意味着 netrw 维护它自己的当前目录的 概念。要想使两个目录相同,可用 "c" 映射 (只要按 c 就可以)。该映射会把 Vim 概念 的当前目录设为当前的浏览目录。 把 目 录 加 入 书 签 *netrw-mb* *netrw-bookmark* *netrw-bookmarks* 用下面的命令可以很方便地把目录加入 "书签"
可以使用任何计数。用 viminfo 的 "!" 选项,可以在不同的 vim 会话间保存书签。 |netrw-gb| 说明如何回到书签里的某个目录,而 |netrw-q| 说明如何列出这些目录。 切 换 到 收 入 书 签 的 目 录 *netrw-gb* 要切换回收入书签的目录,用
{cnt}
mb
{cnt}
gb可以使用计数来引用任何书签项目。|netrw-mb| 说明如何加入书签,而 |netrw-q| 说明 如何列出书签。 列 出 书 签 和 历 史 *netrw-q* *netrw-listbookmark* 按 "q" 会列出书签里记录的目录和目录遍历的历史 (q 代表 query (查询))。(见 |netrw-mb|、 |netrw-gb|、|netrw-u| 和 |netrw-U|) 改 进 目 录 浏 览 *netrw-listhack* 不断要求输入密码很讨厌,远程目录的浏览尤其受这个问题影响。 对 Linux/Unix 系统而言,Rob Flickenger 所著的 "Linux Server Hacks - 100 industrial strength tips & tools" (O'Reilly, ISBN 0-596-00461-3) 一书给出如 何设置无需密码的 ssh 和 scp 的使用方式的提示,也包括相关安全问题的讨论。该书 曾经可从 http://hacks.oreilly.com/pub/h/66 得到,但现在该地址已经被重定向到某 个 "hackzine" 网站。在此,我试图给一个小结: 1. 在 ssh 服务器上生成 公钥/私钥 对: ssh-keygen -t rsa (可以把该文件存到 ~/.ssh/id_rsa) 2. 提示 passphrase 只要按
<CR>
即可 (两次)。 3. 这会建立两个文件: ~/.ssh/id_rsa ~/.ssh/id_rsa.pub 4. 在客户端上: cd mkdir .ssh chmod 0700 .ssh scp{serverhostname}
:.ssh/id_rsa.pub . cat id_rsa.pub >> .ssh/authorized_keys2 vim 邮件列表上也有人提到 Windows 上的 Pageant 有助于避免不断要求输入密码的麻 烦。 NETRW 设 置 *netrw-settings* 使用 NetrwSettings.vim 插件,:NetrwSettings
会弹出一个窗口来显示用作 netrw 设置的许多变量。你可以修改这里列出的所有值;保 存文件时,设置的值就会被应用。在任何行上按 "?" 就可以得到每个变量功能的帮助。 (另见: |netrw-browse-var| |netrw-protocol| |netrw-var| |netrw-variables|)
10. 问题和修正 *netrw-problems* (本节可能会不断增长,视乎我得到的反馈而定) (另见 |netrw-debug|) *netrw-p1* P1. 我用 windows 95,我的 ftp 每次读取之后多了额外的四个空行。 见 |netrw-fixup|,在<.vimrc>
文件里加入下行: let g:netrw_win95ftp= 1 *netrw-p2* P2. 我用 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-p3* P3. 我尝试 rcp://user@host/ (或任何不是 ftp 的协议) 但 netrw 使用 ssh!我不要这样... netrw 有两个方法进行远程目录浏览: ssh 和 ftp。除非你指定 ftp, 使用的只能是 ssh。 如果你需要下载文件 (不是目录列表),netrw 会使用你要求的任何协 议。 *netrw-p4* P4. 我喜欢缺省使用长格式的列表。 let g:netrw_liststyle=1 |netrw-browse-var| 说明你可以改变的更多设置。 *netrw-p5* P5. 本地浏览时,时间显示不正常 你系统的 strftime() 是否接受 "%c" 以产生类似于下面的格式: "Sun Apr 27 11:49:23 1997"?如果不是,执行 "man strftime" 寻找 什么选项可以完成类似的功能。然后在<.vimrc>
放入: let g:netrw_timefmt= "%X" (其中 X 是找到的选项) *netrw-p6* P6. 我想让当前目录和我的浏览同步。如何进行? let g:netrw_keepdir= 0 *netrw-p7* P7. 我在文件名中使用中文 (或其它非 ascii) 字符,netrw (Explore、 Sexplore、Hexplore 等) 却不能显示这些文件名! (取自 Wu Yongwei 在 Vim 邮件列表上的回答) 我现在明白你的问题了。你的代码页不是 936,对么?Vim 看来只能打 开在当前代码页中合法的文件名,这和许多其它不使用 Unicode 版本 的 Windows API 的应用程序一样。这是操作系统上的问题。如果系统 locale 使用 UTF-8 就不应该有这个问题,例如现代的 Linux 的各种 发布就是如此。 (...又多一个理由鼓励大家使用 utf-8!) *netrw-p8* P8. 我看到错误 "你的系统无法执行 ssh" -- 我该怎么办? (Dudley Fox) 我知道的多数人在 windows 上 用 putty 的 ssh。这是 一个免费的 ssh/telnet 应用。更多的情况可见: http://www.chiark.greenend.org.uk/~sgtatham/putty/ 还有: (Marlin Unruh) 我也用这个程序。它是一个单独的可执行文件,所以 可以复制到 Windows\System32 文件夹并建立一个快捷方式。 (Dudley Fox) 你也可以考虑 plink,听起来它和你要找的很接近。 plink 是 putty 程序包中的一个应用。 http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter7.html#plink (Vissale Neang) 你可以试试 OpenSSH 的 windows 版本,可以在这里 得到: http://sshwindows.sourceforge.net/ 它并不需要 Cygwin 包。 (Antoine Mechelynck) 对于单独需要在直接的 Windows 环境工作的 Unix 风格的程序,我推荐从 sourceforge 的 GnuWin32 项目获取,如 果有的话: http://gnuwin32.sourceforge.net/ 和 Cygwin 不同,后者建立一个在 Windows 之上的 Unix 风格的模拟 机,而 GnuWin32 使用 Windows 系统调用来重写 Unix 工具,它的程序 也能在 cmd.exe "Dos 窗口" 中正常运行。 (dave) 下载 WinSCP并用它连到服务器上。Preferences > Editors 选 项里设置 gvim 为你的编辑器: - 点击 "Add..." - 设置外部编辑器 (如果需要,调整实际的路径并加上引号和 最后的 !.!): "c:\Program Files\Vim\vim70\gvim.exe" !.! - 确认下面框中的文件类型为{asterisk}
.{asterisk}
(即所 有文件),或任何你期望的类型 (cec: 把{asterisk}
换成 * ;我这么写是因为不然的话,helptags 系统认为它是一 个标签) - 确认它在列表框的顶端 (如若不然,点击它再点击 ”Up") 如果使用 Norton Commander 风格,你只要按<F4>
来使用本地的 gvim 来编辑文件。 (Vit Gottwald) 如何生成公钥/私钥并把公钥存在服务器上:http://www.tartarus.org/~simon/puttydoc/Chapter8.html#pubkey-gettingready
8.3 Getting ready for public key authentication
'pscp' 如何使用私钥:http://www.tartarus.org/~simon/puttydoc/Chapter5.html
5.2.4 Using public key authentication with PSCP
(cec) 要正确地使用的以上的建议,你需要在 .vimrc 中修改以下用户 可设的变量: |g:netrw_ssh_cmd| |g:netrw_list_cmd| |g:netrw_mkdir_cmd| |g:netrw_rm_cmd| |g:netrw_rmdir_cmd| |g:netrw_rmf_cmd| 第一个 (|g:netrw_ssh_cmd|) 是最重要的;多数其它的变量在缺省情 况下使用和 g:netrw_ssh_cmd 相同的值。 *netrw-p9* *netrw-ml_get* P9. 我在浏览,切换目录,哦!出现了 ml_get 错误,我不得不杀掉 vim。有什 么解决方法? netrw 通常避免给临时目录缓冲区写入交换文件。不过,在有些系统 上,看来这么做引起 ml_get 错误;尝试在<.vimrc>
中设置 |g:netrw_use_noswf| 为零:let g:netrw_use_noswf= 0
11. 调试 *netrw-debug* 通常可以这样得到<netrw.vim>
脚本:/usr/local/share/vim/vim6x/plugin/netrw.vim
< -或-/usr/local/share/vim/vim7x/plugin/netrw.vim
在启动时自动被加载 (假设 :set nocp)。 1. 先从这里取得<Decho.vim>
脚本: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_scripts 标题是 "Decho, a vimL debugging aid" 或者 http://vim.sourceforge.net/scripts/script.php?script_id=120 然后把它放到你的本地的插件目录。 2.<Decho.vim>
本身需要<cecutil.vim>
脚本,所以它也需要在 .vim/plugin 目录里。在这里可以取得: http://mysite.verizon.net/astronaut/vim/index.html#VimFuncs 标题是 "DrC's Utilities" 3. 修改<netrw.vim>
文件如下:
vim netrw.vim
:DechoOn
:wq
要恢复到正常的非调试行为,修改<netrw.vim>
如下:
vim netrw.vim
:DechoOff
:wq
此命令由<Decho.vim>
提供,它会注释掉所有 Decho 调试语句 (Dfunc()、 Dret()、Decho()、Dredir())。 4. 然后启动 vim 进行文件传输或者进行浏览。一系列消息应该出现,提示<netrw.vim>
进行网络文件读写的一系列步骤。 要保存文件,用:wincmd j
:set bt=
:w! DBG
< 请把该信息发送到 <netrw.vim>
的维护者。NdrOchip at ScampbellPfamily.AbizM - NOSPAM
12. 历史 (英文) *netrw-history* {{{1 v109: Mar 26, 2007 * if a directory name includes a "$" character, Explore() will use expand() in an attempt to decipher the name. May 07, 2007 * g:netrw_use_errorwindow now allows one to have error messages go to a reliable window or to use a less reliable but recallable echoerr method May 07, 2007 * g:netrw_scpport and g:netrw_sshport support use of -P and -p, respectively, to set port for scp/ssh. v108: Jan 03, 2007 * included preview map (|netrw-p|), supporting remote browsing * netrw can now source remote files Jan 26, 2007 * Colton Jamiesonnote
d that remote directory browsing did not support alternate port selection. This feature has now been extended to apply to all remote browsing commands via ssh. (list, remove/delete, rename) Jan 31, 2007 * Luis Florit reported that @* was an invalid register. The @* register is now only saved and restored if |'guioptions'| contains "a". Feb 02, 2007 * Fixed a bug that cropped up when writing files via scp using cygwin Feb 08, 2007 * tree listing mode managed to stop working again; fixed again! Feb 15, 2007 * Guido Van Hoecke reported that netrw didn't handle browsing well with M$ ftp servers. He even set up a temporary account for me to test with (thanks!). Netrw now can browse M$ ftp servers. v107: Oct 12, 2006 * bypassed the autowrite option Oct 24, 2006 * handles automatic decompression of *.gz and *.bz2 files Nov 03, 2006 * Explore will highlight matching files when **/pattern is used (and if the |'hls'| option is set) Nov 09, 2006 * a debugging line, when enabled, was inadvertently bringing up help instead of simply reporting on list contents Nov 21, 2006 * tree listing improved (cursor remains put) Nov 27, 2006 * fixed b:netrw_curdir bug when repeated "i"s were pressed. Dec 15, 2006 * considerable qty of changes, mostly to share more code between local and remote browsing. Includes support for tree-style listing for both remote and local browsing. Dec 15, 2006 * Included Peter Bengtsson's modifications to support the Amiga. v106: Sep 21, 2006 * removed old v:version<700 code as netrw now requires vim 7.0 * worked around a bug where register * was overwritten during local browsing v104: Sep 05, 2006 * as suggested by Rodolfo Borges, :Explore and variants will position the cursor on the file just having been edited * changed default |g:netrw_sort_sequence| order * changed b, Nb to simply mb (see |netrw-mb|) * changed B, NB to simply gb (see |netrw-gb|) * tree listing style (see |g:netrw_liststyle|) * attempts to retain the alternate file v103: Jul 26, 2006 * used Yakov Lerner's tip#1289 to improve netrw error message display * wide listings didn't handle files with backslashes in their names properly. A symptom was an inability to open files. Aug 09, 2006 * included "t" mapping for opening tabbed windows, both for remote and local browsing * changed netrw_longlist to netrw_liststyle Aug 15, 2006 * fixed one of the NB maps Aug 22, 2006 * changed *Explore commands to use -nargs=* instead of -nargs=?. Allows both -complete=dir _and_ the starstar arguments to work (-nargs=? seems to require one or the other). Aug 23, 2006 * copied all w:.. variables across splits to new windows Aug 25, 2006 * when g:netrw_browsex_viewer was '-' (see |g:netrw_browsex_viewer|) it wasn't causing netrwFileHandlers#Invoke() to be called as it was expected to. (tnx Steve Dugaro) Aug 29, 2006 * changed NetBrowseX() to use "setlocal ... noswf" instead of "set ... noswf" (tnx Benji Fisher) Aug 31, 2006 * tabs and fastbrowse<=1 didn't work together. v102: Jun 15, 2006 * chgd netrwPlugin to call netrw#LocalBrowseCheck() * bugfix: g:netrw_keepdir==0 had stopped working Jul 06, 2006 * bugfix: NetOptionSave/Restore now saves/restores the unnamed register (|registers|) Jul 07, 2006 * |g:netrw_menu| support included Jul 13, 2006 * :Texplore command implemented Jul 17, 2006 * NetSplit and (Local|Net)BrowseChgDir() were both splitting windows. This affected o, v, and g:netrw_browse_split. Jul 20, 2006 * works around wildignore setting (was causing netrw's local browser not to list wildignore'd files) Jul 24, 2006 *<leftmouse>
acts as a<cr>
for selecting a file<rightmouse>
acts as a<del>
for deleting a file v100: May 14, 2006 * when using Windows and shell==cmd.exe, the default for g:netrw_ignorenetrc is now 1 * bugfix: unwanted ^Ms now removed (affected shell==cmd.exe - Windows) * added Bookmarks and History to the menu * an error message about non-existing w:netrw_longlist was appearing during attempts to Explore (fixed) * g:netrw_shq now available to make netrw use specified style of quotes for commands May 29, 2006 * user NFH_*() functions were inadvertently being ignored * fixed a Windows non-cygwin ftp handling problem. * hiding pattern candidate separators included some characters it shouldn't have (tnx to Osei Poku) Jun 01, 2006 * for browsing, netrw was supposed to use "dir" instead of "ls -lF" when using ftp+non-cygwin+windows. Fixed. * an inadvertently left-in-place debugging statement was preventing use of the "x" key with browsing. Jun 05, 2006 * g:netrw_nogx available to prevent making the gx map (see |g:netrw_nogx|) * bugfix, Explore wouldn't change directory properly (vim ., :Explore subdirname) Jun 06, 2006 * moved history to 2nd line in Netrw menu * fixed delete for unix-based systems Jun 07, 2006 * x key now works for windows-noncygwin-ftp Jun 08, 2006 * Explore */pat and **//pat now wraps v99: May 09, 2006 * g:netrw_browse_split=3 for opening files in new tabs implemented. May 12, 2006 * deletes temporary file at end of NetRead() * visual mode based Obtain implemented * added -complete=dir to the various Explore commands v98: May 02, 2006 * the "p" key didn't work properly when the browsing directory name had spaces in it. v97: May 01, 2006 * exists("&acd") now used to determine if the 'acd' option exists * "obtain" now works again under Windows v96: * bugfix - the |'acd'| option is not always defined but is now bypassed only when it is v95: * bugfix - Hiding mode worked correctly (don't show any file matching any of the g:netrw_hide patterns), but showing mode was showing only those files that didn't match any of the g:netrw_hide patterns. Instead, it now shows all files that match any of the g:netrw_hide patterns (the difference between a logical and and logical or). v94: * bugfix - a Decho() had a missing quote; only affects things when debugging was enabled. v93: * bugfix - removed FocusGained event from causing a slow-browser refresh for Windows v92: * :Explore **//pattern implemented (**/filepattern already taken) v91: * :Explore */pattern implemented * |'acd'| option bypassed v90: * mark ', as suggested by Yegappan Lakshmanan, used to help guarantee entry into the jump list when appropriate. *<s-down>
and<s-up>
are no longer defined until a :Explore **/pattern is used (if the user already has a map for them). They will be defined for new browser windows from that point forward. v89: * A<s-down>
,<s-up>
, :Nexplore, or a :Pexplore without having first done an :Explore **/pattern (see |netrw-starstar|) caused a lot of unhelpful error messages to appear v88: * moved DrChip.Netrw menu to Netrw. Now has priority 80 by default. g:NetrwTopLvlMenu == "Netrw" and can be changed by the user to suit. The priority is g:NetrwMenuPriority. * Changed filetype for browser displays from netrwlist to netrw. v87: * bug fix -- menus were partially disappearing v85: * bug fix -- missing an endif * bug fix -- handles spaces in names and directories when using ftp-based browsing v83: * disabled stop-acd handling; the change in directory handling may allow acd to be used again. Awaiting feedback. * D was refusing to delete remote files/directories in wide listing mode. v81: * FocusGained also used to refresh/wipe local browser directory buffers * (bugfix) netrw was leaving [Scratch] buffers behind when the user had the "hidden" option set. The 'hidden' option is now bypassed. v80: * ShellCmdPost event used in conjunction with g:netrw_fastbrowse to refresh/wipe local browser directory buffers. v79: * directories are now displayed with nowrap * (bugfix) if the column width was smaller than the largest file's name, then netrw would hang when using wide-listing mode - fixed * g:netrw_fastbrowse introduced v78: * progress has been made on allowing spaces inside directory names for remote work (reading, writing, browsing). (scp) v77: * Mikolaj Machowski fixed a bug in a substitute command * g:netrw_browsex_viewer implemented * Mikolaj Machowski pointed out that gnome-open is often executable under KDE systems, although it is effectively not functional. NetBrowseX now looks for "kicker" as a running process to determine if KDE is actually the really running. * Explorer's O functionality was inadvertently left out. Netrw now does the same thing, but with the "P" key. * added g:netrw_browse_split option * fixed a bug where the directory contained a "." but the file didn't (was treating the dirname from "." onwards as a suffix) v76: * "directory is missing" error message now restores echo highlighting v75: * file://... now conforms to RFC2396 (thanks to S. Zacchiroli) * if the binary option is set, then NetWrite() will only write the whole file (line numbers don't make sense with this). Supports writing of tar and zip files. v74: * bugfix (vim, then :Explore) now works * ctrl-L keeps cursor at same screen location (both local and remote browsing) * netrw now can read remote zip and tar files * Obtain now uses WinXP ftp+.netrc successfully v73: * bugfix -- scp://host/path/file was getting named incorrectly * netrw detects use of earlier-than-7.0 version of vim and issues a pertinent error message. * netrwSettings.vim is now uses autoloading. Only<netrwPlugin.vim>
is needed as a pure plugin (ie. always loaded). v72: * bugfix -- formerly, one could prevent the loading of netrw by "let g:loaded_netrw=1"; when autoloading became supported, this feature was lost. It is now restored. v71: * bugfix -- made some "set nomodifiable"s into setlocal variants (allows :e somenewfile to be modifiable as usual) * NetrwSettings calls a netrw function, thereby assuring that netrw has loaded. However, if netrw does not load for whatever reason, then NetrwSettings will now issue a warning message. * For what reason I don't recall, when wget and fetch are both not present, and an attempt to read a http://... url is made, netrw exited. It now only returns. * When ch=1, on the second and subsequent uses of browsing Netrw would issue a blank line to clear the echo'd messages. This caused an annoying "Hit-Enter" prompt; now a blank line message is echo'd only if &ch>1. v70: * when using |netrw-O|, the "Obtaining filename" message is now shown using |hl-User9|. If User9 has not been defined, netrw will define it. v69: * Bugfix: win95/98 machines were experiencing a "E121: Undefined variable: g:netrw_win95ftp" message v68: * double-click-leftmouse selects word under mouse v67: * Passwords which contain blanks will now be surrounded by double-quotes automatically (Yongwei) v66: * Netrw now seems to work with a few more Windows situations * O now obtains a file: remote browsing file -> local copy, locally browsing file -> current directory (see :pwd) * i now cycles between thin, long, and wide listing styles * NB and Nb are maps that are always available; corresponding B and b maps are only available when not using wide listing in order to allow them to be used for motions v65: * Browser functions now use NetOptionSave/Restore; in particular, netrw now works around the report setting v64: * Bugfix - browsing a "/" directory (Unix) yielded buffers named "[Scratch]" instead of "/" * Bugfix - remote browsing with ftp was omitting the ./ and ../ v63: * netrw now takes advantage of autoload (and requires 7.0) * Bugfix - using r (to reverse sort) working again v62: * Bugfix - spaces allowed again in directory names with g:netrw_keepdir=0. In fact, I've tested netrw (again) with most ANSI punctuation marks for directory names. * Bugfix - NetrwSettings gave errors when g:netrw_silent had not be set. v61: * document upgrade -- netrw variable-based settings all should have tags. Supports NetrwSettings command. * several important variables are window-oriented. Netrw has to transfer these across a window split. See s:BufWinVars() and s:UseBufWinVars(). v60: * when using the i map to switch between long and short listings, netrw will now keep cursor on same line * "Match # of #" now uses status line * :Explore **/*.c will now work from a non-netrw-browser window * :Explore **/patterns can now be run in separate browser windows * active banner (hit<cr>
will cause various things to happen) v59: * bugfix -- another keepalt work-around installed (for vim6.3) * "Match # of #" for Explore **/pattern matches v58: * Explore and relatives can now handle **/somefilepattern (v7) * Nexplore and Pexplore introduced (v7). shift-down and shift-up cursor keys will invoke Nexplore and Pexplore, respectively. * bug fixed with o and v * autochdir only worked around for vim when it has been compiled with either |+netbeans_intg| or |+sun_workshop| * Under Windows, all directories and files were being preceded with a "/" when local browsing. Fixed. * When: syntax highlighting is off, laststatus=2, and remote browsing is used, sometimes the laststatus highlighting bleeds into the entire display. Work around - do an extra redraw in that case. * Bugfix: when g:netrw_keepdir=0, due to re-use of buffers, netrw didn't change the directory when it should've * Bugfix: D and R commands work again v57: * Explore and relatives can now handle RO files * reverse sort restored with vim7's sort command * g:netrw_keepdir now being used to keep the current directory unchanged as intended (sense change) * vim 6.3 still supported v56: * LocalBrowse now saves autochdir setting, unsets it, and restores it before returning. * using vim's rename() instead of system + local_rename variable * avoids changing directory when g:netrw_keepdir is false v55: * -bar used with :Explore :Sexplore etc to allow multiple commands to be separated by |s * browser listings now use the "nowrap" option * browser: some unuseful error messages now suppressed v54: * For backwards compatibility, Explore and Sexplore have been implemented. In addition, Hexplore and Vexplore commands are available, too. *<amatch>
used instead of<afile>
in the transparency support (BufReadCmd, FileReadCmd, FileWriteCmd) * ***netrw*** prepended to various error messages netrw may emit * g:netrw_port used instead of b:netrw_port for scp * any leading [:#] is removed from port numbers v53: * backslashes as well as slashes placed in various patterns (ex. g:netrw_sort_sequence) to better support Windows v52: * nonumber'ing now set for browsing buffers * when the hiding list hid all files, error messages ensued. Fixed * when browsing, swf is set, but directory is not set, when netrw was attempting to restore options, vim wanted to save a swapfile to a local directory using an url-style path. Fixed v51: * cygwin detection now automated (using windows and &shell is bash) * customizable browser "file" rejection patterns * directory history * :[range]
w url now supported (ie. netrw has a FileWriteCmd event) * error messages have a "Press<cr>
to continue" to allow them to be seen * directory browser displays no longer bother the swapfile * u/U commands to go up and down the history stack * history stack may be saved with viminfo with its "!" option * bugfixes associated with unwanted [No Files] entries v50: * directories now displayed using buftype=nofile; should keep the directory names as-is * attempts to remove empty "[No File]" buffers leftover from :file ..name.. commands * bugfix: a "caps-lock" editing difficulty left in v49 was fixed * syntax highlighting for "Showing:" the hiding list included * bookmarks can now be retained if "!" is in the viminfo option v49: * will use ftp for http://.../ browsing v48: * One may use ftp to do remote host file browsing * (windows and !cygwin) remote browsing with ftp can now use the "dir" command internally to provide listings * g:netrw_keepdir now allows one to keep the initial current directory as the current directory (normally the local file browser makes the currently viewed directory the current directory) * g:netrw_alto and g:netrw_altv now support alternate placement of windows started with o or v * Nread ? and Nwrite ? now uses echomsg (instead of echo) so :messages can repeat showing the help * bugfix: avoids problems with partial matches of directory names to prior buffers with longer names * one can suppress error messages with g:netrw_quiet ctrl-h used * instead of<Leader>
h for editing hiding list one may edit the * sorting sequence with the S map now allows confirmation of * deletion with [y(es) n(o) a(ll) q(uit)] the "x" map now handles * special file viewing with: (windows) rundll32 url.dll (gnome) gnome-open (kde) kfmclient If none of these are on the executable path, then netrwFileHandlers.vim is used. * directory bookmarking during both local and remote browsing implemented * one may view all, use the hiding list to suppress, or use the hiding list to show-only remote and local file/directory listings * improved unusual file and directory name handling preview * window support v47: * now handles local directory browsing. v46: * now handles remote directory browsing * g:netrw_silent (if 1) will cause all transfers to be silent v45: * made the [user@]hostname:path form a bit more restrictive to better handle errors in using protocols (e.g. scp:usr@host:file was being recognized as an rcp request) v44: * changed from "rsync -a" to just "rsync" * somehow an editing error messed up the test to recognize use of the fetch method for NetRead. * more debugging statements included v43: * moved "Explanation" comments to<pi_netrw.txt>
help file as "Network Reference" (|netrw-ref|) *<netrw.vim>
now uses Dfunc() Decho() and Dret() for debugging * removed superfluous NetRestorePosn() calls v42: * now does BufReadPre and BufReadPost events on file:///* and file://localhost/* v41: * installed file:///* and file://localhost/* handling v40: * prevents redraw when a protocol error occurs so that the user may see it v39: * sftp support v38: * Now uses NetRestorePosn() calls with Nread/Nwrite commands * Temporary files now removed via bwipe! instead of bwipe (thanks to Dave Roberts) v37: * Claar's modifications which test if ftp is successful, otherwise give an error message * After a read, the alternate file was pointing to the temp file. The temp file buffer is now wiped out. * removed silent from transfer methods so user can see what's happening
13. 鸣谢 *netrw-credits* {{{1 Vim editor by Bram Moolenaar (谢了,Bram!) dav 提供支持: C Campbell fetch 提供支持: Bram Moolenaar 和 C Campbell ftp 提供支持: C Campbell<NdrOchip@ScampbellPfamily.AbizM>
http 提供支持: Bram Moolenaar<bram@moolenaar.net>
rcp rsync 提供支持: C Campbell (Erik Warendorph 提供建议) scp 提供支持: raf<raf@comdyn.com.au>
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 操作的测试的修改
vim:tw=78:ts=8:ft=help:norl:fdm=marker
Generated by vim2html on 2008年 03月 27日 星期四 17:04:45 CST