Наскільки я знаю, немає налаштувань або деяких подібних для цього. Але не все втрачено, ми, звичайно, можемо використовувати
BufWritePre
автокоманду.
Це виконується до запису буфера на диск. Тож ми можемо створити там каталог, якщо він ще не існує.
Наприклад:
augroup Mkdir
autocmd!
autocmd BufWritePre *
\ if !isdirectory(expand("<afile>:p:h")) |
\ call mkdir(expand("<afile>:p:h"), "p") |
\ endif
augroup END
- Ми спочатку перевіряємо, чи існує каталог з
isdirectory
, інакше mkdir
видає помилку.
<afile>
посилається на файл, який ми намагаємося зберегти; :p
є модифікатором для розширення його до повного імені шляху (а не відносного) та :h
видаляє останній компонент шляху (файл).
- Потім зателефонуємо,
mkdir()
якщо потрібно. Нам потрібен p
прапор, mkdir()
щоб зробити всі каталоги батьків (тобто у випадку nonexistent/more_nonexisting/file
.
Можна, звичайно, також запустити mkdir()
команду з командного рядка Vim або прив'язати її до зв'язування клавіш, тобто:
nnoremap <Leader>m :call mkdir(expand("%:p:h"), "p")<CR>
Тут я використовував %
замість цього <afile>
, оскільки це дійсно лише з автокоманди ( %
відноситься до поточно активного буфера, який би не працював, :wa
наприклад; <afile>
посилається на ім'я файлу буфера, який запускає autocmd).
Ви також можете попросити підтвердження, перш ніж писати каталог, якщо хочете. Дивіться це запитання для більш детальної інформації: Як я можу зупинити Vim від написання файлу в автокоманді BufWritePre?
Вищенаведений фрагмент створить каталог під час першого запису ( :w
). Ви можете, якщо хочете, також створити каталог під час першого відкриття (тобто відразу після введення vim ...
), використовуючи BufNewFile
autocmd замість BufWritePre
.
Існує також плагін під назвою auto_mkdir, який фактично такий же, як і вище.
На цій сторінці
є дещо розширений фрагмент, який також запитує, чи ви хочете спершу створити каталог, який деякі можуть вважати корисним. Він також перетворює ім'я файлу кодування перед його написанням:
call mkdir(iconv(expand("%:p:h"), &encoding, &termencoding), 'p')
Я не впевнений, чи це насправді потрібно, але якщо ви багато змішуєте кодування і отримуєте дивні назви файлів, ви можете спробувати.
Я все це переклав у auto_mkdir2.vim
плагін для легшого встановлення.