【问题标题】:Why does Vim create an empty directory named "~" when editing directories?为什么 Vim 在编辑目录时会创建一个名为“~”的空目录?
【发布时间】:2016-08-02 03:19:54
【问题描述】:

如果我在 Vim 中编辑一个目录(比如 'foo'),那么 Vim 总是会创建一个名为 'foo/~' 的空目录。在我的 vimrc 中,我指定了 'nobackup'、'nowritebackup' 和 'backupdir=$TEMP/vim//'。使用 backupdir 设置,当我启用备份文件时,它们会按预期进入临时目录。

尽管如此,在 OS X 和 Windows 上,Vim 都会创建空的 '~' 目录,当然,这就像在我的机器周围留下非常危险的地雷(至少在 OS X 上,其中 'rm -rf ~'将是糟糕一天的开始)。

我无法找到关于空“~”目录的任何信息,但一般来说有很多关于备份的信息。

如何禁用创建空的“~”目录?

【问题讨论】:

  • 您能详细说明您为什么要编辑目录文件吗?我从来没有这样做过。通常,如果我需要更改内容,我会使用终端修饰符或 cd 对其进行子修改。
  • @Fallenreaper 最好的猜测是大多数时候这可能是一个意外。我不认为我是故意这样做的,但它几乎每天都会发生
  • Vim 允许您通过编辑目录直接浏览目录。然后,您可以通过移动到要查看的目录行并按 Enter 来浏览目录树。这是一个标准的 Vim 功能。
  • 请注意,这看起来与 netrw 有关。如需帮助,您可以在目录浏览模式下按 F1。如果帮助文档让我解决这个问题,我会回复。
  • 我广泛使用 netrw 文件浏览器。不过,我没有注意到它会创建一个空的 ~ 目录。

标签: vim netrw


【解决方案1】:

想通了。在我的 vimrc 文件中,我有以下设置:

let netrw_home = "~"

我相信我最初这样做是为了防止 netrw 将“.netrwhist”和“.netrwbook”弄乱我的主目录。问题是波浪号没有扩展到我的主目录,而是 netrw 在当前目录中创建了一个名为“~”的文字目录来存储这些状态文件。

我使用的修复方法是保留 netrw_home 变量未定义,并让它使用“runtimepath”路径列表中第一个目录的默认值。我必须将我的主目录 ($HOME) 添加为我的运行时路径上的第一个目录,但到目前为止这似乎工作正常。

无论出于何种原因,我无法让 ~ 或 $HOME 在 Windows 上为 netrw_home 工作,但这可能是我对一些 Vim 细节的误解。我没有时间进一步调查,而且我现在已经解决了这个问题,所以我将在这里停下来。

感谢上面的 Wayne Werner 做了一个快速实验,看看他是否有同样的行为。这让我朝着正确的方向前进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    相关资源
    最近更新 更多