为什么删除名为^V^V的文件时会删除所有可见文件?

问题描述 投票:0回答:1

我在 Vim 中创建了一个宏(键绑定)(来自 Vi 文档的 :map q :wq^V^VCR CR)来保存并退出,但它创建了一个文件 ^V^V 相反,bash shell 几乎迫使我转义插入符号,但无法删除该文件。所以我复制并粘贴了它,它删除了所有可见的文件。我注意到是因为 Alacritty 终端警告我配置文件消失了。

我很幸运,我使用的是 Macos 垃圾 cli 实用程序而不是 rm,而且我正在 dotfile 存储库中工作(通过版本控制进行备份)。

为什么会出现这种情况?为什么这个文件就像一个黑洞?

我能够将它们从垃圾箱转移到 dotfile 存储库,并且必须使用 git Reset Hard HEAD 来删除烦人的文件,但这需要一些工作。

bash git vim
1个回答
0
投票

首先要注意的是:Vim 是 Vim,不是 Vi。他们有很多共同点,但也有更多不同点。如果您绝对想从书本中学习,请选择 一本关于 Vim 的书,而不是 一本关于 Vi 的书

你的问题除了用错书之外,还在于你没有仔细阅读。

^V

 不是 
^
 字符后跟 
V
 字符,它是 
CTRL+V
 的字面表示。在给定的示例中,您被告知......

  1. 使用

    :

    输入命令行:

    :
    
    
  2. 插入

    map q :wq

    :map q :wq
    
    
  3. ^V

     (
    CTRL+V
    ) 两次(也许是 Vi 的事情,你只需要在 Vim 中执行一次),

  4. 按一次

    Carriage Return

     即可插入其文字值 (
    ^M
    ):

    :map q :wq^M
    
    
  5. 再按一次

    Carriage Return

    即可执行您刚刚键入的命令。

实际映射是:

map q :wq^M
其中 

^M

 是文字 
CTRL+M
 字符,而不是:

map q :wq^V^VCR CR
其中

^

^
V
V
,等等。难怪你的映射正在做各种疯狂的事情,因为它纯粹是胡言乱语。

至于为什么由损坏的映射创建的文件会出现这样的行为?如果你做类似的事情:

$ rm '^V^VCR CR'
或:

$ rm \^V\^VCR\ CR
然后文件按预期删除,但从你混乱的问题中不清楚你

实际上做了什么

一些建议:

    使用 Vim 书籍来学习如何使用 Vim。
  • 您的计算机已经配备了终端模拟器,请使用它。您对这一切还不够满意,无法完全理解安装替代方案的利弊。
  • 下次就使用内置的
  • ZZ
© www.soinside.com 2019 - 2024. All rights reserved.