Jak uzupełnić ścieżki plików w emacsie?

14

Powiedzmy na przykład, że edytuję plik konfiguracyjny i chcę wpisać ścieżkę. Czy istnieje wtyczka do emacsa, która pozwala uzupełnić ścieżkę pliku w tym buforze? Szukałem tego i są tam jakieś wtyczki bazillionowe.

Jason Baker
źródło
1
Nie jestem pewien, o co tutaj pytasz. Nowoczesne emacen mają uzupełnianie ścieżek w mini-buforze ( find-filena przykład przy użyciu ). Czy chcesz podobne zachowanie w buforze zawartości?
dmckee --- były moderator kociąt
1
@dmckee - Tak, właśnie tego dokładnie szukam.
Jason Baker
@dmckee Czy ten system operacyjny jest specyficzny? Miałem uzupełnianie nazw plików w Find File w Ubuntu, ale nie ma uzupełnienia w OSX. Na przykład mam plik o nazwie „referencja” w katalogu głównym i jestem w mini buforze: „Znajdź plik: ~ /” i wpisuję „ref” i oczekuję zakończenia, ale nic się nie dzieje. Czy muszę coś zainstalować?
Zeynel,
@ Zeynel też działa dobrze dla mnie w systemie Mac OS. Z wersją zainstalowaną Apple lub wersją homebrew. Pracowałem również z wersją Fink na mojej starszej maszynie.
dmckee --- były moderator kociak
@dmckee Strange. Może zadam nowe pytanie. Dzięki.
Zeynel,

Odpowiedzi:

11

Wypróbuj Hippie Expand , który jako jedna z jego możliwości ma ” try-complete-file-name. Możesz zmienić kolejność i listę funkcji rozwijania, których będzie używał hippie expand, aby sprzyjać rozszerzaniu nazwy pliku.

Możesz też napisać niestandardowe opakowanie, które tylko rozszerzy nazwy plików. Coś jak:

(global-set-key (kbd "C-M-/") 'my-expand-file-name-at-point)
(defun my-expand-file-name-at-point ()
  "Use hippie-expand to expand the filename"
  (interactive)
  (let ((hippie-expand-try-functions-list '(try-complete-file-name-partially try-complete-file-name)))
    (call-interactively 'hippie-expand)))
Trey Jackson
źródło
15

Zazwyczaj piszę Ctrl- X Ctrl- Ftak jakbym otwierał plik, ale zamiast RETnaciskać Ctrl- naciśnij - A Ctrl- K Ctrl-, Gaby skopiować ścieżkę, a następnie wkleić ją do buforu, który edytowałem za pomocą Ctrl- Y.

Nie potrzebuję tego wystarczająco często, ale gdybym naprawdę chciał lepszego rozwiązania, zdecydowanie skorzystałbym z rozwiązania Trey Jackson hippie-expand. Myślałem o tym, jak hippie-expandmoże być lepszy sposób to zrobić po raz pierwszy odpowiada, ale nie wiedziałem, i był zbyt leniwy, aby to sprawdzić, więc po prostu napisał, co mam zrobić.

Miś
źródło
Niezdarny i nieelegancki, ale działający. Muszę przyznać, że robię to od czasu do czasu. Nadal interesuje mnie
lepsze
W rzeczy samej. Jednak nie wydaje się to o wiele mniej pracy niż ręczne pisanie.
Jason Baker
1
@Jason Baker: Zależy to od tego, czy znasz dokładną nazwę pliku, czy też musisz go trochę poznać.
Teddy
6

Wanilia, od razu po wyjęciu z pudełka

M-x comint-dynamic-complete-filename

działa poza trybem comint. Oczywiście, można użyć dynamicznej ekspansji minibufor do korzystania mniej klawiszy, aby dostać się do niego (np Mx Comi NT- dy namic- c omplete -f ilename). Lub, jeśli będziesz go często używać, możesz powiązać go z wybraną sekwencją klawiszy za pomocą global-set-key.

Ron Kaminsky
źródło
2

Można to również zrobić przy użyciu firmowego autouzupełniania, jeśli company-filessą na liście company-backends(domyślnie w mojej instalacji) lub jawnie przez telefon company-files.

fikovnik
źródło
0

Niedawno odkryłem prace Tomohiro Matsuyama (@ m2ym) i jestem pod dużym wrażeniem jakości jego pakietów emacs.

Walczyłem z większością rozszerzeń autouzupełniania i odkryłem, że wszystkie mają poważne wady.

Sprawdź autouzupełnianie Tomo ( http://auto-complete.org/doc/manual.html ). Instalacja była łatwa (jestem na Linuksie) i obejmuje wiele potrzeb związanych z autouzupełnianiem w nowoczesny sposób.

Oczywiście twoja prośba o uzupełnienie nazw plików w buforze jest doskonale uwzględniona.

Na koniec, jeśli zdarzy ci się też robić Ruby, pamiętaj, aby nie przegapić jego rozszerzenia RSense ; znowu najlepszy w swoim rodzaju.

Arnaud Meuret
źródło
Link jest zepsuty
xuhdev