總想偷懶
例如:
原本沒有 002_data_copy 資料夾,但要編輯裡面的 main.c
$ vim 002_data_copy/main.c
這時候可以編輯檔案
但要存檔時就會發現錯誤:
E212: 無法以寫入模式開啟 (E212: Can't open file for writing)
主因是中間的路徑不存在
而 vim 也沒有像 mkdir 有 -p 的參數直接生成中間路徑
所以正規解法就是先產生資料夾
$ mkdir 002_data_copy $ vim 002_data_copy/main.c
不過偷懶是原動力 OuO
就被我找到有人用 vimscript 解決了
首先打開 ~/.vimrc
找地方貼上
" Ref: https://stackoverflow.com/a/4294176/6734174 " 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(expand('%:h'), 'p') endif endif endfunction augroup BWCCreateDir autocmd! autocmd BufWritePre * :call s:MkNonExDir(expand(''), +expand(' ')) augroup END
儲存後離開就完成啦
重新用單行版本就可以儲存了
$ vim 002_data_copy/main.c
多層也可以 OuO
$ vim t/t/t/t/t/t.c
參考資料:
Vim: Creating parent directories on save
沒有留言:
張貼留言