W trybie wstawiania Vima, czy jest sposób na dodanie autouzupełniania ścieżki pliku?

81

Piszę dużo skryptów powłoki i ciągle muszę wprowadzać ścieżki do plików. Zastanawiam się, czy ktoś wie, jak zmusić Vima do autouzupełniania ścieżek plików w trybie wstawiania, tak jak gdy jesteś w swojej ulubionej powłoce, zakładasz tabulator, aby uzupełnić ścieżkę katalogu lub pliku.

Dodatkowy kredyt, jeśli możesz uzyskać CTRLDfunkcjonalność powłoki w trybie wstawiania Vima (tj. Aby zobaczyć, jakie pliki / katalogi znajdują się w bieżącej ścieżce).

stephenmm
źródło
ciekawe pytanie, też chciałbym poznać odpowiedź :)
Jay Zeng,
@stephenmm Co robi Ctrl-D w twojej powłoce? W mojej powłoce bash nic nie robi, kiedy wpisuję tekst, w przeciwnym razie zamykam terminal.
alhelal
@alhelal - Wygląda na to, że CTRL-D pokaże pliki i katalogi w mojej starszej powłoce. Nie widzę już żadnej funkcji CTRL-D.
stephenmm

Odpowiedzi:

166

Do nazwy pliku uzupełnić omni, możesz użyć:

Ctrl- XCtrl-F

Christian C. Salvadó
źródło
11
Kolejna chwila vim aha… Dzięki. I tak nie używam tabulatora w trybie wstawiania, więc dodałem to do mojego .vimrc: imap <Tab> <CX> <CF>
stephenmm
4
Kolejnym dobrym zastosowaniem <tab> w trybie wstawiania jest <cn>. Spowoduje to automatyczne uzupełnienie wpisywanego słowa na podstawie innych słów w pliku, nad którym pracujesz. Używam go cały czas podczas wpisywania nazw zmiennych lub klas.
Derek
Czy istnieje sposób, aby wpłynąć na ścieżkę wyszukiwania? Podczas dodawania wpisów #include do pliku C ścieżki mogą nie być względne w stosunku do miejsca, z którego został otwarty plik.
Rob Bradford,
@RobBradford spróbuj YouCompleteMe, jeśli dostaniesz odpowiednie informacje (np. Używam .ycm_extra_conf.py generowanego przez YCM-Generator, który używa mojego systemu budowania opartego na cmake), ładnie uzupełni każdą ścieżkę w folderach z dołączanymi plikami.
Emile Vrijdags
Vim nie kończy autouzupełniania, gdy w nazwie pliku są spacje. Czy jest sposób, aby to naprawić?
Jean
19

Jest ctrl- x ctrl-f

:he compl-filename

Michael
źródło
18

Aby zbudować na @CMS i @michael doskonałe odpowiedzi

Przy użyciu sekwencji poleceń ctrl+ X ctrl+ fwyświetli listę plików w bieżącym katalogu. Spędzam minutę szukając właściwego klawisza, aby poruszać się w górę iw dół między różnymi nazwami plików. Prawidłowe klawisze to Ctrl-n i Ctrl-p. Możesz użyć prawie każdego innego klawisza (takiego jak Space), aby wybrać i kontynuować pisanie.

Ponadto, jeśli nie jesteś jeszcze w pliku / katalogu, który chcesz wstawić, możesz zejść w dół struktury drzewa plików w następujący sposób:

  1. Opcjonalnie wprowadź jakąś część katalogu. Możesz nawet użyć ../../na przykład!
  2. Naciśnij ctrl+ X ctrl+ fi wybierz pierwszą pozycję w drzewie z listy.
  3. Następnie naciśnij ponownie ctrl+, fgdy podświetlona jest właściwa pozycja, aby wyświetlić listę następnego poziomu w dół w strukturze drzewa katalogów.

Możesz to robić, aż znajdziesz katalog / plik, który chcesz wstawić do dokumentu.

Migawka
źródło
6
Czy w kroku 3 miałeś na myśli ctrl + x i ctrl + f? Ponieważ samo ctrl + f nie działa dla mnie, robi to samo, co ctrl + n. Przy okazji to nie działa tutaj, jeśli katalog zawiera spacje: /. czy znasz obejście?
Rojo,
0

Miałem podobny problem. Znalazłem rozwiązanie takie jak:

    sudo apt-get install realpath

A w nawigacji VIM do pliku w trybie normalnym:

    :r !realpath /path/to/file

Podczas nawigacji w trybie bez wstawiania po! Realpatch możesz użyć naszego przycisku klucza.

VOILA! TAB znów działa!

amonowy
źródło