web-dev-qa-db-ja.com

WindowsgVimのVimコマンドラインから新しいフォルダーを作成します

それはできますか?

ファイルを編集していますが、それをnewフォルダーにコピーしたいと思います。試してみると: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
Richard Herron

WindowsgvimはWindowsのcmd.exeを使用して:!コマンドを実行し、cmd.exeは~$HOMEのエイリアスとして理解しません。また、cmd.exeはパス区切り文字として\のみを受け入れ、/は受け入れません。代わりに試してください

:cd ~
:!mkdir Documents\new_folder

:cdはVimの内部コマンドであるため、Vimは~自体を正しく展開します。

[編集:mkdir(タイプミス)の前に!を追加し、パス区切り文字を/から\(間違い)に変更し、それに関する文を追加しました。]

4
garyjohn

Windowsは、ディレクトリパスに円記号を使用します。また、Windowsはユーザーのホームディレクトリにunixライクな〜の代わりに%HOMEPATH%を使用します。

試してみてください

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

あなたは間違っている:

  • CMDに渡されるはずの/CオプションのC私はあなたの文字起こしエラーを推測しています部。
  • ~は適切なファイルシステムの一部ではありません。これはBourneファミリー/ CShellファミリーの構文糖衣です。それらのシェル(およびファイルシステム名のセマンティクスをエミュレートするもの)以外には存在しません。

CMDコマンドインタープリターでコマンドラインでUSERPROFILE環境変数(Unix/LinuxのようにHOMEではない)を展開する場合、 正しい構文

mkdir "%USERPROFILE%/Documents/new_folder"

スペース文字を含むディレクトリ名を処理する引用符に注意してください。

もちろん、vimがそれらを独自の固有のコマンドラインメタ文字として認識して処理しないようにするには、%文字をエスケープする必要があります。

2
JdeBP