VIM用户手册 For Vim version 7.3. *usr_11.txt*
2012-07-23 14:27
274 查看
http://vimcdoc.sourceforge.net/doc/usr_11.html#usr_11.txt
Vim用户手册-byBramMoolenaar ([code]译者:Nek_in
从崩溃中恢复
你的计算机崩溃过吗?是不是还正好在你编辑了几个小时以后?不要惊慌!Vim已经保存
了大部分的信息使你可以恢复你的大多数数据。本章告诉你怎样恢复这些数据并向你介绍
Vim是如何处理交换文件的。
|
|
|
|
下一章:|
前一章:|
目录:|
[/code]
*11.1*基本恢复
在大多数情况下,恢复一个文件相当简单。假设你知道正在编辑的是哪个文件(并且硬盘没坏的话)。可以用"-r"选项启动Vim:
vim-rhelp.txt
Vim会读取交换文件(用于保存你的编辑数据的文件)并且提取原文的编辑碎片。如果
Vim恢复了你的改变,你会看到如下文字(当然了,文件名会不一样):
Usingswapfile".help.txt.swp"
Originalfile"~/vim/runtime/doc/help.txt"
Recoverycompleted.YoushouldcheckifeverythingisOK.
(Youmightwanttowriteoutthisfileunderanothername
andrundiffwiththeoriginalfiletocheckforchanges)
Youmaywanttodeletethe.swpfilenow.
(
译者注:中文情况下是:
使用交换文件".help.txt.swp"
原文件"~/vim/runtime/doc/help.txt"
恢复完成。请确定一切正常。
(你可能想要把这个文件另存为别的文件名,
再执行diff与原文件比较以检查是否有改变)
现在可以删除.swp文件。
)
为了安全起见,可以用另一个文件名保存这个文件:
:writehelp.txt.recovered
可以把这个文件与原文件作一下比较,看看恢复的效果如何。这方面Vimdiff可以帮很
大的忙(参见|
:writehelp.txt.recovered
:edit#
:diffsphelp.txt
注意用一个比较新的原文件来比较(你在计算机崩溃前最后保存过的文件),并且检查有
没有东西丢失了(由于某些问题导致Vim无法恢复)。
如果在恢复的过程中Vim显示出一些警告信息,
注意小心阅读。这应该是很少见
的。
如果恢复产生的文件和文件内容完全一致,你会看到以下消息:
Usingswapfile".help.txt.swp"
Originalfile"~/vim/runtime/doc/help.txt"
Recoverycompleted.Buffercontentsequalsfilecontents.
Youmaywanttodeletethe.swpfilenow.
通常这是因为你已经恢复过改变,或者修改后写入了文件。此时删除交换文件应该安全。
最后所做的一些修改不能恢复是正常的。Vim在你停止大约4秒不输入的时候或者输入
大约两百个字符以后才会更新交换文件。这间可以通过
两个选项来调整。这样,如果系统崩溃前Vim没有更新交换文件,最后一次更新后编辑
的内容就会丢失。
如果你编辑的时候没有给定文件名,可以用一个空的字符串来表示文件名:
vim-r""
你需要进入原来的目录执行这个命令,否则Vim是找不到这个交换文件的。
*11.2*交换文件在哪
Vim可以把交换文件保存在几个不同的地方。通常是原文件所在的目录。要知道这一点,进入该目录,然后输入:
vim-r
Vim会列出所有它能找到的交换文件。它还会从其它目录寻找本目录文件的交换文件,但
它不会寻找其它目录里的交换文件,更不会遍及整个目录树。
这个命令的输出如下:
Swapfilesfound:
Incurrentdirectory:
1..main.c.swp
ownedby:mooldated:TueMay2921:00:252001
filename:~mool/vim/vim6/src/main.c
modified:YES
username:moolhostname:masaka.moolenaar.net
processID:12525
Indirectory~/tmp:
--none--
Indirectory/var/tmp:
--none--
Indirectory/tmp:
--none--
(
译者:中文的情形如下:
找到以下交换文件:
位于当前目录:
1..main.c.swp
所有者:mool日期:TueMay2921:00:252001
文件名:~mool/vim/vim6/src/main.c
修改过:是
用户名:mool主机名:masaka.moolenaar.net
进程ID:12525
位于目录~/tmp:
--无--
位于目录/var/tmp:
--无--
位于目录/tmp:
--无--
)
如果有几个交换文件,其中一个可能是你要的,Vim会给出一个文件列表,你需要输入一
个表示这个文件的数字。小心检查那几个文件的时间,并确定哪一个才是你需要的。
万一你不知道是哪个的话,一个一个试一试。
使用指定的交换文件
如果你知道要用哪个文件,你可以指定交换文件的名字。Vim会找出交换文件所对应的原
始文件的名字。
例如:
Vim-r.help.txt.swo
这个方法在交换文件在一个非预期的目录中时很有用。Vim知道*.s[uvw][a-z]模式的
文件是交换文件。
如果这还不行,看看Vim报告的文件名是什么,然后根据需要给文件换名。根据
备注:
Vim在
通配符不能正常工作(例如
"filename.swp"。如果仍失败,你就只能通过给定交换文件的名称来恢复原来的
文件了。
*11.3*是不是崩溃了?*ATTENTION**E325*
Vim尽可能保护你不要做傻事。有时你打开一个文件,天真地以为文件的内容会显示出来。可是,Vim却给出一段很长的信息:
E325:ATTENTION
Foundaswapfilebythename".main.c.swp"
ownedby:mooldated:TueMay2921:09:282001
filename:~mool/vim/vim6/src/main.c
modified:no
username:moolhostname:masaka.moolenaar.net
processID:12559(stillrunning)
Whileopeningfile"main.c"
dated:TueMay2919:46:122001
(1)Anotherprogrammaybeeditingthesamefile.
Ifthisisthecase,becarefulnottoendupwithtwo
differentinstancesofthesamefilewhenmakingchanges.
Quit,orcontinuewithcaution.
(2)Aneditsessionforthisfilecrashed.
Ifthisisthecase,use":recover"or"vim-rmain.c"
torecoverthechanges(see":helprecovery").
Ifyoudidthisalready,deletetheswapfile".main.c.swp"
toavoidthismessage.
(
译者注:翻译成中文如下:
E325:注意
[code]发现交换文件"main.c.swp"
所有者:mool日期:2001年5月29日星期二21:09:28
文件名:~mool/vim/vim6/src/main.c
修改过:否
用户名:mool主机名:masaka.moolenaar.net
进程号:12559(仍在运行)
正在打开文件"main.c"
日期:2001年5月29日星期二19:46:12
(1)另一个程序可能也在编辑同一个文件。
如果是这种情况,修改时请避免同一个文件产生两个不同的版本。注意
退出,或小心地继续。
(2)上次编辑此文件时崩溃。
如果是这样,请用":recover"或"vim-rmain.c"
恢复修改的内容(请见":helprecovery")。
如果你已经进行了恢复,请删除交换文件".main.c.swp"
以避免再看到此消息。
)
你遇到这个信息是因为Vim发现你编辑的文件的交换文件已经存在。这一定是有什么地
方出问题了。可能的原因有两个:
1.这个文件正在被另一个进程编辑。
注意有"processID"那行。它看起来是这样的:
processID:12559(stillrunning)
"stillrunning"表示同一台计算机上有一个进程正在编辑这个文件。在非Unix的
系统上你不会得到这个信息。而如果你通过网络编辑这个文件,可能也得不到这个信
息,因为那个进程不在你的机器上。在这两种情况下,你要自己找到原因。
如果另一个Vim正在编辑这个文件,继续编辑会导致同一个文件有两个版本。最
后存盘的文件会覆盖前一个版本。这样的结果是一些编辑数据丢失了。这种情况下,
你最好退出这个Vim。
2.交换文件可能是由于前一次Vim或者计算机崩溃导致的。检查提示信息中的日期。如
果交换文件比你正在编辑的文件新,而且出现这个信息:
modified:YES
这就表明你很可能需要恢复了。
如果文件的日期比交换文件新,可能是在崩溃后被修改过了(也许你已经恢复
过,只是没有删除交换文件?),也可能文件在崩溃前保存过,但这发生在在最后一次
写入该交换文件之后(那你运气了,你根本不需要这个旧的交换文件)。Vim会用如下
语句提醒你:
NEWERthanswapfile!
(
译者注:意为"文件比交换文件新")
无法读取的交换文件
有时下面这样的信息
[cannotberead]
或(中文信息,[code]译者)[/code][无法读取]
会出现在交换文件的文件名之下。这可好可坏,依情况而定。
如果上次编辑在作出任何修改前就崩溃了的话,是好事。这样交换文件的长度为0。你只
要删除之然后继续即可。
如果情况是你对交换文件没有读权限,就比较糟糕。你可能得以只读方式浏览该文件。或
者退出。在多用户系统中,如果你以别人的身份登录并做了上一次修改,先退出登录然后
以那个身份重新登录可能会"治愈"该读取错误。不然的话,你得找出是谁做的上一次修
改(或正在修改),然后和那个人聊聊。
如果情况是交换文件所在的磁盘物理性地损坏了,就非常糟糕了。幸运的是,这种情况几
乎不会发生。
你可能需要以只读方式查看文件(如果允许的话),看看到底有多少改动被"忘记"了。
如果你是改动文件的那个人,准备好重做你的改动。
怎么办?*swap-exists-choices*
如果Vim版本支持对话框,你可以从对话框的五个选择中(
译者注:原文如此)挑一
个:
Swapfile".main.c.swp"alreadyexists!
penRead-Only,(E)ditanyway,(R)ecover,(Q)uit,(A)bort,(D)eleteit:[O]
(
译者:含义是:
交换文件".main.c.swp"已经存在!
以只读方式打开([O]),直接编辑((E)),恢复((R)),退出((Q)),中止((A)),删除
交换文件((D)):
)
O用只读方式打开文件。当你只是想看看文件的内容,而不打算恢复它的时候用这个选
项。你可能知道有人在编辑它,但你想看看它的内容,而不会修改它。
E直接编辑。小心使用这个选择!如果这个文件已经被另一个文件打开,你编辑它会导
致它有两个版本。Vim已经警告过你了,安全比事后说对不起要好。
R从交换文件中恢复文件。如果你知道交换文件中有新的东西,而你想恢复它,选择这
一项。
Q退出。不再编辑该文件。在有另一个Vim编辑该文件的时候选这一项。
如果你刚打开Vim,这会退出Vim。当你用多个窗口打开几个文件,Vim只会在
第一个文件遇到交换文件的时候退出。如果你是通过编辑命令打开文件,该文件不会
被载入,Vim会回到原来的文件中。
A中止。类似(Q)退出,但同时中止更多的命令。这在试图加载一个编辑多个文件的脚
本(例如一个多窗口的会话)时很有用。
D删除交换文件。当你能确定你不再需要它的时候选这一项。例如,它不包括修改的数
据,或者你的文件比交换文件新。
在Unix系统上,只有建立这个交换文件的进程不再运行,这个选择才会出现。
如果没有出现对话框(你使用的Vim不支持对话框),你只能手工处理。要恢复一个文
件,使用如下命令:
:recover
Vim不是总能检测到一个文件有交换文件的。当另一个会话把交换文件放到别的位置或者
在编辑另一台机器的文件的时候,双方使用的交换文件路径不一样都会发生这个问题。所
以,不要老是等Vim来提醒你。
如果你确实不想看到这个信息,你可以在
般你不需要这样做。
关于加密和交换文件关系的注释,见|
*11.4*深入阅读
||
|
相关文章推荐
- VIM用户手册 For Vim version 7.3. *usr_20.txt*
- VIM用户手册 For Vim version 7.3. *usr_31.txt*
- VIM 用户手册 For Vim version 7.3. *usr_02.txt*
- VIM用户手册 For Vim version 7.3. *usr_21.txt*
- VIM用户手册 For Vim version 7.3. *usr_32.txt*
- VIM用户手册 For Vim version 7.3. *usr_22.txt*
- VIM用户手册 For Vim version 7.3. *usr_40.txt*
- VIM用户手册 For Vim version 7.3. *usr_41.txt*
- VIM用户手册 For Vim version 7.3. *usr_42.txt*
- VIM用户手册 For Vim version 7.3. *usr_04.txt*
- VIM用户手册 For Vim version 7.3. *usr_43.txt*
- VIM用户手册 For Vim version 7.3. *usr_05.txt*
- VIM用户手册 For Vim version 7.3. *usr_44.txt*
- VIM用户手册 For Vim version 7.3. *usr_06.txt*
- VIM用户手册 For Vim version 7.3. *usr_45.txt*
- VIM用户手册 For Vim version 7.3. *usr_07.txt*
- VIM用户手册 For Vim version 7.3. *usr_23.txt*
- VIM用户手册 For Vim version 7.3. *usr_90.txt*
- VIM用户手册 For Vim version 7.3. *usr_08.txt*
- VIM用户手册 For Vim version 7.3. *usr_24.txt*