2013-08-06 121 views
5

Khi tôi tab-hoàn thành trong một minibuffer và Emacs hiển thị một danh sách hoàn thành trong một bộ đệm mới, làm thế nào để chuyển sang bộ đệm mà không cần sử dụng chuột?Trong Emacs, làm cách nào để chọn danh sách hoàn thành bằng bàn phím?

Tôi đã thử C-x o, nhưng điều đó vừa chuyển sang bộ đệm đầu tiên, trong đó tôi đã nhập minibuffer.

Tôi cũng đã thử C-x b, nhưng điều đó mang lại cho tôi command attempted to use minibuffer while in minibuffer.

Cuối cùng tôi đã thử C-x <C-right>, cung cấp cho tôi cannot switch buffers in minibuffer window.

EDIT: Tôi đã nói về việc hoàn thành minibuffer trong ví dụ của tôi, nhưng có thể truy cập danh sách hoàn thành (sử dụng bàn phím) từ trong bộ đệm thông thường cũng rất quan trọng đối với tôi và không hoạt động. Lối tắt M-v được đề xuất nhưng dường như chỉ hoạt động bên trong minibuffer được truy cập bởi M-x, trong mọi bộ đệm khác mà tôi đã thử, M-v bị ràng buộc là scroll down command và không chuyển sang danh sách hoàn thành. Tôi thậm chí không có vẻ làm việc trong những chiếc minibuffers khác. Ví dụ, nó không hoạt động trong lệnh shell minibuffer được gọi bởi M-!.

+0

Xem đề xuất của tôi trong phần chỉnh sửa cho câu trả lời của tôi bên dưới. –

Trả lời

2

Bạn có thể sử dụng C-xo hai lần, hoặc sử dụng M--C-xo, mà chuyển sang bộ đệm trước thay vì kế tiếp.

+0

'C-x o' hai lần không hoạt động, vì lệnh đầu tiên đóng danh sách hoàn thành. Áp dụng một đối số phủ định cho lệnh chuyển đổi bộ đệm tuy nhiên hoạt động tốt. Tôi sẽ sử dụng 'C-- C-x o'. Ngoài ra, nó không chèn con trỏ ở lần hoàn thành đầu tiên, mà là sự khởi đầu của bộ đệm, mà nó hút bởi vì sau đó tôi phải di chuyển tất cả các con đường xuống. Đây có thực sự là cách mọi người sử dụng hoàn thành không? – bug

+1

lỗi: Không, tôi nghi ngờ rằng rất ít người thực sự tương tác trực tiếp với bộ đệm hoàn thành. Cách tiếp cận bình thường chỉ đơn giản là tiếp tục lọc các tùy chọn bằng cách gõ và 'TAB'ing trong minibuffer cho đến khi một kết quả duy nhất thu được, với bộ đệm hoàn thành chỉ hoạt động như một tham chiếu trực quan. – phils

8

Bạn có thể sử dụng Mv (ghi here) mà chuyển sang bộ đệm hoàn thành và đưa con trỏ về việc hoàn thành đầu tiên:

Gõ Mv, trong khi ở minibuffer, chọn cửa sổ hiển thị hoàn danh sách (chuyển đổi thành hoàn thành). Điều này mở đường cho việc sử dụng các lệnh bên dưới. <PageUp> hoặc <prior> cũng vậy. Bạn cũng có thể chọn cửa sổ theo các cách khác ...

EDIT: Dường như dựa trên chỉnh sửa của bạn về câu hỏi gốc mà bạn đang yêu cầu . Có một chức năng switch-to-completions đó chọn danh sách hoàn tất - bạn có thể xem xét ràng buộc chức năng đó cho một phím lựa chọn của bạn, ví dụ:

(define-key global-map (kbd "C-x t") 'switch-to-completions) 

Ví dụ, chẳng hạn một ràng buộc cho phép tôi để chuyển sang hoàn tất từ ​​"lệnh Shell: "được gọi bởi M-! và đặt con trỏ vào lần hoàn thành đầu tiên có thể.

+0

Rất nhiều, điều này dường như không có tác dụng đối với tôi. (Tôi đang sử dụng Emacs v24.2.1 btw.) Khi tôi nhấn 'M-v' trong minibuffer nó chỉ nói' Bắt đầu từ bộ đệm' và không chọn danh sách hoàn thành. – bug

+0

Tỷ lệ cược. Điều gì về cách nhấn 'PageUp' - điều đó cũng hoạt động tốt (trên máy Mac của tôi đó là' fn-Up'). Bạn có thể thử khởi động lại Emacs mà không cần đọc tệp khởi tạo của bạn, tức là 'emacs -q' –

+0

Bạn có thể có' M-v' bị ràng buộc với một số hàm khác. –