Jak wybrać lub podświetlić blok w Emacs?


Odpowiedzi:


66

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.


11
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).


6
Warto zauważyć, że C-s C-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



10

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.

  • diff-hl : Podświetl niezatwierdzone zmienione regiony. Użyj,diff-hl-mark-hunkaby wybrać / oznaczyć kawałek.


7

Użyj Control-, Spaceaby ustawić znak i przesunąć kursor.

transient-mark-modeZaprezentuje wybór dla Ciebie. M- x transient-mark-mode.

Możesz skonfigurować Emacsa, aby domyślnie włączał ten tryb, używając dostosowania. M- x customize-option RET transient-mark-mode.


1

... 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ń”).

Cytat zaczerpnięty z odpowiedzi na pytanie SO.


0

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 .


-1

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ń:

  • C- wdo cięcia.
  • M- wdo kopiowania.
  • C- ydo wklejania.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.