[解決済み] Vim 保存時に親ディレクトリを作成する
2022-07-12 15:59:19
質問
もし私が
vim foo/bar/somefile
が
foo/bar
が既に存在しない場合、Vim は保存を拒否します。
シェルに切り替えるか、あるいは
:!mkdir foo/bar
を実行することもできますが、私は怠け者です :)
Vim がバッファを保存するときに自動的にそうするようにする方法はないでしょうか?
どのように解決するのですか?
augroup BWCCreateDir
autocmd!
autocmd BufWritePre * if expand("<afile>")!~#'^\w\+:/' && !isdirectory(expand("%:h")) | execute "silent! !mkdir -p ".shellescape(expand('%:h'), 1) | redraw! | endif
augroup END
条件に注意してください。
expand("<afile>")!~#'^\w\+:/'
のようなファイルのためのディレクトリを vim が作成しないようにします。
ftp://*
と
!isdirectory
とすることで、高価な mkdir の呼び出しを防ぐことができます。
更新
これは、空でない buftype もチェックするものです。
mkdir()
:
function s:MkNonExDir(file, buf)
if empty(getbufvar(a:buf, '&buftype')) && a:file!~#'\v^\w+\:\/'
let dir=fnamemodify(a:file, ':h')
if !isdirectory(dir)
call mkdir(dir, 'p')
endif
endif
endfunction
augroup BWCCreateDir
autocmd!
autocmd BufWritePre * :call s:MkNonExDir(expand('<afile>'), +expand('<abuf>'))
augroup END
関連
-
[解決済み] mvで移動先のディレクトリが存在しない場合、作成させる方法はありますか?
-
[解決済み] Vimエディタを終了するにはどうすればよいですか?
-
[解決済み] Vimで文字を改行で置き換える方法
-
[解決済み] Vim 直前の検索ハイライトをクリアする
-
[解決済み] Vimで大文字小文字を区別しない検索をする方法
-
[解決済み] Vimで行全体を複製する方法は?
-
[解決済み] Vimで行のコメント/アンコメントを素早く行う方法は?
-
[解決済み] Vimで最も生産性の高いショートカットは何ですか?
-
[解決済み】vimの「sudoで書く」トリックはどうやるの?
-
[解決済み】Vimで複数のファイルを効率的に操作する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] .vimrcファイルはどこですか?
-
[解決済み] Vim 最後の検索ハイライトをクリアする
-
[解決済み] Vimで行末に移動するにはどうしたらいいですか?
-
[解決済み] すべての行をクリップボードにコピーする
-
[解決済み] Vimで縦割りから横割りに高速で切り替えるには
-
[解決済み] Vimで、テキストをレジスタに入れずに削除する方法はありますか?
-
[解決済み] VIMで選択した単語の出現箇所をすべて強調表示するには?
-
[解決済み] カーソル下の1単語を置換する方法は?
-
[解決済み] VIM ctrlp.vim プラグイン:ファイルを再スキャンする方法は?
-
[解決済み] Vimで、regexpの "the \b "のような単語境界文字はどのように検索するのですか?