una subdirectorios por para directorios directorio crear consola como comandos comando carpeta arbol vim

subdirectorios - ¿Cómo puedo crear una carpeta, si no existe, desde.vimrc?



crear directorios y subdirectorios en linux (6)

Creo que este es un sistema operativo independiente:

if !isdirectory("/my/directory") call mkdir("/my/directory", "p") endif

No me gusta cómo vim llena mis carpetas con archivos de respaldo, así que tengo la siguiente línea en mi archivo .vimrc:

set backupdir=~/.vim_backup

Sin embargo, a veces esta carpeta no existe debido a las nuevas máquinas en las que estoy copiando mis archivos de usuario.

¿Cómo puedo crear esta carpeta automáticamente, si no existe, desde .vimrc? ¿O hay alguna mejor manera de lidiar con esta situación?


Podrías usar la función mkdir() Vim. Puede crear directorios intermedios y establecer permisos adecuados en el directorio también:

if !isdirectory($HOME . "/.vim/backup") call mkdir($HOME . "/.vim/backup", "p", 0700) endif


Puedes poner esto en tu .vimrc:

silent !mkdir ~/.vim_backup > /dev/null 2>&1

Esto intentará crear el ~ / .vim_backup cada vez que inicie vim. Si ya existe, mkdir señalará un error, pero nunca lo verás.


Quería una solución a esto que funcione tanto en Linux como en Windows (con los binarios de Cygwin en la ruta). Mi configuración Vim se comparte entre los dos.

Un problema es que ''mkdir'' está, creo, integrado al cmd shell en Windows, por lo que no se puede anular colocando el ejecutable Cygwin mkdir anteriormente en la ruta.

Resolví esto invocando un nuevo shell bash para realizar la acción: a partir de ahí, ''mkdir'' siempre significa que el ejecutable mkdir está en la ruta:

!bash -c "mkdir -p ~/.vim-tmp"

Sin embargo, esto tiene el problema de que. Al menos en Windows, aparece una nueva ventana para el shell cmd que ''!'' invoca No quiero eso cada vez que empiezo vim. Luego descubrí la función vim ''sistema'', que invoca un nuevo shell cmd (el icono aparece en la barra de tareas de Windows) pero la ventana está minimizada. Por lo tanto:

call system("bash -c /"mkdir -p ~/.vim-tmp/"")

Feo pero funciona.


Tengo un comando en mi vimrc que me permite crear un directorio correspondiente al búfer que se encuentra en primer plano:

nmap <silent> ,md :!mkdir -p %:p:h<CR>

Esto se puede usar para crear un directorio en cualquier lugar donde quiera colocar uno local o remotamente a través de netrw si tiene los permisos para hacerlo.


Yo prefiero los de una sola línea ya publicados. Sin embargo, pensé en compartir lo que he estado usando:

function! EnsureDirExists (dir) if !isdirectory(a:dir) if exists("*mkdir") call mkdir(a:dir,''p'') echo "Created directory: " . a:dir else echo "Please create directory: " . a:dir endif endif endfunction call EnsureDirExists($HOME . ''/.vim_backup'')