2009-08-05 15 views
42

W emulatorach GNU, za każdym razem, gdy trafiam Ctrl-x Ctrl-b, aby zobaczyć wszystkie moje bufory, okno jest podzielone, aby pokazać listę buforów lub jeśli moje okno jest już podzielone 2 (na przykład, będę miał powłokę uruchomioną w dolnym oknie), lista buforów pojawi się w drugim oknie.zachowanie buforów listy emacs

Moje pożądane zachowanie jest na liście bufora do stawienia się w moim aktywnym oknie tak, że mogę wybrać bufor chcę i nadal pracuje w tym samym oknie, zamiast Ctrl-X Ctrl-o do inny bufor, wybranie bufora (z wprowadź) i edytowanie tego bufora w drugim oknie ... Mam google'ować, ale nie wydaje się to powszechnym pragnieniem? Zastanawiam się, czy ktoś ma rozwiązanie elispy (lub inne)?

Odpowiedz

54

Może chcesz ponownie powiązać Cx Cb powołać buffer-menu zamiast list-buffers:

(global-set-key "\C-x\C-b" 'buffer-menu) 
+2

Chcę wiedzieć, czy jest jakiś sposób, aby użyć krótkiego klawisza, takiego jak 1, 2, ... lub a, b, c ... aby szybciej otworzyć jeden bufor, wiem, że mógłby to zrobić bufor Ac-Jump , ale jego lista buforów jest zbyt prosta, bez dodatkowych informacji, takich jak tryb, wielkość kolumny w menu bufora. Jeśli rozwiążesz ten problem, będzie to docenione. @ Zimbu668 – CodyChan

13

Niezupełnie rozwiązanie, ale ido-mode zapewnia inny i skuteczny sposób interakcji z buforami. C-x b wyświetli listę wszystkich otwartych buforów, a wybrana zostanie otwarta w bieżącym oknie.

+1

Zastanawiam się, dlaczego zostałeś ocenzurowany ... zawsze dobrze wiedzieć, że mam opcje! – hatmatrix

+0

Jeśli odpisujesz, dziękuję za sugestię. Jestem teraz fanem ido. – hatmatrix

0

Inne rozwiązanie, o które nie pytano: nie wybieraj żądanego bufora za pomocą myszy, raczej kończ nazwę i wpisz jego nazwę (użyj funkcji wyprowadzania kart w celu zmniejszenia liczby naciśnięć klawiszy i zwiększ dokładność), a następnie naciśnij przycisk powrotu. Lista buforów zniknie, a nowy plik zostanie otwarty w poprzednio aktywnym oknie.

+0

Dzięki - ale głównie pracuję w terminalu, więc nie mam tam myszy ... ale czasami wprawia mnie w zakłopotanie, czy niektóre bufory zaczynają się od * czy nie, ale masz rację, uzupełnienia tabulacji nawet mi pomogą. – hatmatrix

+0

To nie usuwa dla mnie okna listy buforów? – sandos

1

Nie wiem gdzie mam to ale:

;;; Faster buffer switching 
(global-set-key [(C tab)] 'buffer-menu) 

To sprawia, Ctrl-Tab wyświetlić wszystkie bufory w bieżącym oknie. Następnie możesz przejść do bufora i nacisnąć Enter, aby go odwiedzić.

+0

Dzięki - Mam już zarezerwowany Ctrl-Tab :). Ale menu bufora jest kluczowe. – hatmatrix

3

Jeśli lubisz oryginalne listy bufora (w przeciwieństwie do 'buffer-menu rozwiązania zaproponowanego przez innych), można użyć tego :

(global-set-key (kbd "C-x C-b") 'my-list-buffers) 
(defun my-list-buffers (&optional files-only) 
    "Display a list of names of existing buffers. 
The list is displayed in a buffer named `*Buffer List*'. 
Note that buffers with names starting with spaces are omitted. 
Non-null optional arg FILES-ONLY means mention only file buffers. 

For more information, see the function `buffer-menu'." 
    (interactive "P") 
    (switch-to-buffer (list-buffers-noselect files-only))) 

Która funkcja jest taka sama jak poprzednio, tylko w bieżącym oknie.

+0

Używam wariant teraz z przełącznikiem do bufora-inne okno i specjalne zachowanie, jeśli jestem już na liście bufora. Dzięki. – mkiever

11

Po prostu dostosuj zmienną same-window-regexps. display-buffer wyświetli dowolny bufor, którego nazwa pasuje do regexp tam w aktualnie wybranym oknie.

(Będziemy chcieli, aby dodać "[*]Buffer List").

+0

Jest to najlepsza odpowiedź, ponieważ zajmuje się prawdziwym problemem (modyfikuje zachowanie bufora ekranu), w przeciwieństwie do dostarczania obejść. – xyzzyz

2

Gorąco polecam bs.el od http://www.geekware.de/software/emacs/ zainstalować go i:

(require 'bs) 
(add-hook 'bs-mode-hook 'turn-on-font-lock) 
(global-set-key "\C-x\C-b" 'bs-show) 

Zarządza bufory i konfiguracji okna w odpowiedni sposób, tak wszystko wymaga minimalnej liczby naciśnięć klawiszy.

+0

Dzięki - "właściwa droga" zależy od tego, czego oczekujesz, prawda? – hatmatrix

4

Spróbuj dodać

(ido-mode 1) 

do .emacs, i cieszyć się wynik :)

3

O dziwo, nie jest odpowiedzią tutaj o ibuffer.

Polecam to jako standardowy zmian dla większości użytkowników Emacs:

(global-set-key (kbd "C-x C-b") 'ibuffer) 

ibuffer jest bardzo zaawansowanym zamiennikiem dla notowań domyślnym buforem, a nie tylko oferuje dokładnie żądane zachowanie, ale zapewnia bogactwo innych funkcji.

Wymieniłem kilka podstaw filtrowania i grupowania bufora w Emacs: help me understand file/buffer management, ale koniecznie przeczytaj dokumentację, aby poznać szczegóły.

Powiązane problemy