Jak sprawić, by Vim używał domyślnej nazwy pliku, jeśli nie otrzymał żadnych nazw plików?

17

Rzadko, jeśli w ogóle, po prostu otwieram vimbez nazw plików. Często chcę coś przetestować, zwykle szybki skrypt, i zwykle nazywam je test.sh(lub niektóre ich warianty test.py). Czy mogę vimzałożyć test.shnazwę pliku, jeśli działałem vimbez żadnych nazw plików? Zwykle używałem aliasów (jak vimsna vim test.shi vimpdla vim test.py, lub poszedłbym na całość :w test.sh), ale zastanawiam się, czy jest jakieś wyjście z wnętrza vim. Byłoby jeszcze lepiej, gdybym mógł ograniczyć to do niektórych katalogów, takich jak /tmplub ~/dev.

muru
źródło

Odpowiedzi:

10

Spróbuj umieścić to na końcu swojego .vimrc (odpowiednio zmodyfikuj)

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

To sprawdza, czy bieżąca nazwa pliku jest pusta ( @%odwołuje się do bieżącej nazwy pliku) i sprawdza, czy bieżący katalog vima to /tmp. Możesz także dodać inne katalogi

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

Następnie dyskretnie edytuje test.sh. Jeśli ten plik już istnieje, załaduje go. W przeciwnym razie uruchomisz nowy bufor o tej nazwie, a plik zostanie utworzony, jeśli go napiszesz.

W ciszy ukryłem następujący komunikat podczas uruchamiania:

"test.sh" [New File]
Press ENTER or type command to continue
John O'M.
źródło
5

Przydatna może być modyfikacja odpowiedzi Johna:

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

Spowoduje to otwarcie pierwszego pliku, który zaczyna się od test..

Zamiast tylko pierwszego pliku, jeśli chcesz również otworzyć inne pasujące pliki, wykonaj:

if @% == "" && getcwd() == "/tmp"
    for i in glob("test\.*", 1, 1)
        :silent edit `=i`
    endfor
endif
użytkownik50136
źródło