背景

用vim命令处理一些超大文件时,有时会遇到卡死现象,不得不强制退出。但是,再次用vim命令访问这个文件时,会出现“E325:ATTENTION”提示。如果不做处理,以后每次都会出现。

分析

经过一番查证,此提示是vim程序对文件的一种保护机制(或锁机制)。当我们用vim命令打开一个文件时,会自动生成一个隐藏的swp文件。如果vim还在处理此文件,或者由于一些原因未正常退出,swp文件就会一直存在。当我们再次用vim命令打开此文件时,程序检测到有swp文件存在,就提醒我们不要误操作。原文如下:

*

11.3*	Crashed or not?					*

ATTENTION* *

E325*

Vim tries to protect you from doing stupid things.  Suppose you innocently
start editing a file, expecting the contents of the file to show up. Instead,
Vim produces a very long message: E325: ATTENTION
Found a swap file by the name ".main.c.swp"
 owned by: mool   dated: Tue May 29 21:09:28 2001
file name: ~mool/vim/vim6/src/main.c
 modified: no
user name: mool   host name: masaka.moolenaar.net
process ID: 12559 (still running)
While opening file "main.c"
    dated: Tue May 29 19:46:12 2001 (1) Another program may be editing the same file.
   If this is the case, be careful not to end up with two
   different instances of the same file when making changes.
   Quit, or continue with caution. (2) An edit session for this file crashed.
   If this is the case, use ":recover" or "vim -r main.c"
   to recover the changes (see ":help recovery").
   If you did this already, delete the swap file ".main.c.swp"
   to avoid this message. You get this message, because, when starting to edit a file, Vim checks if a
swap file already exists for that file. If there is one, there must be
something wrong. It may be one of these two situations. 1. Another edit session is active on this file. Look in the message for the
line with "process ID". It might look like this: process ID: 12559 (still running) The text "(still running)" indicates that the process editing this file
runs on the same computer. When working on a non-Unix system you will not
get this extra hint. When editing a file over a network, you may not see
the hint, because the process might be running on another computer. In
those two cases you must find out what the situation is yourself.
If there is another Vim editing the same file, continuing to edit will
result in two versions of the same file. The one that is written last will
overwrite the other one, resulting in loss of changes. You better quit
this Vim. 2. The swap file might be the result from a previous crash of Vim or the
computer. Check the dates mentioned in the message. If the date of the
swap file is newer than the file you were editing, and this line appears: modified: YES Then you very likely have a crashed edit session that is worth recovering.
If the date of the file is newer than the date of the swap file, then
either it was changed after the crash (perhaps you recovered it earlier,
but didn't delete the swap file?), or else the file was saved before the
crash but after the last write of the swap file (then you're lucky: you
don't even need that old swap file). Vim will warn you for this with this
extra line:      NEWER than swap file! UNREADABLE SWAP FILE Sometimes the line [cannot be read] will appear under the name of the swap file. This can be good or bad,
depending on circumstances. It is good if a previous editing session crashed without having made any
changes to the file. Then a directory listing of the swap file will show
that it has zero bytes. You may delete it and proceed. It is slightly bad if you don't have read permission for the swap file. You
may want to view the file read-only, or quit. On multi-user systems, if you
yourself did the last changes under a different login name, a logout
followed by a login under that other name might cure the "read error". Or
else you might want to find out who last edited (or is editing) the file and
have a talk with them. It is very bad if it means there is a physical read error on the disk
containing the swap file. Fortunately, this almost never happens.
You may want to view the file read-only at first (if you can), to see the
extent of the changes that were "forgotten". If you are the one in charge of
that file, be prepared to redo your last changes. WHAT TO DO? *

swap-exists-choices*

If dialogs are supported you will be asked to select one of five choices:

  Swap file ".main.c.swp" already exists! 
 [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: O Open the file readonly. Use this when you just want to view the file and
don't need to recover it. You might want to use this when you know someone
else is editing the file, but you just want to look in it and not make
changes. E Edit the file anyway. Use this with caution! If the file is being edited
in another Vim, you might end up with two versions of the file. Vim will
try to warn you when this happens, but better be safe then sorry. R Recover the file from the swap file. Use this if you know that the swap
file contains changes that you want to recover. Q Quit. This avoids starting to edit the file. Use this if there is another
Vim editing the same file.
When you just started Vim, this will exit Vim. When starting Vim with
files in several windows, Vim quits only if there is a swap file for the
first one. When using an edit command, the file will not be loaded and you
are taken back to the previously edited file. A Abort. Like Quit, but also abort further commands. This is useful when
loading a script that edits several files, such as a session with multiple
windows. D Delete the swap file. Use this when you are sure you no longer need it.
For example, when it doesn't contain changes, or when the file itself is
newer than the swap file.
On Unix this choice is only offered when the process that created the
swap file does not appear to be running. If you do not get the dialog (you are running a version of Vim that does not
support it), you will have to do it manually. To recover the file, use this
command: :recover Vim cannot always detect that a swap file already exists for a file. This is
the case when the other edit session puts the swap files in another directory
or when the path name for the file is different when editing it on different
machines. Therefore, don't rely on Vim always warning you. If you really don't want to see this message, you can add the 'A' flag to the
'shortmess' option. But it's very unusual that you need this. For remarks about encryption and the swap file, see |:recover-crypt|. ==============================================================================

解决

因为我是未正常退出vim程序导致,而且我要编辑的文件是正常的,所以直接将sep文件删除(选择(D)elete it)即可。你也根据自己的实际情况做选择吧。

参考

vim命令文档:http://vimdoc.sourceforge.net/htmldoc/usr_11.html

Vim提示E325(锁机制)的更多相关文章

  1. MySQL学习笔记十六:锁机制

    1.数据库锁就是为了保证数据库数据的一致性在一个共享资源被并发访问时使得数据访问顺序化的机制.MySQL数据库的锁机制比较独特,支持不同的存储引擎使用不同的锁机制. 2.MySQL使用了三种类型的锁机 ...

  2. 【转】MSSQLServer数据库事务锁机制分析

    锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性.各种大型数据库所采用的锁的基本理论是一致的,但在具体实现上各有差别.目前,大多数数据库管理系统都或多或少具有自我调 ...

  3. MySQL- 锁机制及MyISAM表锁

    锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许 多用户 共享的资源.如何保证数据并发访问的一致性.有效性是所 ...

  4. SQL Server 锁机制 悲观锁 乐观锁 实测解析

    先引入一些概念,直接Copy其他Blogs中的,我就不单独写了. 一.为什么会有锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 1.丢失更新 A,B两个用户读同一数据并进行修改,其中 ...

  5. 安卓电量优化之WakeLock锁机制全面解析

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.WakeLock概述 wakelock是一种锁的机制,只要有应用拿着这个锁,CPU就无法进入休眠状态,一直处于工作状态.比如,手机屏幕在屏幕关闭 ...

  6. MySQL InnoDB锁机制

    概述: 锁机制在程序中是最常用的机制之一,当一个程序需要多线程并行访问同一资源时,为了避免一致性问题,通常采用锁机制来处理.在数据库的操作中也有相同的问题,当两个线程同时对一条数据进行操作,为了保证数 ...

  7. Mysql锁机制--乐观锁 & 悲观锁

    Mysql 系列文章主页 =============== 从 这篇 文章中,我们知道 Mysql 并发事务会引起更新丢失问题,解决办法是锁.所以本文将对锁(乐观锁.悲观锁)进行分析. 第一部分 悲观锁 ...

  8. Mysql锁机制--索引失效导致行锁变表锁

    Mysql 系列文章主页 =============== Tips:在阅读本文前,最好先阅读 这篇(Mysql锁机制--行锁)文章~ 在上篇文章中,我们看到InnoDB默认的行锁可以使得操作不同行时不 ...

  9. SQL SERVER的锁机制

    SQL SERVER的锁机制(一)——概述(锁的种类与范围) SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源) SQL SERVER的锁机制(三)——概述(锁与事务隔离级别) ...

随机推荐

  1. vue中npm install 报错之一

    报错原因: 这是因为文件phantomjs-2.1.1-windows.zip过大,网络不好,容易下载失败 PhantomJS not found on PATH 解决方案一: 选择用cnpm ins ...

  2. linux如何设置用户权限

    linux与用户权限设置: 1.添加用户 首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户 #passwd tommy //修改密码 ...

  3. 【BZOJ5110】[CodePlus2017]Yazid 的新生舞会 线段树

    [BZOJ5110][CodePlus2017]Yazid 的新生舞会 Description Yazid有一个长度为n的序列A,下标从1至n.显然地,这个序列共有n(n+1)/2个子区间.对于任意一 ...

  4. ios 图片拉伸不变形的方法

    如果一个椭圆图片,原图大小为30*30,而我们让它显示100*30,那么这个图片就会被拉伸,而且效果很难看.用下边的方法可以创建一个局部不被拉伸的图片. UIImage * buttonBg = [[ ...

  5. 点击TextView 弹出复制选项

    extends:http://www.eoeandroid.com/thread-226805-1-1.html package com.dotfive.chuanbang.view; import ...

  6. 一致性哈希算法(consistent hashing)(转)

    http://blog.csdn.net/cywosp/article/details/23397179

  7. Linux系统下 Rsync 环境安装搭建

    一.Rsync简介 1.认识 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的“Rsync算法”来使本地和远 ...

  8. 再谈js的作用域

    再谈js的作用域 面试中遇到的题目: 题目一: var word = "hello world";  (function(){  alert(word);  var word = ...

  9. 170503、centos6.5安装mysql5.6.30

    准备:虚拟机地址:192.168.0.110 安装目录/usr/local/ 首先卸载已经安装的mysql使用命令查看rpm -qa | grep mysql卸载使用 rpm -e xxx 或者 yu ...

  10. This module embeds Lua, via LuaJIT 2.0/2.1, into Nginx and by leveraging Nginx's subrequests, allows the integration of the powerful Lua threads (Lua coroutines) into the Nginx event model.

    openresty/lua-nginx-module: Embed the Power of Lua into NGINX HTTP servers https://github.com/openre ...