Humanity

Edit the world by your favorite way

「Vim Hacks #202: 自動的にディレクトリを作成する」を手動でやる方法

この設定は便利なのですが、サーバ管理者でVimを使ってる人には.vimrcに設定を入れられない、あるいは入れたくない人がいるはずです。

augroup vimrc-auto-mkdir  " {{{
  autocmd!
  autocmd BufWritePre * call s:auto_mkdir(expand('<afile>:p:h'))
  function! s:auto_mkdir(dir)  " {{{
    if !isdirectory(a:dir)
      call mkdir(iconv(a:dir, &encoding, &termencoding), 'p')
    endif
  endfunction  " }}}
augroup END  " }}}
http://vim-users.jp/2011/02/hack202/


その場合、以下のコマンドでできます。

:!mkdir -p %:h

「%:h」は「:!」コマンドの中では編集中ファイルの親ディレクトリ名に置き換わるので、上記コマンドで親ディレクトリを作成できます。
「%:h」の代わりに「%:p:h」だと絶対パスになりますが、「:!」コマンドで実行されるコマンドは常にVimのカレントディレクトリ*1になるので、この場合は必要ないため、タイプ数の少ない「%:h」が便利です。

追記 (2015/07/07 21:36)

このHackは少し前にプラグイン化されました。 mopp++
mopp/autodirmake.vim · GitHub

*1::pwdコマンドで表示されるパス。デフォルトはVimを起動したディレクトリ。:cdコマンドで変更できる。