本文介绍: 保存文件时(即使未修改),vi/vim 会将当前内容保存到源文件。用 vi/vim 命令打开文件时(即使未修改),会在源文件的同一目录下(而不是执行命令目录),创建一个名为。可临时修改 vim 的配置参数,也可以配置参数永久保存到。
  • 用 vi/vim 命令打开文件时(即使未修改),会在源文件的同一目录下(而不是执行命令目录),创建一个名为 .filename.swp 的交换文件

    • 例:先用 vim f1 打开编辑窗口,然后在另一个终端查看文件列表,可以看到 swp 文件:
      # ls -alh
      -rw-r--r--   1 root root    6 Nov 12 12:25 f1
      -rw-r--r--   1 root root  12K Nov 12 12:25 .f1.swp
      
    • 交换文件记录了源文件的原始内容、用户每次修改的增量内容,从而允许用户撤销操作、重做操作。
    • 交换文件会比源文件的体积更大一些。
    • 退出 vi/vim 时,会自动删除交换文件。
  • 执行 :w 保存文件时(即使未修改),vi/vim 会将当前内容保存到源文件。根据配置参数 backupcopy 取值的不同,有几种保存方式:

    • backupcopy=yes
      • 原理:根据交换文件,得到文件的修改结果,保存为一个名为 filename~ 的备份文件。然后拷贝备份文件的内容,覆盖式写入源文件。最后删掉备份文件。
      • 优点:源文件的 inode 不变,文件属性不变。
      • 缺点:如果文件体积大,则拷贝需要一定耗时。如果同时有其它程序在修改源文件,则可能出错。
    • backupcopy=no
      • 原理:先创建一个备份文件,并将它的文件属性改成跟源文件一致。然后删除源文件,将备份文件重命名为源文件。
      • 优点:几乎没有耗时。
      • 缺点:
        • 源文件被删了,创建新文件,inode 变化。
        • 新文件的文件属性可能不一致,比如当前用户无权修改某个属性
        • 如果源文件是一个软链接,则新文件会是一个普通文件。
    • backupcopy=auto
  • 执行 :set xxx 可临时修改 vim 的配置参数,也可以将配置参数永久保存到 /etc/vimrc~/.vimrc 文件。

  • 用 vi/vim 打开一个文件时,可能遇到这种报错

    Swap file ".f1.swp" already exists!
    [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
    

    报错表示该文件已存在交换文件,可能是因为:

    • 此时有其他用户正在用 vi/vim 打开该文件,而一个文件同时只允许被一个 vim 进程修改。
    • 之前某个用户用 vi/vim 打开了该文件,但 vi/vim 进程异常退出,没有自动删除交换文件。此时可执行以下命令
      vim -r .filename.swp  # 恢复到文件的最后修改状态
      :wq                   # 保存文件
      rm -f .filename.swp   # 删除交换文件
      

原文地址:https://blog.csdn.net/qq_35952638/article/details/134578694

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_930.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注