以下で、~/.vimrc
ファイルを作る
function! EnsureDirectoryExists() let dir = expand('%:p:h') if !isdirectory(dir) call mkdir(dir, 'p') endif endfunction autocmd BufWritePre * call EnsureDirectoryExists()
関数の作成:
EnsureDirectoryExists
という関数を作成します。この関数は、現在開いているファイルのディレクトリパスを取得し(expand('%:p:h')を使用)、そのディレクトリが存在するかをチェックします。
ディレクトリのチェックと作成:
isdirectory
関数を使用してディレクトリが存在するかを確認します。
もし存在しない場合、mkdir
関数でディレクトリを作成します。
mkdir関数の 'p' オプションは、必要な中間ディレクトリも一緒に作成することを意味します。
自動コマンドの設定:
autocmd BufWritePre * call EnsureDirectoryExists() この行は、ファイルを保存する前(BufWritePre イベント)に自動的に EnsureDirectoryExists 関数を呼び出すようにVimに指示します。
外部コマンドを使用する方法 この方法では、Vimの外部コマンド実行機能を利用してシェルの mkdir コマンドを実行します。
mkdir コマンドの実行: :!mkdir -p %:p:h このコマンドは、現在のファイルのディレクトリパスを取得し(%:p:h)、そのパスに対して外部の mkdir コマンドを実行します。-p オプションは、必要に応じて中間ディレクトリも作成することを意味します。
ファイルのオープン: :e filename このコマンドは、指定したファイルを編集モードで開きます。
これらの方法を使用することで、Vimを使ってファイルを開く際に、そのファイルが存在するディレクトリがない場合に自動的にディレクトリを作成することが可能になります。