Cria uma nova pasta a partir da linha de comando do Vim no Windows gVim

2

Pode ser feito?

Estou editando um arquivo e gostaria de copiá-lo para uma pasta nova . Se eu tentar :w ~/Documents/new_folder/new_file.txt , obtenho Can't open file for writing .

Então, tento :!mkdir ~/Documents/new_folder , mas recebo o erro (em uma janela de terminal pop-up):

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...

O que estou perdendo? Obrigado!

    
por Richard Herron 14.06.2011 / 17:37

3 respostas

3

O Windows gvim usa o cmd.exe do Windows para executar os comandos :! e o cmd.exe não entende ~ como um alias para $HOME . Além disso, o cmd.exe aceita apenas \ como um separador de caminho, não / . Tente em vez disso

:cd ~
:!mkdir Documents\new_folder

Como :cd é um comando interno do Vim, o Vim irá expandir corretamente o ~ .

[Edit: Adicionou ! na frente de mkdir (typo), alterou o separador de caminho de / para \ (erro) e adicionou uma frase sobre isso.]

    
por 14.06.2011 / 18:00
2

O Windows usa barras invertidas para caminhos de diretório.  Além disso, o Windows usa% HOMEPATH% para o diretório pessoal do usuário, em vez do tipo unix ~.

Tente

:!mkdir \%HOMEPATH\%\Documents\new_folder
    
por 14.06.2011 / 18:01
2

Você está com saudades:

  • o C na opção /C que deveria ter sido passado para o CMD. Estou presumindo um erro de transcrição da sua parte.
  • que ~ não faz parte do sistema de arquivos propriamente dito. É o açúcar sintático da família Bourne / família C-shell. Não existe fora desses shells (e coisas que emulam a semântica do nome do sistema de arquivos).

Se você quiser que o interpretador de comandos CMD expanda a variável de ambiente USERPROFILE (não HOME como no Unix / Linux, note) em uma linha de comando, a sintaxe correcta é

mkdir "%USERPROFILE%/Documents/new_folder"

Observe as aspas que lidarão com nomes de diretório contendo caracteres de espaço.

Naturalmente, por sua vez, você terá que escapar dos caracteres % para evitar que o vim os reconheça e processe como seus próprios metacaracteres de linha de comando peculiares.

    
por 14.06.2011 / 18:09

Tags