Como faço para o Vim usar um nome de arquivo padrão quando não recebo nenhum nome de arquivo?

17

Eu raramente, se é que alguma vez, abro vimsem nomes de arquivos. Freqüentemente, quero testar algo, geralmente um script descartável rápido, e geralmente os nomeio test.sh(ou alguma variante do mesmo test.py). Posso vimassumir um test.shnome de arquivo se eu corri vimsem nenhum nome de arquivo? Normalmente, eu usaria pseudônimos (como vimspara vim test.she vimppara vim test.py, ou para todo o lado :w test.sh), mas me pergunto se há uma maneira de entrar vim. Seria ainda melhor se eu pudesse restringir isso a determinados diretórios, como /tmp, ou ~/dev.

muru
fonte

Respostas:

10

Tente colocar isso no final do seu .vimrc (modifique conforme apropriado)

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

Isso verifica se o nome do arquivo atual está vazio (faz @%referência ao nome do arquivo atual) e se o diretório atual do vim está /tmp. Você pode adicionar outros diretórios, assim como

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

Em seguida, edita silenciosamente o test.sh. Se esse arquivo já existir, ele será carregado. Caso contrário, você iniciará um novo buffer com esse nome e o arquivo será criado se você o escrever.

Fiz silêncio para suprimir a seguinte mensagem durante a inicialização:

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

Uma modificação da resposta de João pode ser útil:

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

Isso abre o primeiro arquivo que começa com test..

Em vez de apenas o primeiro arquivo, se você também deseja abrir outros arquivos correspondentes, faça:

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