Bagaimana cara menyelesaikan jalur file di emacs?

14

Katakan misalnya saya sedang mengedit file konfigurasi dan saya ingin mengetikkan path. Apakah ada plugin untuk emacs yang memungkinkan Anda menyelesaikan jalur file di buffer itu? Saya telah mencari ini dan di sana ada banyak sekali plugin penyelesaian.

Jason Baker
sumber
1
Saya tidak jelas tentang apa yang Anda tanyakan di sini. Emacen modern memiliki penyelesaian jalur di buffer mini (saat menggunakan find-filemisalnya). Apakah Anda ingin perilaku serupa di buffer konten?
dmckee --- ex-moderator kitten
1
@ dmckee - Ya, sebenarnya itulah yang saya cari.
Jason Baker
@ dmckee Apakah OS ini spesifik? Saya memiliki penyelesaian nama file di Cari File di ubuntu tetapi tidak ada penyelesaian di OSX. Sebagai contoh saya memiliki file yang disebut "referensi" di root dan saya di buffer mini: "Temukan file: ~ /" dan saya masukkan "ref" dan saya mengharapkan penyelesaian tetapi tidak ada yang terjadi. Apakah saya perlu menginstal sesuatu?
Zeynel
@ Zeynel berfungsi dengan baik untuk saya di Mac OS, juga. Baik dengan versi yang diinstal Apple atau versi homebrew. Juga bekerja dengan versi fink di mesin saya yang lebih lama.
dmckee --- ex-moderator kitten
@ dmckee Strange. Mungkin saya mengajukan pertanyaan baru. Terima kasih.
Zeynel

Jawaban:

10

Coba Hippie Expand , yang sebagai salah satu kemungkinannya memiliki ' try-complete-file-name. Anda dapat mengubah urutan dan daftar fungsi ekspansi yang akan digunakan hippie untuk mendukung perluasan nama file.

Atau, Anda bahkan bisa menulis pembungkus khusus yang hanya akan melakukan ekspansi nama file. Sesuatu seperti:

(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
sumber
14

Saya biasanya mengetik Ctrl- X Ctrl- Fseperti saya akan membuka file, tetapi alih-alih menekan RETsaya menekan Ctrl- A Ctrl- K Ctrl- Guntuk menyalin path dan kemudian menempelkannya ke buffer yang saya edit dengan Ctrl- Y.

Saya tidak cukup membutuhkan ini, tetapi jika saya benar-benar menginginkan solusi yang lebih baik, saya pasti akan menggunakan solusi Trey Jackson hippie-expand. Saya memikirkan bagaimana hippie-expandmungkin cara yang lebih baik untuk melakukan ini ketika pertama kali menjawab, tetapi saya tidak tahu dan terlalu malas untuk mencarinya, jadi saya hanya menulis apa yang saya lakukan.

Teddy
sumber
Kikuk dan tidak elegan, tetapi bekerja. Saya harus mengakui untuk melakukan ini dari waktu ke waktu sendiri. Aku masih tertarik dalam larutan lebih rapi, meskipun ...
dmckee --- mantan moderator kitten
Memang. Tampaknya tidak terlalu banyak pekerjaan daripada mengetik secara manual.
Jason Baker
1
@Jason Baker: Itu tergantung pada apakah Anda tahu nama file yang tepat atau jika Anda perlu sedikit mengeksplorasi untuk itu.
Teddy
6

Vanilla, out-of-the-box

M-x comint-dynamic-complete-filename

bekerja di luar mode comint. Tentu saja, Anda dapat menggunakan ekspansi dinamis minibuffer untuk menggunakan penekanan tombol yang lebih sedikit untuk mencapainya (mis., Mx comi NT- dy namic- c omplete -f ilename). Atau, jika Anda akan sering menggunakannya, Anda dapat mengikatnya pada urutan kunci pilihan Anda menggunakan global-set-key.

Ron Kaminsky
sumber
2

Dimungkinkan juga untuk melakukan ini menggunakan pelengkapan otomatis perusahaan jikacompany-files ada dalam daftar company-backends(default dalam instalasi saya) atau secara eksplisit dengan menelepon company-files.

fikovnik
sumber
0

Baru-baru ini saya menemukan karya-karya Tomohiro Matsuyama (@ m2ym) dan saya sangat terkesan dengan kualitas paket emacs-nya.

Saya telah berjuang dengan sebagian besar ekstensi pelengkapan otomatis dan menemukan bahwa mereka semua memiliki kekurangan utama.

Lihat tuntas otomatis Tomo ( http://auto-complete.org/doc/manual.html ) sudah sangat mudah untuk menginstal (saya di Linux) dan mencakup banyak kebutuhan pelengkapan otomatis dengan cara modern .

Tentu saja, permintaan Anda untuk penyelesaian nama file dalam buffer sudah tercakup dengan sempurna.

Terakhir, jika Anda juga menggunakan Ruby, pastikan untuk tidak melewatkan ekstensi RSense- nya ; lagi, yang terbaik dari jenisnya.

Arnaud Meuret
sumber
Tautan rusak
xuhdev
Dan di sini adalah tautan baru: github.com/auto-complete/auto-complete/blob/master/doc/…
Krab