2

Это можно сделать?

Я редактирую файл и хочу скопировать его в новую папку. Если я попытаюсь :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...

Что мне не хватает? Спасибо!

3 ответа3

3

Windows gvim использует cmd.exe Windows для выполнения :! команды и cmd.exe не понимают ~ как псевдоним для $HOME . Кроме того, cmd.exe принимает только \ как разделитель пути, а не / . Попробуй вместо

:cd ~
:!mkdir Documents\new_folder

Поскольку :cd - это внутренняя команда Vim, Vim правильно развернет ~ сам.

[Редактировать: Добавлено ! перед mkdir (опечатка) изменил разделитель пути с / на \ (ошибка) и добавил предложение об этом.]

2

Windows использует обратную косую черту для путей к каталогам. Кроме того, Windows использует% HOMEPATH% для домашнего каталога пользователя вместо unix-like ~.

Пытаться

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

Ты пропускаешь:

  • C в параметре /C который должен был быть передан в CMD. Я предполагаю ошибку транскрипции с вашей стороны.
  • что ~ не является частью файловой системы правильной. Это синтаксический сахар семейства Bourne /C-shell. Он не существует вне этих оболочек (и вещей, которые эмулируют семантику имен их файловых систем).

Если вы хотите, чтобы интерпретатор команд CMD раскрывал переменную среды USERPROFILE (не HOME как в Unix/Linux, обратите внимание) в командной строке, правильный синтаксис :

mkdir "%USERPROFILE%/Documents/new_folder"

Обратите внимание на кавычки, которые будут содержать имена каталогов, содержащие пробелы.

Конечно, вам, в свою очередь, придется экранировать символы % чтобы vim не распознал и не обработал их как свои собственные особые метасимволы командной строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .