2013-07-29 30 views
5

Làm cách nào để có thể hoàn thành toàn bộ dòng trong Emacs, tương tự như CTRL-x l của Vim?Hoàn thành toàn bộ dòng trong Emacs?

Ví dụ, trong Vim, nếu tôi gõ:

from d<CTRL-X>-l 

tôi sẽ nhận được một popup như thế này:

vim line completion popup

nào cho thấy tất cả các dòng phù hợp mà tiền tố trong bộ đệm mở.

Trả lời

2

Điều này không cung cấp danh sách để lựa chọn (thử điều chỉnh autocomplete cho điều đó) nhưng nói cách khác là "cảm giác".

(defun my-expand-lines() 
    (interactive) 
    (let ((hippie-expand-try-functions-list 
     '(try-expand-line))) 
    (call-interactively 'hippie-expand))) 

(define-key evil-insert-state-map (kbd "C-x C-l") 'my-expand-lines) 
+0

Tuyệt vời! Bây giờ, có thể sử dụng nó với một danh sách popup? –

+1

@DavidWolever: http: // cx4a.org/software/auto-complete/là một cách để có được quảng cáo nhưng AC là một con thú của một thư viện. Tôi sẽ không biết về việc sử dụng nó. – progo

1

hippie-mở rộng không đó, bạn chỉ cần phải cấu hình nó như mô tả trên câu trả lời cuối cùng ở đây: Does Emacs has word and line completion (like Vim's insert mode completion)?

+0

Ah… nó đề cập đến cách mở rộng đường kẻ ở đâu? Tôi đã poked xung quanh, nhưng không thấy bất cứ điều gì rõ ràng: \ –

+0

Về cơ bản, bạn phải thêm hàm try-expand-line vào hippie-expand-try-functions-list (như trong câu trả lời bạn đã chấp nhận). Nhưng tôi chưa bao giờ sử dụng một popup cho một trong hai ... – jfsantos

1

Emacs đi kèm với multi-occur nếu bạn cảm thấy thoải mái điều hướng các danh sách như một bộ đệm.

Nếu không, bạn nên biết helm. Xem câu trả lời này https://stackoverflow.com/a/14731718/903943

0

Icicles lệnh icicle-occur làm những gì bạn yêu cầu. Nó cho phép bạn tìm và điều hướng giữa các kết quả tìm kiếm mẫu trên nhiều tệp hoặc bộ đệm, cập nhật tập hợp các lần truy cập tìm kiếm tăng dần khi bạn thay đổi mẫu để tìm kiếm. Bạn có thể tinh chỉnh dần tìm kiếm bằng cách áp dụng các mẫu bổ sung. Bạn có thể truy cập trực tiếp vào các lần truy cập, riêng lẻ hoặc chuyển đổi giữa các lần truy cập trong các đơn hàng chu kỳ khác nhau.

0

Xem https://github.com/redguardtoo/eacl - Emacs tự động dòng đầy đủ (s)

Sự khác biệt giữa eacl và các giải pháp khác:

  • nó được ứng cử viên hơn bằng cách grepping tập tin trong dự án hiện tại (root dự án được tự động phát hiện nếu bạn sử dụng git/svn/lanh lợi)

  • nó có thể hoàn thành tuyên bố dòng đa bởi grepping

-1

Phải mất một số thao tác, nhưng bạn có thể kết hợp hoàn thành công ty và mở rộng hippie để cung cấp cho bạn trình đơn bật lên của các dòng từ bộ đệm hiện tại.

Trước tiên, bạn cần phải xác định một hàm để gọi thử-mở rộng-line (sửa đổi để trở việc mở rộng thay vì gọi ông mở rộng và trở t) từ hippie-exp.el và thu thập tất cả các bản mở rộng:

(defun get-hippie-expand-lines() 
    (let (completions-list candidate) 
    (setq candidate (my-try-expand-line nil)) 
    (if candidate 
     (progn 
      (push candidate completions-list) 
      (while (progn 
        (setq candidate (my-try-expand-line t)) 
        (if candidate 
         (push candidate completions-list) 
        nil)))) 
     nil) 
    completions-list)) 

Sau đó, bạn có thể viết chương trình phụ trợ của công ty nhỏ để cung cấp cho bạn các ứng viên hoàn thành thông qua cửa sổ bật lên của công ty.

(defun company-hippie-line (command &optional arg &rest ignored) 
    (interactive (list 'interactive)) 
    (cl-case command 
    (interactive (company-begin-backend 'company-hippie-line)) 
    (prefix (and (not (looking-at "[:word:]")) 
       (let (p1 p2) 
        (save-excursion 
        (end-of-line) 
        (setq p2 (point)) 
        (back-to-indentation) 
        (setq p1 (point))) 
        (buffer-substring-no-properties p1 p2)))) 
    (candidates (get-hippie-expand-lines)))) 
;; Uncomment if you want to get line completion popups whenever found 
;; (add-to-list 'company-backends 'company-hippie-line) 
(global-set-key (kbd "C-x l") 'company-hippie-line) 

Xem thêm thảo luận tại this post.

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt nhất là đưa vào các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ review/low-quality-posts/18224331) –

+0

Cảm ơn bạn đã tip, thêm các phần thiết yếu của câu trả lời. – nandkeypull

Các vấn đề liên quan