W waniliowym Emacsie muszę to zrobić, C-x b
a następnie ręcznie wpisać nazwę bufora, aby przełączyć. Jeśli zapomnę nazwę bufora, muszę nacisnąć przycisk, TAB
aby wyświetlić listę możliwych uzupełnień. Czy mogę coś zrobić, aby ten proces był szybszy?
key-bindings
buffers
cycling
Nixeagle
źródło
źródło
C-x C-<left/right>
do szybkiego przełączania buforów. Kiedy potrzebuję przełączyć na „dalszy” bufor, używamIBuffer
.Odpowiedzi:
Jest tryb ido , który powinien pomóc.
EDYTOWAĆ:
umieść to w pliku init, aby domyślnie aktywować tryb ido:
(ido-mode 1)
Teraz
C-x b
pokaże ci listę kandydatów.Umieść to w pliku init, jeśli wolisz, aby elementy były wyświetlane pionowo:
(setq ido-separator "\n")
Dzięki uprzejmości ergoemacs
Pozwól, że zasugeruję również ten post mówiący o przejściu na poprzedni / następny bufor.
źródło
Ostatnio zacząłem używać
C-x <left>
iC-x <right>
. Oba są standardowymi powiązaniami Emacsa - nic do skonfigurowania. Lewy przenosi cię z powrotem do poprzedniego bufora (początkowo taki sam jakC-x b RET
), ale powtórzenie tego powoduje powrót do trzeciego ostatnio odwiedzanego bufora. Jeśli często przeglądasz od 3 do 4 buforów, uważam, że jest to o wiele łatwiejsze niż zapamiętywanie nazw buforów.Właśnie odkryłem
C-x C-<left>
i jestemC-x C-<right>
związany tymi samymi funkcjami, więc możesz po prostu przytrzymać klawisz Ctrl i przełączać się między x i strzałkami, aby przewijać bufory. Nieźle!źródło
Możesz użyć Hełmu .
W moim ustawieniu przełączyłem się
C-x b
naM-l
. To w połączeniu z tymhelm-buffers-list
sprawia, że proces jest dość szybki, przynajmniej dla mnie.źródło
ido
lubiswitchb
lubicicles
coś w tym rodzaju, ale są one w zasadzie przestarzałe przez Helma. Tak,ace-jump-buffer
jest fajny, ale nie jest tak szybki jak Helm, ponieważ zanim będziesz wiedział, który klawisz nacisnąć, musisz znaleźć bufor na liście. Hełm pozwala zawęzić listę kilkoma naciśnięciami klawiszy, które już znasz (np. Nazwa bufora). UżywamC-TAB
do przełączania buforów, ładowania ostatnich plików, zakładek itp. Nic nie jest szybsze.helm
. Ale wolę korzystaniahelm-mini
, które pokazuje równieżRecentf
dohelm-buffers-list
.ivy-switch-buffer
.Aby dodać poprawki, których używam ze wspomnianym już Ido :
Używam również
ace-window
do przełączania między buforami orazace-jump-mode
do przeskakiwania między widocznymi oknami. Pochodzi z przyzwyczajenia, ale warto spróbować.Połączyłem go
key-chord-mode
i uderzyłemso
do szybkiego skoku:Wszystkie wyżej wymienione pakiety są dostępne za pośrednictwem menedżera pakietów od Melpa.
źródło
use-package
ją,require
aby zapobiec pomyłkom. W podanym przykładzie użytkownik nie musi instalować dodatkowego pakietu w celu wdrożenia tego rozwiązania.Jak mówi @kuanyui w komentarzu,
next-buffer
iprevious-buffer
są bardzo szybkie, jeśli masz tylko kilka buforów między cyklami. (Używam więcej niż kilku i więcej funkcji wyboru buforaicicle-buffer
).Jednak domyślnie,
next-buffer
iprevious-buffer
są na klucz prefiksu,C-x
.Oznacza to, że nie są powtarzalne : nie można po prostu trafić
C-x <right> <right> <right>...
. Zamiast tego musisz albo powiązać te polecenia z różnymi, powtarzalnymi klawiszami, albo musisz użyćC-x <right> C-x <right> C-x <right>...
, co nie jest bardzo szybkie.W przypadku powtarzalnych wersji tych poleceń załaduj bibliotekę
misc-cmds.el
i przypisz waniliowe, niepowtarzalne wersje do zdefiniowanych tam powtarzalnych:(Podobnie, w tej samej bibliotece znajdziesz wersję,
undo
która jest powtarzalna, nawet jeśli używasz klucza prefiksu:.undo-repeat
)BTW, możesz uczynić praktycznie każdą komendę powtarzalną (nawet na klawiszu prefiksu), używając funkcji
repeat-command
(zmisc-cmds.el
). To wszystko, co było potrzebne do zdefiniowania powtarzalnej wersjinext-buffer
:źródło
C-,
i,C-.
aby uzyskać powtarzalność, a mimo to i tak ustaw, ustawC-x.
iC-x,
doother-window
oraz(lambda()(interactive)(other-window -1))
. Okna rowerowe prawdopodobnie wymagają mniej powtarzalności, a uciekniesz za minutę, bez dodatkowych pakietów.next-buffer
iprevious-buffer
najlepsze rozwiązanie, niezależnie od konkretnego przypisania klucza. Dlatego mój komentarz.Dziwię się, że nikt
iswitchb
jeszcze o tym nie wspomniał . Może nie jest tak potężnyido
, ale na długo przedido-mode
narodzinamiiswitchb-mode
był już standardem dla emacsa i jest nadal użyteczny w dzisiejszych czasach. Aby spróbować, po prostu włóżdo .emacs lub aktywuj przez
M-x iswitchb-mode
.źródło
iswitchb
jest przestarzały od Emacsa 24.4. Cała jego funkcjonalność jest już dostępnaido
.Użyj helm-buffer-list lub helm-mini, aby wizualnie wybrać pozycję bufora i dopasowanie rozmyte. Może robić wiele rzeczy poza przełączaniem buforów. Powinieneś zobaczyć demo w linku.
źródło
Inni dyskutowali o pakietach, które są przydatne, aby ułatwić życie w odniesieniu do przełączania bufora / okna / ramki. (Osobiście używam tego,
helm
co jest fenomenalne.) Chcę omówić prostsze zmiany, które mogą sprawić, że Emacs będzie przyjemniejszy.Dla mnie rozwiązaniem moich problemów z buforami / ramkami (bo myślę, że
C-x o
jest najgorszy) nie było pakietem; to było po prostu:C-;
naother-window
(cykliczne przechodzenie przez okna)C-'
naother-frame
(przechodzenie między ramkami). Po dodaniu tego skrótu zacząłem używać ramek dużo więcej).help
okna, które się wyskakuje (podczas czytania stron podręcznika, apropos itp.) z dowolnym oknem, które wcześniej było widoczne).Pomyślałem też, że podzielę się kilkoma przemyśleniami na temat powiązań klawiszy, które dla początkujących mogą być pomocne. (Przepraszam, jeśli to niewłaściwe miejsce.) Nie mam konkretnych sugestii, ale raczej „filozofię”, która pozwala mi zachować dla siebie skuteczny zestaw skrótów klawiszowych.
Często używane polecenia nie zasługują na łatwe przypisywanie klawiszy.
keyfreq.el
i przekonaj się, czego tak często używasz. Korzystam z najlepszej metody przetrwania, aby zdecydować, które komendy są nagradzane za najcenniejszą nieruchomość na mojej klawiaturze.C-\
Jest to świetny skrót (z powodów omówionych w # 2) ... i to byłoby zbrodnią zostawić to odwzorowane do domyślnej komendy:change-input-method
. (Może niektórzy z was często go używają, na pewno nie.)Następujące czynniki określają łatwość i szybkość skrótu klawiaturowego (zaczynając od najważniejszego):
Ctrl
,Meta
, itd.). Na przykład uderzenieC-c C-l C-p
jest dla mnie znacznie szybsze niż trafienieC-x o
. Osobiście uważam, że bardzo niewygodne jest zdejmowanieCtrl
klucza pomiędzy kolejnymi naciśnięciami klawiszy w danej sekwencji klawiszy; o wiele łatwiej jest po prostu dalej mashować przycisk modyfikatora (w tym przypadku,Ctrl
). (Na ten konkretny przykład może mieć wpływ fakt, że ponownie przypisałemCtrl
klucz iCaps-Lock
klucz).C-c C-l C-p
jest dla mnie znacznie szybsze niż trafienieC-p C-' C-;
. (Spróbuj i powinno być oczywiste.) Ogólnie rzecz biorąc, o wiele łatwiej jest używać sekwencji klawiszy, które używają naprzemiennych rąk (lub przynajmniej naprzemiennych palców tej samej ręki).Kilka myśli, które moim zdaniem mogą być pomocne dla początkujących. Mogę dodać trochę później.
źródło
Używam
windmove.el
ibs.el
do szybkiego przełączania buforów. Oba tryby są dołączone do Emacsa.windmove.el
- przełącza do okna (aktualnie wyświetlany bufor) w określonym kierunku, np. w lewo, w prawo, w górę, w dół.bs.el
- Używambs-cycle-next
i,bs-cycle-previous
aby przejść do następnego bufora, który nie jest aktualnie wyświetlany w oknie.Można skonfigurować windmove z
(windmove-default-keybindings)
którym zwiąże odpowiednie rozkazyShift-Left Arrow
,Shift-Right Arrow
itpDo konfiguracji
bs.el
zadziała coś takiego:źródło
windmove.el
znajduje się na stronie EmacsWiki „Przełączanie buforów”, plusbs.el
działa na buforach, a nie na Windowsie .Najszybszym sposobem przełączania buforów, o którym wiem, jest
ace-jump-buffer
. Jedno naciśnięcie klawisza otwiera menu bufora, a następnie wybierz literę obok odpowiedniego buforaace-jump-line-mode
. Działa to najlepiej w przypadku około 26 najnowszych buforów. Aby przełączyć się na bufory z powrotem w historii użytkowania,ido-switch-buffer
zawsze jest dobrym wyborem.źródło
Wolę nawigację po kartach w stylu przeglądarki. Ctrl + Tab i Ctrl + Shift + Tab powiązałem odpowiednio z następnymi i poprzednimi buforami:
źródło
Mówiąc ogólnie, istnieją 2 sposoby przełączania buforów i większość rozwiązań mieści się w jednym z nich.
To właśnie
C-x b
robi domyślnie. Ido zapewnia ładne automatyczne uzupełnianie, dzięki czemu nie musisz tak dużo TAB TAB TAB. Projekty takie jak ster, pocisk itp. Ułatwiają pracę, umożliwiając pracę z plikami w projekcie itp., A wraz z ido mogą być bardzo przydatne.Jest to przydatne, gdy masz tyle buforów i potrzebujesz ich wszystkich. Możesz przejść w górę i w dół bufora i nacisnąć enter, aby przejść do określonego pliku. Ibuffer jest do tego całkiem dobry.
Używam obu i tak możesz to skonfigurować.
źródło
Oprócz ido mam następującą konfigurację.
W przypadku trybu zła użyj następujących przypisań klawiszy, aby przełączyć bufory
Ustaw nazwę bufora jako tytuł okna. Pomoże to w nawigacji z powyższymi skrótami klawiszowymi
Jeśli używasz trybu zła, możesz spróbować
evil-leader
. Powiąż często używane klucze z liderem. Na przykład można związaćC-x b
się<leader>-b
.Powiązanie trybu diodowego z
C-<f8>
. Teraz, gdy chcesz otworzyć plik w katalogu, naciśnijC-<f8>
, przejdź do nazwy pliku i naciśnija
zamiastRET
. Tak więc bufor buforowy zostanie natychmiast zabity.Użyj
recentf
trybu do nawigacji po najnowszych plikach.C-x C-r
Ostatnim ważnym punktem jest - użycie ergonomicznej klawiatury mechanicznej. Możesz więc łatwo i szybko nacisnąć klawisz „Ctrl” za pomocą nadgarstka zamiast zranić pinky.
Mam nadzieję, że to może komuś pomóc.
źródło
Jak widać z innych odpowiedzi, istnieje wiele sposobów usprawnienia tego konkretnego zadania. Osobiście używam Lusty Emacsa jako mojego aparatu do przełączania buforów, ponieważ całkiem dobrze radzi sobie z rozmytym zakończeniem. To minimalizuje liczbę naciśnięć klawiszy potrzebnych do wybrania nowego bufora, na przykład muszę tylko wpisać oxr, aby przełączyć się na ox-wyjawienie. El , a nawet tylko o drugiej rundzie, ponieważ śledzi również historię przełączników.
źródło
Jeśli chcesz po prostu przeczesywać bufory, dodaj to do pliku init:
Trzeba się bind-key pakiet można zmienić skróty klawiszowe do życzenia, ale znalazłem te Skróty klawiszowe się najbardziej komfortowo. Przed dodaniem tego fragmentu musisz wymagać klucza powiązania,
źródło
Używam C-Tab i CS-Tab jak aplikacji ogólnych.
źródło
Na mojej maszynie wirtualnej Cx ALT-RIGHT / LEFT jest zbyt wolny. Muszę poczekać, aż Cx zarejestruje się na pasku stanu, zanim będę mógł zrobić cokolwiek innego. plus jego zbyt wiele kluczy. Więc zamapowałem C-TAB i CM-TAB na następny i poprzedni bufor, ponieważ i tak robię w większości programów Windows. Łatwo to zrobić z poziomu emacsa:
M-x
przeniesie Cię do paska stanu. Następnie wpisz,global-set-key
który wyświetli monit o sekwencję klawiszy, którą chcesz powiązać (C-TAB
), a następnie polecenie, z którym chcesz ją powiązać (next-buffer
). Otóż to!źródło