在 Windows gVim 中从 Vim 命令行创建新文件夹

在 Windows gVim 中从 Vim 命令行创建新文件夹

能做到吗?

我正在编辑一个文件,我想将其复制到新的文件夹。如果我尝试:w ~/Documents/new_folder/new_file.txt,那么我就会得到Can't open file for writing

因此我尝试:!mkdir ~/Documents/new_folder,但出现错误(在弹出的终端窗口中):

C:\Windows\system32\cmd.exe /c mkdir ~/Documents/new_folder
The syntax of the command is incorrect.
shell returned 1
Hit any key to close this window...

我遗漏了什么?谢谢!

答案1

Windows gvim 使用 Windows 的 cmd.exe 来执行:!命令,而 cmd.exe 无法理解~的别名$HOME。此外,cmd.exe 仅接受\作为路径分隔符,而不是/。请尝试

:cd ~
:!mkdir Documents\new_folder

由于:cd是 Vim 内部命令,Vim 将正确扩展~自身。

[编辑:!在(拼写错误)前面添加mkdir,将路径分隔符从 更改为/\错误)并添加相关句子。]

答案2

Windows 使用反斜杠表示目录路径。此外,Windows 使用 %HOMEPATH% 表示用户的主目录,而不是类似 unix 的 ~。

尝试

:!mkdir \%HOMEPATH\%\Documents\new_folder

答案3

你缺少的是:

  • C应该/C传递给 CMD 的选项。 我推测这是你的抄写错误。
  • ~不是文件系统本身的一部分。 它是 Bourne 系列/C shell 系列的语法糖。它不存在于这些 shell 之外(以及模拟其文件系统名称语义的东西)。

如果您希望 CMD 命令解释器在命令行中扩展USERPROFILE环境变量(请注意,不像在 Unix/Linux 上那样),HOME正确的语法

mkdir "%USERPROFILE%/Documents/new_folder"

请注意,引号将处理包含空格字符的目录名。

当然,反过来,你必须转义这些%字符,以防止 vim 识别和处理它们它自己的特殊的命令行元字符。

相关内容