Come posso completare i percorsi dei file in emacs?


14

Ad esempio, sto modificando un file di configurazione e voglio digitare un percorso. Esiste un plugin per emacs che ti consente di completare un percorso di file in quel buffer? Ho cercato questo e c'è un bazillion plugin di completamento là fuori.


1
Non sono chiaro su cosa chieda la tua zona qui. Gli emacen moderni hanno il completamento del percorso nel mini-buffer (quando si usa find-filead esempio). Vuoi un comportamento simile in un buffer di contenuto?
dmckee --- ex gattino moderatore

1
@dmckee - Sì, è proprio quello che sto cercando.
Jason Baker,

@dmckee Questo sistema operativo è specifico? Ho avuto il completamento del nome del file in Trova file in Ubuntu ma non c'è completamento in OSX. Ad esempio ho un file chiamato "riferimento" in root e sono nel mini buffer: "Trova il file: ~ /" e inserisco "ref" e mi aspetto il completamento ma non succede nulla. Devo installare qualcosa?
Zeynel

@Zeynel Funziona bene anche per me su Mac OS. O con la versione installata di Apple o la versione homebrew. Ha funzionato anche con la versione Fink sul mio vecchio computer.
dmckee --- ex-moderatore gattino

@dmckee Strange. Forse faccio una nuova domanda. Grazie.
Zeynel,

Risposte:


10

Prova Hippie Expand , che ha una delle sue possibilità ' try-complete-file-name. È possibile modificare l'ordine e l'elenco delle funzioni di espansione che hippie expand utilizzerà per favorire l'espansione del nome del file.

Oppure, potresti persino scrivere un wrapper personalizzato che farebbe solo l'espansione del nome file. Qualcosa di simile a:

(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)))

14

Di solito scrivo Ctrl- X Ctrl- Fcome se aprissi un file, ma invece di premere RETpremo Ctrl- A Ctrl- K Ctrl- Gper copiare il percorso e quindi incollarlo nel buffer con cui stavo modificando Ctrl- Y.

Non ne ho bisogno abbastanza spesso, ma se volessi davvero una soluzione migliore, utilizzerei sicuramente la soluzione di Trey Jackson hippie-expand. Ho pensato a come hippie-expandpotrebbe essere un modo migliore per farlo quando ho risposto per la prima volta, ma non lo sapevo ed ero troppo pigro per cercarlo, quindi ho appena scritto quello che faccio.


Clunky e inelegante, ma funzionante. Devo ammettere di farlo di tanto in tanto da solo. Sono ancora interessato a una soluzione più
ordinata

Infatti. Non sembra davvero molto meno lavoro che digitarlo manualmente però.
Jason Baker,

1
@Jason Baker: dipende dal fatto che tu conosca il nome esatto del file o se devi esplorarlo un po '.
Teddy,

6

La vaniglia, pronta all'uso

M-x comint-dynamic-complete-filename

funziona al di fuori della modalità Comint. Naturalmente, è possibile utilizzare l'espansione dinamica del minibuffer di utilizzare meno tasti per arrivare ad essa (per esempio, Mx comi nt- dy namic- c omplete -f ilename). Oppure, se lo utilizzerai frequentemente, puoi associarlo a una sequenza di tasti a tua scelta utilizzando global-set-key.



0

Di recente ho scoperto le opere di Tomohiro Matsuyama (@ m2ym) e sono rimasto molto colpito dalla qualità dei suoi pacchetti emacs.

Ho lottato con la maggior parte delle estensioni di completamento automatico e ho scoperto che tutte hanno gravi carenze.

Dai un'occhiata al completamento automatico di Tomo ( http://auto-complete.org/doc/manual.html ) è stato semplicissimo da installare (sono su Linux) e copre molte esigenze di completamento automatico in modo moderno .

Naturalmente, la tua richiesta di completamento dei nomi di file nel buffer è perfettamente coperta.

Infine, se ti capita di fare anche Ruby, assicurati di non perdere la sua estensione RSense ; di nuovo, il migliore nel suo genere.


Il collegamento è interrotto
xuhdev

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.