Làm cách nào để chuyển đổi bộ đệm nhanh chóng?


68

Trong vanilla Emacs, tôi phải làm C-x bvà sau đó gõ thủ công tên bộ đệm để chuyển đổi. Nếu tôi quên tên của bộ đệm, tôi phải nhấn TABđể liệt kê các hoàn thành có thể. Có bất cứ điều gì tôi có thể làm để làm cho quá trình này nhanh hơn?


10
Điều này sẽ được đánh dấu Wiki cộng đồng. Nhưng Emacs đã có một wiki khổng lồ. Chẳng hạn, kết quả Google hàng đầu của tôi là trang này trên Bộ đệm chuyển đổi . Đối với tôi, các câu hỏi theo kiểu CW, đặc biệt là không phù hợp với emacs.SE.
Purple_arrows

1
Tôi thích sử dụng C-x C-<left/right>để chuyển đổi bộ đệm một cách nhanh chóng. Khi cần chuyển sang bộ đệm "xa hơn", tôi sử dụng IBuffer.
kuanyui

Tôi sử dụng 'Cx x' để chuyển đổi bộ đệm (có helm và với mũ được ánh xạ để điều khiển). Tôi chưa bao giờ cảm thấy thoải mái khi gõ 'Cx b'.
wdkrnls


1
Sử dụng một trong những giải pháp trong câu trả lời và không sử dụng Cx b. 3 phím là quá nhiều cho một hoạt động thường xuyên như vậy. Cá nhân tôi sử dụng một phím duy nhất, khóa cửa sổ bên phải mà tôi không sử dụng.
Tom

Câu trả lời:


50

Có chế độ ido sẽ giúp.

BIÊN TẬP:

Đặt cái này trong tệp init của bạn, để kích hoạt chế độ ido theo mặc định:

(ido-mode 1)

Bây giờ, C-x bsẽ cho bạn thấy một danh sách các ứng cử viên.

Đặt cái này trong tệp init của bạn, nếu bạn thích các mục được hiển thị theo chiều dọc:

(setq ido-separator "\n")

Phép lịch sự của ergoemacs

Tôi cũng đề nghị bài viết này nói về việc chuyển sang bộ đệm trước / tiếp theo.


2
Có lẽ chúng ta nên cố gắng lấy hầu hết các thông tin quan trọng trong bài đăng đó như một câu trả lời cho câu hỏi này. Bằng cách đó, người dùng trong tương lai sẽ không phải theo đuổi các liên kết đến các trang web có thể đã chết.
nixeagle

@nixeagle Tôi đã thực hiện một số chỉnh sửa, tôi hy vọng thông tin quan trọng nhất có mặt.
Nsukami _

Tôi đã nâng cấp của bạn vì nó đã hoàn tất, nhưng tôi sẽ đợi vài ngày trước khi tôi chấp nhận trong trường hợp những người khác đến với câu trả lời khác và tốt hơn. Cảm ơn!
nixeagle

@nixeagle không có gì!
Nsukami _

1
@nixeagle bạn đã tìm thấy câu trả lời tốt hơn chưa?
Người dùng Emacs

43

Gần đây tôi đã bắt đầu sử dụng C-x <left>C-x <right>. Cả hai đều là các ràng buộc Emacs tiêu chuẩn, không có gì để cấu hình. Còn lại sẽ đưa bạn trở lại bộ đệm trước đó (ban đầu giống như C-x b RET) nhưng thực hiện lại sẽ đưa bạn đến bộ đệm được truy cập gần đây thứ 3. Nếu bạn bật qua lại giữa 3 hoặc 4 bộ đệm thì tôi thấy dễ dàng hơn nhiều so với việc cố nhớ tên bộ đệm.

Ngoài ra tôi chỉ phát hiện ra C-x C-<left>C-x C-<right>bị ràng buộc với các chức năng tương tự để bạn có thể giữ phím điều khiển và luân phiên giữa x và mũi tên để lướt qua bộ đệm. Khá đẹp!


4
Tôi đồng ý với bạn! Tôi là người mới sử dụng emacs và không muốn bị quá tải với các gói bổ sung và cấu hình cao hơn. Giải pháp này hiệu quả với tôi! : D
ankush981

Cx C- <left> và Cx C- <right> để giành chiến thắng! Tôi đã từng có bộ đệm trước / tiếp theo bị ràng buộc với CS- <left> / <right>. Nhưng bằng cách nào đó tôi thấy việc gõ Cx C-left thậm chí còn dễ dàng hơn bằng cách sử dụng hai phím meta. CS lúng túng bấm.
Didier A.

Đẹp! Tôi đã học được những ràng buộc này một tuần trước, nghĩ rằng chúng tuyệt vời như thế nào, và sau đó quên chúng là gì. Không thể tìm thấy chúng trên mạng trong một tuần, cho đến bây giờ. Cảm ơn!
Kirill Yunussov

41

Bạn có thể sử dụng Helm .

Trong thiết lập của tôi, tôi đã chuyển C-x bcho M-l. Điều này liên minh với helm-buffers-list, làm cho quá trình khá nhanh, ít nhất là đối với tôi.


Đây về cơ bản là câu trả lời tốt nhất bây giờ. Chắc chắn, bạn vẫn có thể sử dụng idohoặc, iswitchbhoặc những iciclesthứ như vậy, nhưng về cơ bản chúng đã bị lỗi thời bởi Helm. Vâng, ace-jump-bufferrất tuyệt, nhưng nó không nhanh như Helm, bởi vì trước khi bạn biết phím nào để nhấn, bạn phải tìm bộ đệm trong danh sách. Helm cho phép bạn thu hẹp danh sách với một vài tổ hợp phím mà bạn đã biết (như tên của bộ đệm). Tôi sử dụng C-TABđể chuyển đổi bộ đệm, tải các tệp gần đây, dấu trang, v.v. Không có gì nhanh hơn.
blujay

4
+1 cho helm. Nhưng tôi thích sử dụng helm-mini, mà còn cho thấy bạn Recentfđến helm-buffers-list.
joon

1
Ngoài ra còn có cây thường xuân với ivy-switch-buffer.
Oleksii Filonenko

Tôi thấy cây thường xuân nhanh hơn nhiều so với helm, vì vậy tôi khuyên bạn nên dùng nó hơn helm.
Didier A.

10

Chỉ cần thêm các chỉnh sửa mà tôi sử dụng với Ido đã được đề cập :

(require 'ido)
(require 'ido-hacks)
(require 'flx-ido)
(require 'ido-vertical-mode)

(ido-mode 1)
(flx-ido-mode 1)
(ido-hacks-mode 1)
(ido-everywhere 1)
(ido-vertical-mode 1)

(setq ido-enable-flex-matching t
      ido-use-filename-at-point 'guess
      ido-vertical-define-keys 'C-n-C-p-up-down-left-right))

Tôi cũng đang sử dụng ace-windowđể chuyển đổi giữa các bộ đệm cùng với ace-jump-modeđể nhảy giữa các cửa sổ có thể nhìn thấy. Đi kèm với một số làm quen nhưng đáng để thử.

Tôi đã kết hợp nó với key-chord-modevà nhấn sođể nhảy nhanh:

(key-chord-define-global "so" 'ace-window)

Tất cả các gói được đề cập ở trên đều có sẵn thông qua trình quản lý gói từ Melpa.


Tôi đã chỉnh sửa câu trả lời của bạn để thay thế use-packagebằng requiređể tránh nhầm lẫn. Trong ví dụ đã cho, không có nhu cầu cụ thể nào cho người dùng để cài đặt gói bổ sung để thực hiện giải pháp đó.
Kaushal Modi

1
Tôi khuyên bạn không nên sử dụng kết hợp chữ cái xảy ra thường xuyên bằng tiếng Anh (giả sử rằng bạn gõ chủ yếu bằng tiếng Anh bằng emacs) làm hợp âm phím. Theo tôi, "so" rất dễ kích hoạt một cách vô ý khi bạn đang gõ những thứ như "so", "some", "Personal", v.v ... rất nhanh.
Kaushal Modi

10

Như @kuanyui nói trong một bình luận, next-bufferprevious-bufferrất nhanh chóng, nếu bạn chỉ có một vài bộ đệm để xoay vòng. (Đối với nhiều hơn một chút và để biết thêm các tính năng chọn bộ đệm, tôi sử dụng icicle-buffer.)

Tuy nhiên, theo mặc định next-bufferprevious-buffernằm trên khóa tiền tố ,C-x .

Điều đó có nghĩa là chúng không thể lặp lại : bạn không thể đánh C-x <right> <right> <right>.... Thay vào đó, bạn phải liên kết các lệnh này với các khóa lặp lại khác nhau hoặc bạn phải sử dụng C-x <right> C-x <right> C-x <right>..., điều này không nhanh lắm.

Đối với các phiên bản có thể lặp lại của các lệnh này, hãy tải thư viện misc-cmds.elvà ánh xạ lại vanilla, các phiên bản không thể lặp lại thành các phiên bản lặp lại được xác định ở đó:

(global-set-key [remap previous-buffer] 'previous-buffer-repeat)
(global-set-key [remap next-buffer]     'next-buffer-repeat)

(Tương tự, trong cùng một thư viện, bạn sẽ tìm thấy một phiên bản undocó thể lặp lại ngay cả khi trên khóa tiền tố : undo-repeat.)


BTW, bạn có thể thực hiện khá nhiều bất kỳ lệnh nào có thể lặp lại (ngay cả trên khóa tiền tố), bằng cách sử dụng hàm repeat-command(từ misc-cmds.el). Đây là tất cả những gì cần thiết để xác định phiên bản lặp lại của next-buffer:

(defun previous-buffer-repeat ()
  "Switch to the previous buffer in the selected window.
You can repeat this by hitting the last key again..."
  (interactive)
  (require 'repeat nil t) ; Library `repeat.el' is in Emacs 22.1 and later
  (repeat-command 'next-buffer))

3
... hoặc chỉ đơn giản là liên kết bộ đệm tiếp theo / trước với C-,C-.để có được độ lặp lại, và trong khi bạn vẫn sử dụng bộ đệm đó, hãy đặt C-x.C-x,thành other-window(lambda()(interactive)(other-window -1)). Cửa sổ đi xe đạp có thể cần lặp lại ít hơn, và bạn có được trong một phút, mà không có gói bổ sung.
Andreas Spindler

2
@AndreasSpindler: Tất nhiên bạn có thể đặt bất kỳ lệnh nào trên một khóa có thể lặp lại và do đó làm cho nó có thể lặp lại. Đó không phải là vấn đề. Các phím có thể lặp lại rất ít và các phím không liên kết ngày càng hiếm hơn. Đây là về cách làm cho một lệnh lặp lại khi nó nằm trên khóa tiền tố .
vẽ

1
Tôi đã hiểu bài đăng của bạn, nhưng ít nhiều đề cập đến chủ đề của chủ đề này "Làm thế nào để tôi chuyển đổi bộ đệm một cách nhanh chóng?". Đối với mục đích này, tôi tìm thấy mẹo của bạn để sử dụng next-bufferprevious-buffergiải pháp tốt nhất, độc lập với bất kỳ ràng buộc khóa cụ thể nào. Do đó bình luận của tôi.
Andreas Spindler

@AndreasSpindler: Hiểu rồi; cám ơn.
vẽ

Điều này thật tuyệt, tôi nhiều lần cần các lệnh lặp lại ngay cả khi chúng có các khóa tiền tố. Điều đó nói rằng, tôi đã tìm thấy bộ đệm trước / tiếp theo mặc định cho Cx C-left và Cx C-right cho phép bạn cũ C, và chỉ cần lặp lại nhấn x-left và x-right. Mà không quá tệ như mặc định.
Didier A.

9

Tôi ngạc nhiên không ai đề cập đến iswitchb. Nó có thể không mạnh bằng ido, nhưng từ lâu trước khi ido-modera đời iswitchb-modeđã là tiêu chuẩn cho emacs, và nó vẫn còn hữu dụng cho đến ngày nay. Để thử nó chỉ cần đặt

(iswitchb-mode 1)

vào .emacs của bạn hoặc kích hoạt thông qua M-x iswitchb-mode.


4
iswitchbđã lỗi thời kể từ Emacs 24.4. Tất cả các chức năng của nó có sẵn thông qua idobây giờ.
Tyler

4
@Tyler Tôi thích giao diện mặc định của iswitchb hơn, vì nó nhiều màu sắc hơn, đẹp hơn. Có thể ido có thể được cấu hình để trông giống nhau, nhưng không có điểm nào (ít nhất là đối với tôi) trong khi iswitchb có sẵn.
Tom

8

Sử dụng helm-buffer-list hoặc helm-mini để chọn trực quan bộ đệm và kết hợp mờ. Nó có thể làm rất nhiều thứ ngoài việc chuyển đổi bộ đệm. Bạn sẽ thấy bản demo trong liên kết.


6

Những người khác đã thảo luận về các gói hữu ích để làm cho cuộc sống dễ dàng hơn liên quan đến chuyển đổi bộ đệm / cửa sổ / khung. (Cá nhân tôi sử dụng helmđó là hiện tượng.) Tôi muốn thảo luận về những thay đổi đơn giản hơn có thể mang lại trải nghiệm Emacs thú vị hơn.

Đối với tôi, giải pháp cho tai ương bộ đệm / khung của tôi (vì tôi nghĩ C-x olà tồi tệ nhất) không phải là một gói; nó chỉ đơn giản là:

  • ánh xạ C-;tới other-window(đạp xe qua cửa sổ)
  • ánh xạ C-'tới other-frame(đạp xe qua khung). Tôi thực sự bắt đầu sử dụng khung nhiều hơn sau khi thêm phím tắt này).
  • ánh xạ các ràng buộc phím đơn dễ dàng khác đến các chức năng tùy chỉnh đơn giản để thao tác bộ đệm trong khung hiển thị. Các ví dụ bao gồm: ném bộ đệm sang cửa sổ khác (trong thiết lập 2 cửa sổ), chuyển đổi giữa bộ đệm hiện tại và bộ đệm cuối cùng trong một cửa sổ nhất định, chôn bộ đệm khác (cái này rất tốt để thay thế helpcửa sổ bật lên (khi đọc các trang man, apropos, v.v.) với bất kỳ cửa sổ nào đã được nhìn thấy trước đó).

Tôi cũng nghĩ rằng tôi sẽ chia sẻ một vài suy nghĩ về các ràng buộc chính mà những người mới có thể thấy hữu ích. (Xin lỗi nếu đây là địa điểm sai.) Tôi không có đề xuất cụ thể nào, nhưng, thay vào đó, một "triết lý" cho phép tôi duy trì một bộ tổ hợp phím hiệu quả cho chính mình.

  1. Các lệnh được sử dụng không thường xuyên không xứng đáng với các ràng buộc khóa dễ dàng.

    • Tải về keyfreq.elvà xem những gì bạn thực sự sử dụng rất nhiều. Tôi sử dụng một phương pháp sinh tồn nhất để quyết định những lệnh nào được trao cho bất động sản có giá trị nhất trên bàn phím của tôi.
    • Đừng sợ để thoát khỏi các phím bấm mặc định của Emacs, một số trong số đó là vô lý. C-\là một lối tắt tuyệt vời (vì những lý do được thảo luận trong # 2) ... và sẽ là tội ác nếu để nó được ánh xạ tới lệnh mặc định của nó : change-input-method. (Có thể một số bạn sử dụng nó rất nhiều, tôi chắc chắn là không.)
  2. Các yếu tố sau đây xác định mức độ dễ dàng và tốc độ của phím tắt (bắt đầu bằng mức quan trọng nhất):

    • Liên tục nhấn phím modifier (bất cứ điều gì có thể được, Ctrl, Meta, vv). Ví dụ, cách đánh của tôi nhanh C-c C-l C-phơn là đánh C-x o. Cá nhân tôi thấy rất bất tiện khi phải nhấc Ctrlchìa khóa ra giữa các lần gõ phím liên tiếp của một chuỗi khóa đã cho; thật dễ dàng hơn nhiều khi chỉ cần nhấn nút điều chỉnh (trong trường hợp này Ctrl). (Ví dụ cụ thể này có thể bị ảnh hưởng bởi thực tế là tôi đã ánh xạ lại Ctrlkhóa của tôi và Caps-Lockkhóa của tôi .)
    • Sự thay thế trong bạn của bạn . Nó là cách nhanh hơn để tôi đánh C-c C-l C-phơn là đánh C-p C-' C-;. .
    • Mức độ khởi hành từ vị trí tay tiêu chuẩn. Điều này không áp dụng cho những người đam mê săn bắn ngoài kia. Nhưng đối với phần còn lại của chúng tôi, các phím tắt được sử dụng thường xuyên nhất của chúng tôi sẽ cho phép chúng tôi quay lại vị trí gõ cảm ứng tiêu chuẩn một cách nhanh chóng và dễ dàng.

Chỉ cần một vài suy nghĩ mà tôi nghĩ có thể hữu ích cho người mới. Tôi có thể thêm một số sau.


3

Tôi sử dụng windmove.elbs.elđể chuyển đổi bộ đệm một cách nhanh chóng. Cả hai chế độ được bao gồm với Emacs.

  • windmove.el- chuyển sang một cửa sổ (bộ đệm hiện đang được hiển thị) theo một hướng cụ thể, ví dụ: trái, phải, lên, xuống.

  • bs.el- Tôi sử dụng bs-cycle-nextbs-cycle-previousđể chuyển sang bộ đệm tiếp theo hiện không được hiển thị trong cửa sổ.

Bạn có thể thiết lập windmove với (windmove-default-keybindings)đó sẽ ràng buộc các lệnh thích hợp để Shift-Left Arrow, Shift-Right Arrowvv

Để thiết lập bs.el, một cái gì đó như thế này sẽ hoạt động:

 (global-set-key [(f9)]   'bs-cycle-previous)
 (global-set-key [(f10)]  'bs-cycle-next)

Bộ đệm KHÔNG phải là Cửa sổ (Khung)! Đừng làm họ bối rối!
kuanyui

2
Và một cửa sổ không phải là một khung. Bất kể, windmove.elnằm trong trang "Chuyển đổi bộ đệm" của EmacsWiki, cộng với bs.elhoạt động trên bộ đệm, không phải cửa sổ.
Joe

Tôi đã làm rõ những gì cối xay gió làm.
Joe

3

Cách nhanh nhất để chuyển đổi bộ đệm mà tôi biết là với ace-jump-buffer. Một hành trình phím sẽ mở menu bộ đệm và sau đó chọn chữ bên cạnh bộ đệm bạn muốn ace-jump-line-mode. Điều này hoạt động tốt nhất cho 26 hoặc gần như bộ đệm gần đây nhất. Để chuyển sang bộ đệm xa hơn trong lịch sử sử dụng của bạn, ido-switch-bufferluôn luôn là một lựa chọn tốt.


3

Tôi thích điều hướng tab kiểu trình duyệt. Tôi đã ràng buộc Ctrl + Tab và Ctrl + Shift + Tab tương ứng với các bộ đệm tiếp theo và trước đó:

(global-set-key [C-tab] 'next-buffer)
(global-set-key [C-S-tab] 'previous-buffer)

2

Nói rộng ra, có 2 cách để chuyển đổi bộ đệm và hầu hết các giải pháp sẽ rơi vào một trong những cách này.

  1. Sử dụng bộ đệm mini

Đây là những gì C-x blàm theo mặc định. Ido cung cấp cho bạn hoàn thành tự động tốt đẹp để bạn không cần phải TAB TAB TAB rất nhiều. Các dự án như helm, projectile, vv giúp bạn dễ dàng hơn bằng cách cung cấp cho bạn khả năng làm việc với các tệp trong một dự án, v.v. và cùng với ido, chúng có thể khá hữu ích.

  1. Toàn bộ bộ đệm với tất cả các mục được liệt kê.

Điều này rất hữu ích khi bạn có rất nhiều bộ đệm và bạn muốn có một danh sách tất cả. Bạn có thể đi lên và xuống bộ đệm, và nhấn enter để truy cập một tệp cụ thể. Ibuffer là khá tốt cho điều đó.

Tôi sử dụng cả hai và đây là cách bạn có thể thiết lập nó.

 (global-set-key (kbd "C-x C-b") 'ido-switch-buffer)
 (global-set-key (kbd "C-x b") 'ibuffer)`

Đối với Helm thứ hai cũng là một lựa chọn tốt
Tom

2

Ngoài ido, tôi có thiết lập sau.

  1. Trong trường hợp chế độ ác, sử dụng các ràng buộc chính sau để chuyển đổi bộ đệm

    (define-key evil-normal-state-map (kbd "C-j") 'next-buffer)
    (define-key evil-normal-state-map (kbd "C-k") 'previous-buffer)
    (define-key evil-normal-state-map (kbd "C-S-h") 'evil-window-left)
    (define-key evil-normal-state-map (kbd "C-S-j") 'evil-window-down)
    (define-key evil-normal-state-map (kbd "C-S-k") 'evil-window-up)
    (define-key evil-normal-state-map (kbd "C-S-l") 'evil-window-right)
    
  2. Đặt tên bộ đệm làm tiêu đề của cửa sổ. Điều này sẽ giúp bạn khi điều hướng với các phím trên

    (setq frame-title-format "%b")
    
  3. Nếu bạn đang sử dụng chế độ ác, bạn có thể thử evil-leader. Bind thường xuyên sử dụng chìa khóa để lãnh đạo. ví dụ: Bạn có thể liên kết C-x bvới <leader>-b.

    (global-evil-leader-mode)
    (evil-leader/set-leader ",")
    (evil-leader/set-key
     "b" 'switch-to-buffer)
    
  4. Bind chế độ chuyển hướng đến C-<f8>. Bây giờ khi bạn muốn mở tệp trong thư mục, nhấn C-<f8>, điều hướng đến tên tệp và nhấn athay vì RET. Vì vậy, bộ đệm dired sẽ bị giết ngay lập tức.

    (global-set-key (kbd "C-<f8>")
            (lambda ()
              (interactive)
              (dired default-directory)))
    (put 'dired-find-alternate-file 'disabled nil)
    
  5. Sử dụng recentfchế độ để điều hướng các tập tin gần đây.C-x C-r

  6. Một điểm quan trọng cuối cùng là - sử dụng bàn phím cơ tiện dụng. Vì vậy, bạn có thể nhấn phím 'ctrl' một cách dễ dàng và nhanh chóng bằng cổ tay thay vì làm tổn thương hồng hào.

Hy vọng điều này có thể giúp một ai đó.


1

Như bạn có thể thấy từ các câu trả lời khác, có nhiều cách để hợp lý hóa nhiệm vụ cụ thể này. Cá nhân tôi sử dụng Lusty Emacs làm thiết bị chuyển đổi bộ đệm của mình vì nó xử lý hoàn thành mờ khá độc đáo. Điều này giảm thiểu số lượng các phím cần thiết để chọn bộ đệm mới, ví dụ tôi chỉ cần gõ oxr để chuyển sang ox-lộ.el hoặc thậm chí chỉ o vòng thứ hai vì nó cũng theo dõi lịch sử của các công tắc.


0

Nếu bạn muốn tiếp tục lướt qua bộ đệm của mình, hãy thêm nó vào tệp init của bạn:

(bind-key* "M-l" 'next-buffer)
(bind-key* "M-k" 'previous-buffer)

Bạn cần gói ràng buộc và bạn có thể thay đổi các ràng buộc khóa theo mong muốn của mình nhưng tôi thấy các khóa này là thoải mái nhất. Trước khi thêm đoạn mã này, bạn cần phải yêu cầu khóa liên kết bằng cách,

(require 'bind-key)

0

Tôi sử dụng C-Tab và CS-Tab như các ứng dụng chung.

(defun change-buffer-until-normal (change-fn)
  (let (current (buffer-name))
    (funcall change-fn)
    (while (and (string-prefix-p "*" (buffer-name))
        (not (eq current (buffer-name))))
      (funcall change-fn))))

(defun my-next-buffer ()
  (interactive)
  (change-buffer-until-normal 'next-buffer))

(defun my-prev-buffer ()
  (interactive)
  (change-buffer-until-normal 'previous-buffer))

(global-set-key [C-tab] 'my-next-buffer)
(global-set-key [C-S-iso-lefttab] 'my-prev-buffer)

0

Đây không phải là một giải pháp rất thanh lịch (vì nó sử dụng macro thay vì các hàm) và nó không trả lời làm thế nào để nhảy nhanh đến bất kỳ bộ đệm nào , mà chỉ làm thế nào để chuyển sang bộ đệm được sử dụng gần đây. Nhưng nó hoạt động rất tốt đối với tôi:

Tôi có một loạt các macro sử dụng ido-switch-bufferđể nhảy đến bộ đệm trước đó, bộ đệm trước đó, bộ đệm trước đó, v.v. Và tôi đã ràng buộc các macro đó vào các ràng buộc chính mà tôi thấy thuận tiện.

Để nhảy đến bộ đệm cuối cùng:

(fset 'my-goto-previous-buffer
      [?\C-x ?b return])

Để nhảy đến vùng đệm áp chót:

(fset 'my-goto-previous-buffer
      [?\C-x ?b ?\C-n return])

Để nhảy đến vùng đệm chống cận:

(fset 'my-goto-previous-buffer
      [?\C-x ?b ?\C-n ?\C-n return])

V.v. (bạn có thể quảng cáo bao nhiêu ?\C-ntùy thích để đi ngược lại lịch sử của các bộ đệm đã truy cập như bạn muốn).

Có một hàm tích hợp để chuyển sang bộ đệm trước đó, nhưng lợi thế của việc sử dụng macro ido-switch-bufferlà bạn có thể tùy chỉnh biến ido-ignore-buffersđể loại bỏ các bộ đệm đặc biệt như *Messages*hoặc *scratch*bất kỳ bộ đệm không mong muốn nào khác khỏi danh sách. Bằng cách đó, bộ đệm duy nhất bạn nhảy đến là những người bạn thực sự quan tâm đến việc nhảy tới.


-1

Trên máy ảo của tôi, Cx ALT-RIGHT / LEFT quá chậm. Tôi phải đợi Cx đăng ký trên thanh trạng thái trước khi tôi có thể làm bất cứ điều gì khác. cộng với nó chỉ là quá nhiều chìa khóa. Vì vậy, tôi đã ánh xạ C-TAB và CM-TAB sang bộ đệm tiếp theo và trước đó như những gì tôi làm trong hầu hết các chương trình windows. Thật dễ dàng để thực hiện từ bên trong emacs: M-xđưa bạn đến thanh trạng thái. Sau đó, gõ global-set-keynó sẽ nhắc bạn cho chuỗi khóa bạn muốn liên kết ( C-TAB) và sau đó cho lệnh bạn muốn liên kết nó với ( next-buffer). Đó là nó!


1
Chào mừng bạn Các câu trả lời khác dường như đã bao gồm ánh xạ các lệnh này sang các phím khác.
Andrew Swann

Không chính xác - mọi người đang nói về cách thay đổi tệp cấu hình .emacs của bạn. Tôi đã mô tả cách thực hiện từ trong phiên emacs
SN
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.