Chcę zaznaczyć lub podświetlić blok w emacsie bez użycia myszy, ale robię to z klawiatury, tak jak w trybie wizualnym vima. Jak najłatwiej to zrobić z klawiatury?
Krótko mówiąc, zaczynasz selekcję jak zwykle za pomocą Control- Space, następnie zabijasz region za pomocą Control- xrki wklejasz (lub szarpniesz ) zabity blok za pomocą Control- xry.
To nie zabija regionów, zabija prostokąty, co z mojego doświadczenia znacznie różni się od tego, co robi tryb wizualny vima.
Allen
2
Czym to się różni?
Ken Williams,
73
Jeśli dobrze rozumiem pytanie, pierwotnie nie chodzi o prostokątne obszary.
C-Spc zaznacza aktualną pozycję.
Gdziekolwiek później znajduje się kursor, tekst między ostatnim znacznikiem a bieżącą pozycją jest „zaznaczony” (możesz to zaznaczyć, aktywując transient-mark-mode, ale będzie to również oznaczać, że znaki muszą zostać usunięte, jeśli nie chcesz podświetlić).
Możesz operować na tym regionie za pomocą poleceń takich jak:
C-w. . Zabij region. Powoduje to usunięcie regionu i umieszczenie go w pierścieniu zabijania. C-y. . Szarpać. Spowoduje to wstawienie ostatniego fragmentu z pierścienia zabijania. M-y. . Pierścień zabijania cyklu. Natychmiast po C-ytym zastępuje szarpaną część innymi fragmentami w pierścieniu zabijania. M-w. . Zapisz region w pierścieniu zabójstw. Podoba C-w, ale nie usuwa.
To tylko podstawowe użycie. Znaki mają też inne zastosowania. Polecam tutorial ( C-h t).
Warto zauważyć, że C-sC-rsą one powszechnie używane w tym kontekście, aby znaleźć koniec / początek regionu. (Szczególnie przydatne w makro.)
ocodo
No cóż, to bardzo dobre komendy, ale ... Jak wybrać zaznaczony region? Przecież to mi jeszcze jest potrzebne, czyli wcinanie kodu między znaczniki.
Hi-Angel,
Region między ostatnim znacznikiem a bieżącym punktem (czyli miejscem, w którym znajduje się kursor) to wybrany region. Po prostu biegnij M-x indent-region.
Svante
@Svante Nie, nie jest zaznaczone. Chociaż indent-regiondziała dobrze, ale c-indent-line-or-region(ten, który jest powiązany z klawiszem tab ) nie. Ta ostatnia funkcja działa nie na zaznaczonych regionach, ale na wybranych , tj. Regionie, który jest podświetlony tak, jakbyś wybrał go myszą.
Hi-Angel
2
@YagamyLight Ach, możesz to zrobić, naciskając C-Spcdwa razy w miejscu, w którym umieścisz znak. To aktywuje tymczasowo tryb znacznika przejściowego (do momentu anulowania (za pomocą C-g)). Następnie przesuń punkt, aby wyświetlić wybrany region.
Svante
32
Emacs 24.4 ma teraz tryb znacznika prostokąta. Cx spacja, aby go wywołać.
Mimo że C-SPC jest to powszechny sposób na rozpoczęcie oznaczania czegoś z dowolnego miejsca, często istnieją szybsze / łatwiejsze sposoby, które nie obejmują jawnego przejścia do punktów początkowych / końcowych ...
Wbudowane skróty wyboru
M-h- ważny sposób na oznaczenie akapitu . „Akapit” często oznacza blok kodu.
C-M-horaz C-M-@- odpowiednio do oznaczania seksu i defuns . Działa to w kilku językach, a nie tylko seplenienie.
przytrzymaj Shift - kolejny sprytny sposób na podkreślenie podczas ruchu. Np. M-S-fWybiera cały wyraz do przodu. To jest
shift-select-modei jest domyślnie włączone w Emacs 24+. Na niektórych klawiaturach (innych niż szykletowe) powinieneś być w stanie przytrzymać C-S-pojedynczy mały palec.
Możesz naciskać dowolne z nich wielokrotnie, aby zwiększyć wybór.
(UWAGA: używaj C-gczęsto, aby anulować zaznaczanie podczas eksperymentowania).
Dodatki
Istnieje kilka pakietów dodatków, które usprawniają wybieranie regionów i rzeczy. Wszystko to ładnie się ze sobą gra i pasuje do różnych przypadków użycia. Użyj ich wszystkich!
Expand-Region : Expand region zwiększa wybrany region o jednostki semantyczne. Po prostu naciskaj klawisz, aż wybierze to, co chcesz. C-=jest dla niego zalecanym wiązaniem. Uderz go kilka razy, aby uzyskać to, czego potrzebujesz.
Easy-Kill : użyjM-wi mnemonika, aby wybrać różne typy rzeczy, takie jak słowa, seksu, listy itp.
Zop-to-Char : Podobnie jak zap-to-char , ale zapewnia dobry wybór i inne działania oparte na menu.
... a jeśli używasz Ubuntu i C-spcnie działa dla ciebie: musisz wyczyścić przypisanie klawisza IBus "następna metoda wprowadzania", jak w
uruchom ibus-setupi zmień przypisanie klawisza „następnej metody wprowadzania” na coś innego (lub usuń je całkowicie, klikając przycisk „…”, a następnie przycisk „Usuń”).
Aby rozszerzyć odpowiedź Edin Salkovic, jeśli używasz trybu CUA, możesz użyć, aby rozpocząć wizualny wybór bloków. Istnieje wiele skrótów do sterowania wyborem bloków opisanych w dokumentacji CUA .
W Emacs 25 po prostu naciśnij C- Spacea następnie przesuń kursor w dowolne miejsce, w którym chcesz zaznaczyć / wybrać interesujący Cię obszar tekstu. Następnie możesz potrzebować tych poleceń:
mark-defun
Odpowiedzi:
Spójrz na region-prostokąt w emacs.
Krótko mówiąc, zaczynasz selekcję jak zwykle za pomocą Control- Space, następnie zabijasz region za pomocą Control- x r ki wklejasz (lub szarpniesz ) zabity blok za pomocą Control- x r y.
źródło
Jeśli dobrze rozumiem pytanie, pierwotnie nie chodzi o prostokątne obszary.
C-Spc
zaznacza aktualną pozycję.Gdziekolwiek później znajduje się kursor, tekst między ostatnim znacznikiem a bieżącą pozycją jest „zaznaczony” (możesz to zaznaczyć, aktywując
transient-mark-mode
, ale będzie to również oznaczać, że znaki muszą zostać usunięte, jeśli nie chcesz podświetlić).Możesz operować na tym regionie za pomocą poleceń takich jak:
C-w
. . Zabij region. Powoduje to usunięcie regionu i umieszczenie go w pierścieniu zabijania.C-y
. . Szarpać. Spowoduje to wstawienie ostatniego fragmentu z pierścienia zabijania.M-y
. . Pierścień zabijania cyklu. Natychmiast poC-y
tym zastępuje szarpaną część innymi fragmentami w pierścieniu zabijania.M-w
. . Zapisz region w pierścieniu zabójstw. PodobaC-w
, ale nie usuwa.To tylko podstawowe użycie. Znaki mają też inne zastosowania. Polecam tutorial (
C-h t
).źródło
C-s
C-r
są one powszechnie używane w tym kontekście, aby znaleźć koniec / początek regionu. (Szczególnie przydatne w makro.)M-x indent-region
.indent-region
działa dobrze, alec-indent-line-or-region
(ten, który jest powiązany z klawiszem tab ) nie. Ta ostatnia funkcja działa nie na zaznaczonych regionach, ale na wybranych , tj. Regionie, który jest podświetlony tak, jakbyś wybrał go myszą.C-Spc
dwa razy w miejscu, w którym umieścisz znak. To aktywuje tymczasowo tryb znacznika przejściowego (do momentu anulowania (za pomocąC-g
)). Następnie przesuń punkt, aby wyświetlić wybrany region.Emacs 24.4 ma teraz tryb znacznika prostokąta. Cx spacja, aby go wywołać.
źródło
Zobacz artykuł: „Praca z zaznaczeniami prostokątnymi” , zwłaszcza sekcję komentarzy. Zobacz także sekcję dokumentacji trybu CUA zatytułowaną „Obsługa prostokątów CUA”. Jest też fajny film na vimeo .
źródło
Mimo że
C-SPC
jest to powszechny sposób na rozpoczęcie oznaczania czegoś z dowolnego miejsca, często istnieją szybsze / łatwiejsze sposoby, które nie obejmują jawnego przejścia do punktów początkowych / końcowych ...Wbudowane skróty wyboru
M-h
- ważny sposób na oznaczenie akapitu . „Akapit” często oznacza blok kodu.C-M-h
orazC-M-@
- odpowiednio do oznaczania seksu i defuns . Działa to w kilku językach, a nie tylko seplenienie.przytrzymaj Shift - kolejny sprytny sposób na podkreślenie podczas ruchu. Np.
M-S-f
Wybiera cały wyraz do przodu. To jestshift-select-mode
i jest domyślnie włączone w Emacs 24+. Na niektórych klawiaturach (innych niż szykletowe) powinieneś być w stanie przytrzymaćC-S-
pojedynczy mały palec.Możesz naciskać dowolne z nich wielokrotnie, aby zwiększyć wybór.
(UWAGA: używaj
C-g
często, aby anulować zaznaczanie podczas eksperymentowania).Dodatki
Istnieje kilka pakietów dodatków, które usprawniają wybieranie regionów i rzeczy. Wszystko to ładnie się ze sobą gra i pasuje do różnych przypadków użycia. Użyj ich wszystkich!
Expand-Region : Expand region zwiększa wybrany region o jednostki semantyczne. Po prostu naciskaj klawisz, aż wybierze to, co chcesz.
C-=
jest dla niego zalecanym wiązaniem. Uderz go kilka razy, aby uzyskać to, czego potrzebujesz.Easy-Kill : użyj
M-w
i mnemonika, aby wybrać różne typy rzeczy, takie jak słowa, seksu, listy itp.Zop-to-Char : Podobnie jak zap-to-char , ale zapewnia dobry wybór i inne działania oparte na menu.
diff-hl : Podświetl niezatwierdzone zmienione regiony. Użyj,
diff-hl-mark-hunk
aby wybrać / oznaczyć kawałek.źródło
Użyj Control-, Spaceaby ustawić znak i przesunąć kursor.
transient-mark-mode
Zaprezentuje wybór dla Ciebie. M- xtransient-mark-mode
.Możesz skonfigurować Emacsa, aby domyślnie włączał ten tryb, używając dostosowania. M- x
customize-option
RETtransient-mark-mode
.źródło
... a jeśli używasz Ubuntu i C-spcnie działa dla ciebie: musisz wyczyścić przypisanie klawisza IBus "następna metoda wprowadzania", jak w
Cytat zaczerpnięty z odpowiedzi na pytanie SO.
źródło
Aby rozszerzyć odpowiedź Edin Salkovic, jeśli używasz trybu CUA, możesz użyć, aby rozpocząć wizualny wybór bloków. Istnieje wiele skrótów do sterowania wyborem bloków opisanych w dokumentacji CUA .
źródło
W Emacs 25 po prostu naciśnij C- Spacea następnie przesuń kursor w dowolne miejsce, w którym chcesz zaznaczyć / wybrać interesujący Cię obszar tekstu. Następnie możesz potrzebować tych poleceń:
źródło