w zasadzie mój przepływ pracy jest następujący: mam kilka okien otwartych przy użyciu podziałów w terminalu w zwykłym vimie. Czasami mam plik otwarty, czasami nie przełączam się między :buf
i, :tag
aby uzyskać plik. Idealnie chciałbym coś, co by działało, :buf
ale jeśli plik nie znajduje się obecnie w buforze, to wykonałby a :e
.
Dlatego w celu uproszczenia:
Wpisuję :buf
i wpisuję część nazwy pliku i uderzam <tab>
to daje mi dopasowanie do plików i dopasowuje tyle plików, ile to możliwe, jeśli żądanego pliku nie ma już w buforze, chciałbym nadal móc wpisać ten plik nazwij i załaduj plik. Zwykle teraz muszę wrócić i zmienić polecenie z a :buf [file]
na a :e [file]
.
Czy istnieje sposób na utworzenie polecenia, które działałoby jak :buf
ale otwiera plik, jeśli jeszcze nie istnieje? Powodem, :buf
dla którego zacznę od tego jest to, że ogranicza zakres do plików w niektórych katalogach i dopasuje je po naciśnięciu klawisza. Mam nadzieję, że wyjaśniłem to poprawnie :).
Przykład:
:buf FooX[tab]
pokazuje 4 pliki i ma
:buf [very long path]/FooX
Teraz, jeśli plik Dokładny z przedrostkiem FooX nie jest wyświetlany, nadal chcę móc pisać FooXFileNotShown.cpp
i ładować go tak, jak :e
powinien.
Z góry dziękuje za twoją pomoc.
:b fileA<Tab>
nazwę bufora przechowywaną przez Vima na stosunkowo krótkiej liście, ale ta lista nie istnieje dla nieotwartych plików, tylko dla otwartych buforów. Aby tego rodzaju uzupełnienie było możliwe w przypadku rzeczywistych nazw plików, system plików musi zostać przeskanowany, wynik tego skanowania musi być buforowany i tak dalej.:find
działa mniej więcej tak, ale może być bardzo powolny w przypadku dużych struktur katalogów. Proponuję rzucić okiem na CtrlP i podobne wtyczki.Chcesz więc komendy z zakończeniem istniejących buforów, która następnie albo otworzy bufor (jeśli istnieje), albo edytuje przekazany plik zamiast dawać
E94: No matching buffer
błąd.Co powiesz na to:
Polecenia niestandardowe muszą zaczynać się wielką literą, ale używasz cmdalias.vim - Utwórz aliasy dla wtyczki poleceń Vima, aby przeciążyć istniejące
:buf
polecenie.źródło