Làm cách nào để hoàn thành đường dẫn tệp trong emacs?


14

Ví dụ, tôi đang chỉnh sửa tệp cấu hình và tôi muốn nhập vào một đường dẫn. Có một plugin cho emacs cho phép bạn hoàn thành một đường dẫn tệp trong bộ đệm đó không? Tôi đã tìm kiếm cái này và có một plugin hoàn thành bazillion ngoài kia.


1
Tôi không rõ những gì bạn hỏi ở đây. Emacen hiện đại có đường dẫn hoàn thành trong bộ đệm mini ( find-fileví dụ khi sử dụng ). Bạn có muốn một hành vi tương tự trong một bộ đệm nội dung?
dmckee --- ex-moderator mèo con

1
@dmckee - Vâng, đó thực sự chính xác là những gì tôi đang tìm kiếm.
Jason Baker

@dmckee Hệ điều hành này có cụ thể không? Tôi đã hoàn thành tên tệp trong Tìm tệp trong ubfox nhưng không có hoàn thành trong OSX. Chẳng hạn, tôi có một tệp có tên là "tham chiếu" trong root và tôi đang ở trong bộ đệm mini: "Tìm tệp: ~ /" và tôi nhập "ref" và tôi mong đợi hoàn thành nhưng không có gì xảy ra. Tôi có cần phải cài đặt cái gì không?
Zeynel

@Zeynel Hoạt động tốt với tôi trong Mac OS, quá. Với phiên bản cài đặt của Apple hoặc phiên bản homebrew. Cũng làm việc với phiên bản fink trên máy cũ của tôi.
dmckee --- ex-moderator mèo con

@dmckee Lạ. Có lẽ tôi hỏi một câu hỏi mới. Cảm ơn.
Zeynel

Câu trả lời:


10

Hãy thử Hippie Expand , một trong những khả năng của nó có ' try-complete-file-name. Bạn có thể thay đổi thứ tự và danh sách các chức năng mở rộng mà hippie mở rộng sẽ sử dụng để ưu tiên mở rộng tên tệp.

Hoặc, bạn thậm chí có thể viết một trình bao bọc tùy chỉnh chỉ thực hiện việc mở rộng tên tệp. Cái gì đó như:

(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

Tôi thường gõ Ctrl - X Ctrl- Fgiống như tôi sẽ mở một tệp, nhưng thay vì nhấn RETtôi nhấn Ctrl- A Ctrl- K Ctrl- Gđể sao chép đường dẫn và sau đó dán nó vào bộ đệm tôi đang chỉnh sửa Ctrl- Y.

Tôi không cần điều này thường xuyên đủ, nhưng nếu tôi thực sự muốn một giải pháp tốt hơn, tôi chắc chắn sẽ sử dụng giải pháp của Trey Jackson hippie-expand. Tôi đã nghĩ về cách hippie-expandcó thể là một cách tốt hơn để làm điều này khi lần đầu tiên trả lời, nhưng tôi không biết và quá lười để tìm kiếm nó, vì vậy tôi chỉ viết những gì tôi làm.


Clunky và không phù hợp, nhưng làm việc. Tôi phải thừa nhận làm điều này theo thời gian bản thân mình. Tôi vẫn quan tâm đến một giải pháp gọn gàng hơn, mặc dù ...
dmckee --- ex-moderator mèo con

Thật. Nó không thực sự có vẻ như làm việc ít hơn nhiều so với việc gõ nó bằng tay mặc dù.
Jason Baker

1
@Jason Baker: Nó phụ thuộc vào việc bạn biết tên tệp chính xác hay bạn cần khám phá một chút cho nó.
Teddy

6

Vani, ngoài hộp

M-x comint-dynamic-complete-filename

hoạt động bên ngoài chế độ comint. Tất nhiên, bạn có thể sử dụng bản mở rộng động của xe buýt nhỏ để sử dụng ít tổ hợp phím hơn để truy cập nó (ví dụ: Mx comi nt- dy namic- c omplete -f ilename). Hoặc, nếu bạn sẽ sử dụng nó thường xuyên, bạn có thể liên kết nó với một chuỗi chính bạn chọn bằng cách sử dụng global-set-key.


2

Cũng có thể thực hiện việc này bằng cách tự động hoàn thành công ty nếu company-filescó trong danh sách company-backends(mặc định trong cài đặt của tôi) hoặc rõ ràng bằng cách gọi company-files.


0

Gần đây tôi đã phát hiện ra các tác phẩm của Tomohiro Matsuyama (@ m2ym) và tôi đã rất ấn tượng bởi chất lượng của các gói emacs của nó.

Tôi đã vật lộn với hầu hết các tiện ích mở rộng hoàn thành tự động và phát hiện ra rằng tất cả chúng đều có những thiếu sót lớn.

Hãy xem tính năng tự động hoàn thành của Tomo ( http://auto-complete.org/doc/manual.html ) thật dễ dàng để cài đặt (Tôi trên Linux) và đáp ứng nhiều nhu cầu tự động hoàn thành theo cách hiện đại .

Tất nhiên, yêu cầu hoàn thành tên tệp trong bộ đệm của bạn được bảo vệ hoàn hảo.

Cuối cùng, nếu bạn cũng làm Ruby, hãy đảm bảo không bỏ lỡ phần mở rộng RSense của anh ấy ; một lần nữa, tốt nhất của loại hình này.


Liên kết bị hỏng
xuhdev

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.