¿Cómo hago para que Vim use un nombre de archivo predeterminado cuando no se le da ningún nombre de archivo?

17

Raramente, si alguna vez, solo abro vimsin nombres de archivo. A menudo, quiero probar algo, generalmente un guión rápido desechable, y generalmente los nombro test.sh(o alguna variante del mismo, como test.py). ¿Puedo vimasumir un test.shnombre de archivo si ejecuté vimsin ningún nombre de archivo? Por lo general, uso alias (como vimsfor vim test.shand vimpfor vim test.pyo go the whole :w test.sh), pero me pregunto si hay una forma de hacerlo desde adentro vim. Sería aún mejor si puedo restringir esto a ciertos directorios, como /tmp, o ~/dev.

muru
fuente

Respuestas:

10

Intente poner esto al final de su .vimrc (modifique según corresponda)

if @% == "" && getcwd() == "/tmp"
    :silent edit test.sh
endif

Esto verifica si el nombre de archivo actual está vacío (hace @%referencia al nombre de archivo actual) y verifica si el directorio actual de vim lo está /tmp. También podría agregar otros directorios así

(getcwd() == "/tmp" || getcwd() == "~/dev")

Luego edita silenciosamente test.sh. Si ese archivo ya existe, lo cargará. De lo contrario, comenzará un nuevo búfer con ese nombre y el archivo se creará si lo escribe.

Silencié para suprimir el siguiente mensaje durante el inicio:

"test.sh" [New File]
Press ENTER or type command to continue
John O'M.
fuente
5

Una modificación de la respuesta de John puede ser útil:

if @% == "" && getcwd() == "/tmp"
    :silent edit `=glob("test\.*", 1, 1)[0]`
endif

Eso abre el primer archivo que comienza con test..

En lugar de solo el primer archivo, si también desea abrir otros archivos coincidentes, haga lo siguiente:

if @% == "" && getcwd() == "/tmp"
    for i in glob("test\.*", 1, 1)
        :silent edit `=i`
    endfor
endif
usuario50136
fuente