O ile mi wiadomo, nie ma takiego ustawienia ani czegoś takiego. Ale nie wszystko przepadło, możemy oczywiście użyć polecenia
BufWritePreautomatycznego.
Jest to wykonywane przed zapisaniem bufora na dysku. Możemy więc utworzyć tam katalog, jeśli jeszcze nie istnieje.
Na przykład:
augroup Mkdir
autocmd!
autocmd BufWritePre *
\ if !isdirectory(expand("<afile>:p:h")) |
\ call mkdir(expand("<afile>:p:h"), "p") |
\ endif
augroup END
- Najpierw sprawdzamy, czy katalog istnieje
isdirectory, w przeciwnym razie mkdirwyświetla błąd.
<afile>odnosi się do pliku, który próbujemy zapisać; :pjest modyfikatorem pozwalającym rozwinąć go do pełnej nazwy ścieżki (zamiast względnej) i :husuwa ostatni składnik ścieżki (plik).
- W
mkdir()razie potrzeby dzwonimy . Potrzebujemy pflagi, mkdir()aby wszystkie katalogi rodziców (np. W przypadku nonexistent/more_nonexisting/file.
Możesz oczywiście również uruchomić mkdir()polecenie z wiersza poleceń Vima lub powiązać je ze skrótem klawiszowym, tj .:
nnoremap <Leader>m :call mkdir(expand("%:p:h"), "p")<CR>
Tutaj użyłem %zamiast <afile>, ponieważ jest to poprawne tylko w obrębie komendy automatycznej ( %odnosi się do aktualnie aktywnego bufora, który nie działałby :wana przykład; <afile>odnosi się do nazwy pliku bufora, który uruchamia autocmd).
Możesz również poprosić o potwierdzenie przed napisaniem katalogu, jeśli chcesz. Zobacz to pytanie, aby uzyskać więcej informacji: Jak mogę powstrzymać Vima przed zapisaniem pliku w automatycznej komendzie BufWritePre?
Powyższy fragment utworzy katalog przy pierwszym write ( :w). Możesz, jeśli chcesz, również utworzyć katalog przy pierwszym otwarciu (tj. Zaraz po wpisaniu vim ...) za pomocą BufNewFileautocmd zamiast BufWritePre.
Istnieje również wtyczka o nazwie auto_mkdir, która jest faktycznie taka sama jak wyżej.
Na tej stronie
znajduje się nieco rozszerzony fragment, który również pyta, czy chcesz najpierw utworzyć katalog, co niektórzy mogą uznać za przydatny. Konwertuje także nazwę pliku kodowania przed jego zapisaniem:
call mkdir(iconv(expand("%:p:h"), &encoding, &termencoding), 'p')
Nie jestem jednak pewien, czy jest to faktycznie wymagane, ale jeśli często miksujesz kodowanie i otrzymujesz dziwne nazwy plików, możesz spróbować.
Wszystkie powyższe umieściłem we auto_mkdir2.vimwtyczce, aby ułatwić instalację.