能做到吗?
我正在编辑一个文件,我想将其复制到新的文件夹。如果我尝试: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 识别和处理它们它自己的特殊的命令行元字符。