Làm thế nào để quay lại dấu nhắc mini hoạt động trong emacs mà không cần chuột


36

Trong emacs, đôi khi tôi sẽ ở giữa tìm tệp hoặc chuyển đổi bộ đệm hoặc làm một cái gì đó trong xe buýt nhỏ, và tôi sẽ nhấp vào một nơi khác vì một số lý do. Khi tôi quay trở lại, cách duy nhất để làm cho dấu nhắc của xe buýt nhỏ hoạt động trở lại là nhấp vào bên trong xe buýt nhỏ, điều này gây khó chịu vì đây là một khu vực mỏng. Có cách nào để quay trở lại dấu nhắc mini hoạt động mà không cần sử dụng chuột không?

Câu trả lời:


25

Điều này sẽ làm những gì bạn muốn. Ràng buộc với chìa khóa của sự lựa chọn của bạn:

(defun switch-to-minibuffer-window ()
  "switch to minibuffer window (if active)"
  (interactive)
  (when (active-minibuffer-window)
    (select-frame-set-input-focus (window-frame (active-minibuffer-window)))
    (select-window (active-minibuffer-window))))
(global-set-key (kbd "<f7>") 'switch-to-minibuffer-window)

2
Nếu bạn có nhiều khung thì bạn cần thêm (select-frame-set-input-focus (window-frame (active-minibuffer-window)))trước select-window.
dshepherd

@dshepherd Tôi có thể xác nhận rằng sau khi chèn dòng Elisp của bạn, chức năng được làm giàu cũng hoạt động tốt chỉ với một khung hình. Cảm ơn.
dimitarvp

@dshepherd Cảm ơn, đã cập nhật mã thích hợp.
Trey Jackson

23
C-x o 

Lặp lại khi cần thiết.

Cx o chạy lệnh other-window, là hàm tích hợp tương tác trong 'mã nguồn C'.

Nếu bạn không muốn quay vòng qua các cửa sổ, bạn có thể thêm một hàm trong tệp init của mình và liên kết nó với một khóa. Một cái gì đó như thế này có thể hoạt động:

(defun select-minibuffer ()
 "Make the active minibuffer the selected window."
 (interactive)
 (when (active-minibuffer-window)
   (select-window (active-minibuffer-window))))

1
Tại sao bạn muốn bao gồm RETnhư vậy? Nó sẽ tự động chấp nhận bất cứ thứ gì có trong xe buýt nhỏ (giả sử một người C-x ochuyển sang xe buýt nhỏ). Nói chung, người ta có thể cần sử dụng C-x onhiều lần nếu có (theo cách nói của Emacs) nhiều cửa sổ mở trong khung (theo thuật ngữ GUI thông thường: nhiều cửa sổ trong cửa sổ).
Chris Johnsen

Bạn đúng. Lỗi của tôi.
Richard Hoskins

Có cách nào để trực tiếp đến xe buýt nhỏ mà không có khả năng đạp xe qua tất cả các cửa sổ không? Tôi có nên viết một vòng lặp other-windowcho đến khi cửa sổ hiện tại là xe buýt nhỏ không?
Ryan C. Thompson

6

Một tùy chọn khác đang sử dụng switch-window

Tôi thấy nó là một gói thực sự hữu ích: nó cho phép bạn nhanh chóng di chuyển đến bất kỳ cửa sổ Emacs nào, và tôi sử dụng rất nhiều cửa sổ đang mở trong Emacs).

Nhưng tôi chỉ tìm ra nó cũng cho phép bạn di chuyển đến xe buýt nhỏ, nếu nó đang hoạt động:

nhập mô tả hình ảnh ở đây

Hy vọng nó giúp.


1
Một gói liên quan swap-bufferssử dụng cùng một phương thức để hoán đổi bộ đệm hiện tại với gói đó trong một cửa sổ khác.
pyrocrasty

0
;; faster switching between windows in the same frame
(windmove-default-keybindings)

Thêm hai dòng mã trên vào .emacs.el sẽ cho phép di chuyển đơn giản và hiệu quả, không chỉ cho xe buýt nhỏ, mà còn điều hướng tất cả các cửa sổ khác trên khung Emacs bằng Shift-Arrow .

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.