Jak szybko przełączać się między oknami?
Często mam otwarte wiele okien i muszę się między nimi przełączać. W tej chwili korzystam C-x o
z tego, którego chcę. Czy jest dostępny bardziej wydajny przepływ pracy?
window
cycling
navigation
Sibi
źródło
źródło
Odpowiedzi:
Oczywiście wolę do tego okno asa . Możesz przełączać się między widocznymi oknami i ramkami. Jest w MELPA, możesz go szybko zainstalować. Jedyne, co pozostało do zrobienia, to związać to:
A może użyj krótszego akordu klawiszowego, ponieważ przełączanie okien jest częstym zadaniem:
Podsumowanie
ace-window
Jest to zamiennik drop-in dla
other-window
. W przeciwieństwie do tego drugiego, nigdy nie musisz dzwonićace-window
dwa lub więcej razy, aby wybrać okno: wybierasz okno, które chcesz w jednym połączeniu (być może w wielu ramkach).Oprócz przełączania okien
ace-window
można zrobić więcej (usuwać lub zamieniać okna itp.), Zobacz CZYTAJ .źródło
ace-window
a potem zobaczyłem,switch-window
co wydaje się robić mniej więcej to samo, z wyjątkiem tego, że litery są bardziej wyraźne. wydaje się zabawne, mamy oba pakiety.switch-window
dopóki nieace-window
zgłosiłem się do MELPA.ace-window
, ma chyba więcej możliwości dostosowywania niż inne pakiety. W przyszłości może być pomocna kluczowa funkcja powiązana z funkcją, która działałaby podobnie do akcji inteligentnej zamiany, ale zjadłaby to okno, powodując większe okno w wybranym punkcie i mniejsze wybrane okno (zjedzone okno) w górę). Stosunek należy w tym przypadku określić jako połowę, jedną czwartą lub jedną trzecią.Jednym ze sposobów jest użycie
windmove
. Dzięki domyślnym skrótom klawiszowym umożliwia przejście do okna obok aktualnie aktywnego.Jest wbudowany w Emacsa, więc nie trzeba niczego instalować; po prostu aktywuj go za pomocą następującej minimalnej konfiguracji w pliku init:
Następnie można przejść do sąsiednich okien za pomocą następujących klawiszy (gdzie strzałka używany intuicyjnie określa kierunek, w którym przemieszcza się):
S-<left>
,S-<right>
,S-<up>
,S-<down>
.Jeśli wolisz użyć innego modyfikatora zamiast shift, możesz podać go jako argument
windmove-default-keybindings
. Na przykład:lub
Więcej informacji na stronie Emacs Wiki .
źródło
(windmove-default-keybindings 'meta)
Jak sugerowano w EmacsWiki.Shift-arrow
) , ale kiedy masz duży monitor z dużą ilością podziałów, taki ruch szybko staje się niewygodny. Bardziej interesujące byłoby wyliczenie okien / podziałów. Podobnie jakace-window
, ale z mniejszą liczbą naciśnięć klawiszy i oczywistym algorytmem, aby natychmiast dowiedzieć się, którą liczbę chcesz.Możesz powiązać
other-window
z łatwiejszą do wpisania sekwencją klawiszy.Na przykład
C-.
związałem sięother-window
iC-,
poszedłem do poprzedniego okna.Jest to szczególnie przydatne do przenoszenia wielu okien; po przytrzymaniu klawisza Control wystarczy nacisnąć jeden przycisk, aby przejść do następnego okna. Jest to o wiele łatwiejsze niż trzy naciśnięcia klawisza na ruch.
źródło
C-x o
dlaother-window
jest jednym z niewielu solidnych pretendentów do tytułu „najgorszego domyślnego skrótu emacsa”. Moje rozwiązanie (podobne do Zck) polegało na ponownym powiązaniuother window
do (o wiele łatwiejszej) sekwencji klawiszy - mam do tego przywiązanyC-;
(i mojeCaps-Lock
jest zamienione,Ctrl
więc wystarczy tylko dotknąć różyczek). Przy okazji, jestem całkowicie zależny od niektórych funkcjihelm
iicicles
(tj. Nie jestem „anty-pakietami” ani nic takiego); Po prostu myślę, że proste rozwiązanie działa tutaj najlepiej.M-o
dlaother-window
. Niektóre tryby jużM-o
wiązania, zwłaszczadiff-mode
,ggtag-mode
iibuffer-mode
. Musisz ręcznie odznaczyć go w każdej mapie trybów.unbind-key
dostarczone przezbind-key.el
jest bardzo przydatne.M-o
również, iM-O
wiąże sięace-window
dla kiedy potrzebują dodatkowego zasilania.window-numeracja.el!
Przypisuję skróty „, 1”, „, 2”, „, 3”, aby przełączyć określone okno (pamiętaj, że używam trybu zła)
poza tym wyświetlam numer okna na linii trybu w RÓŻOWYM kolorze, podkreślony.
To wizualna wskazówka, której nigdy nie możesz zignorować,
To najszybszy sposób na przełączenie okna.
sprawdź https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-evil.el i https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-modeline .el dla mojej konfiguracji.
Sylvain Benner przyjął mój pomysł w postaci znaków kosmicznych, ale skróty klawiszowe są inne . Więc jeśli korzystasz z kosmicznych, otrzymujesz najszybsze rozwiązanie od razu po wyjęciu z pudełka.
źródło
window-number
z,M-<num>
aby szybko przełączać okna czarno-białe. Podobna koncepcja do tejBez korzystania z żadnych dodatkowych dodatków możesz nadal używać
C-x o
opcjonalnego prefiksu, aby pomijać tak wiele okien. Np .:C-u 1 C-x o
przejdzie do następnego okna w kolejności (tzn. Co uzyskasz zwykłymC-x o
),C-u 2 C-x o
przejdzie dwa okna,C-u 3 C-x o
przejdzie trzy okna i tak dalej.Fragment dokumentacji
other-window
(funkcja wywoływana przezC-x o
:źródło
Niektóre osoby mogą pamiętać krótkie edytor (wystarczająco zabawnie wyprodukowany przez firmę o nazwie Underware).
Miał fajny sposób przełączania się między widocznymi oknami. Strzałka M przesuwałaby kursor do okna bezpośrednio zgodnie z kierunkiem klawisza strzałki.
Więc zmapowali
winmove-left
,winmove-right
,winmove-up
orazwinmove-down
funkcjeM-left
,M-right
,M-up
aM-down
klucze w następujący moim pliku .emacs -Teraz mogę z łatwością poruszać się między oknami, niezależnie od tego, jak zaśmiecona jest moja konfiguracja ... I może być dość zagracona wielkością wyświetlaczy w dzisiejszych czasach ...
źródło
(windmove-default-keybindings 'meta)
!Jeśli używasz Sople następnie
C-x o
pozwala wybrać okna o nazwie (lub na rowerze).Bez prefiksu arg
C-x o
jest taki sam jak zwykle,other-window
chyba że ramka ma tylko jedno okno, w którym to przypadku jestother-frame
.Z prefiksem arg
C-x o
oznacza wiele poleceń, które umożliwiają nawigację między oknami lub ramkami według nazwy (lub cyklicznie). Poruszanie się między oknami odbywa się za pomocą wielu poleceńicicle-select-window
; nawigacja między zastosowaniami ramekicicle-select-frame
.To, która nawigacja jest używana, zależy od prefiksu arg:
Zero prefiks arg (np.
C-0
): Jeśli wybrana ramka ma wiele okien, oznacza toicicle-select-window
, że okna są w tej samej ramce co kandydaci. W przeciwnym razie (rama pojedynczego okna), to jesticicle-select-frame
.C-u
: Jeśli wybrana ramka ma wiele okien, oznacza toicicle-select-window
, że okna ze wszystkich widocznych ramek są kandydatami. W przeciwnym razie tak jesticicle-select-frame
.C-u C-u
:icicle-select-window
, z oknami ze wszystkich ramek jako kandydatów (w tym ikonami lub ukrytymi ramkami).Jak zawsze w Icicles , możesz łączyć (a) uzupełnianie , wpisując tekst, aby zawęzić zestaw pasujących kandydatów (w tym przypadku nazwy okien lub ram), z (b) cyklicznymi (między pasującymi kandydatami).
źródło
Rozważ użycie klawisza-akordu do szybkiego przeskakiwania między oknami. Uważam, że jest to znacznie szybsze niż sięganie po klawisz modyfikujący (i mniej obciążające moje ręce).
Mój wybór pakietu to taki
ace-window
, który pozwala łatwiej nawigować po wielu oknachother-window
.Oczywiście do korzystania z tego potrzebujesz
key-chord
iace-window
oba są dostępne w Melpa.źródło
ace-window
wykonuje pracę jak w odpowiedzi @ abo-abo. Uderza mnie, że w tym kontekście specyficzne użycie klawiszy byłoby bardziej sensowne niż komentarz. Tylko moje dwa centy.key-chord
umożliwia wiązanie bardzo dostępnych kombinacji kluczy. Przykładowe wiązaniexo
jest szybsze niżC-x o
(głębokość jeden kontra dwa). Tę odpowiedź można przeformułować, aby podkreślić, że odpowiedź jest ortogonalna w stosunku do innych odpowiedzi dotyczących wyboru funkcji (iace-window
jest tylko jedną z wielu opcji, które można powiązać w opisany sposób). Zachowaj tę odpowiedź jako wyraźną!Kilka dobrych odpowiedzi tutaj, jestem również fanem WinMove, ale wiążę go z C-, ponieważ tryb org używa M- do manipulowania nagłówkami
Naprawdę dobrze jest, jeśli połączysz go z Hydrą . Podążając za przykładami na ich wiki , stworzyłem własnego potwora:
Pozwala mi to zmieniać okna, zmieniać ich rozmiar, przenosić bufory z okna do okna, buforować cyklicznie, zabijać bufory, a nawet cofać konfiguracje okien poprzez tryb Zwycięzca, a także integruje ster. Aby wyjść z hydry, wystarczy nacisnąć strzałkę lub inny klawisz, którego nie ma w hydrze. Możesz znaleźć funkcje „hydra-move” na przykładach hydry . Wspaniałą rzeczą w hydrze jest to, że nie muszę pamiętać wszystkich tych skrótów klawiszowych i ich „modnego”, więc kiedy jesteś w hydrze, wszystko jest dostępne jako pojedynczy klawisz naciśnij.
źródło
(windmove-default-keybindings 'control)
.Jeśli używasz
evil-mode
, możesz po prostu użyć prefiksu numerycznego za pomocąC-w C-w
(evil-window-next
), aby wybrać żądane okno. Więc:1 C-w C-w
wybiera pierwsze okno w cyklicznej kolejności,3 C-w C-w
wybiera trzecie okno w cyklicznej kolejności i tak dalej.źródło
Ace Jump pozwala nawigować wskaźnikiem do wszystkich słów na ekranie, niezależnie od okna lub ramki, więc nie różni się tak bardzo od korzystania z Ace Window lub Switch Window.
Zaletą może być to, że podczas przeskakiwania okien można również precyzyjnie umieścić wskaźnik.
Nadal uważam, że jest to trochę kłopotliwe lub rozpraszające, i używam
windmove
więcej, ponieważ jest to bardzo proste, ale nadal używam Ace Jump, gdy czytam w innym oknie lub ramce i chcę się tam przenieść.źródło
Jak zwykle istnieje sto różnych sposobów osiągnięcia tego celu. Mój preferowany sposób to korzystanie z NumberedWindows . Następnie ustawiam następujący skrót klawiszowy za pomocą Super i klawiszy 1-9.
Zagłębiam się bardziej szczegółowo na ten temat w moim ostatnim poście, który możesz przeczytać w Afternoon Coder .
źródło
Możesz także zdecydować się na użycie przełącznika jako wizualnego zamiennika
C-x o
źródło
switch-window
stosunku do wszystkich innych?