exchange-point-and-mark
Komenda jest związany C-x C-x, ale nie mogę myśleć o żadnych przypadków użycia, które sprawiają, że zasługuje na taki wybitny wiążące.
Jak mogę użyć exchange-point-and-mark
do ulepszenia techniki edycji?
exchange-point-and-mark
Komenda jest związany C-x C-x, ale nie mogę myśleć o żadnych przypadków użycia, które sprawiają, że zasługuje na taki wybitny wiążące.
Jak mogę użyć exchange-point-and-mark
do ulepszenia techniki edycji?
Odpowiedzi:
Są dwa przypadki, o których mogę myśleć: reaktywacja regionu i dostosowanie wielkości regionu.
Najczęściej używam tego wiązania do reaktywacji regionu po wykonaniu polecenia, które go dezaktywuje lub po zrobieniu czegoś, co ustawia znak i przesuwa punkt bez aktywacji regionu.
Na przykład wykonaj Cs i wyszukaj coś do przodu. Naciśnij RET, aby wyjść z wyszukiwania, a następnie Cx Cx, aby zaznaczyć wszystko od miejsca rozpoczęcia wyszukiwania.
Kolejny przykład, który robię dużo, gdy chcę dołączyć przykładowy elisp do odpowiedzi StackExchange:
Drugi przypadek ma miejsce, gdy zaznaczasz region i chcesz go rozszerzyć / zmniejszyć. W takim przypadku wygodnie jest przeskoczyć na „drugi koniec” regionu, przesunąć go, a następnie skoczyć z powrotem. Jeśli region jest już aktywny, wówczas naciśnięcie Cx Cx pozostawi go aktywnym, umożliwiając przesunięcie dowolnego końca.
Zapytaj Emacsa: C-h r i exchange-point-and-mark RET
lub lepiej C-h r i C-x C-x RET
. Spowoduje to przejście do informacji pokazanych poniżej.
Oto, co mówi instrukcja Emacsa, węzeł Ustawienie znaku w odpowiedzi na twoje pytanie:
C-x C-x
przydaje się, gdy jesteś zadowolony z pozycji punktu, ale chcesz przesunąć drugi koniec regionu (tam, gdzie jest znak) . WC-x C-x
razie potrzeby ponowne użycie powoduje umieszczenie znaku w nowej pozycji, tak aby punkt był z powrotem w pierwotnej pozycji. Zwykle, jeśli znak jest nieaktywny, to polecenie najpierw reaktywuje znak, gdziekolwiek był ostatnio ustawiony, aby upewnić się, że region jest podświetlony. Jednak jeśli wywołasz go z argumentem przedrostka, pozostawia znak nieaktywny, a region nie jest podświetlony; możesz użyć tego, aby przejść do znaku w sposób podobny doC-u C-<SPC>
.
I tak to mówi o tym w węźle Disabled Transient Mark :
Wyłączenie [
transient-mark-mode
] przełącza Emacsa na alternatywny tryb pracy:
Ustawienie znacznika za pomocą poleceń takich jak
C-<SPC>
lubC-x C-x
nie powoduje podświetlenia regionu. Dlatego nie możesz stwierdzić, patrząc na znak; musisz pamiętać.Zwykłym rozwiązaniem tego problemu jest ustawienie znaku, a następnie użycie go wkrótce, zanim zapomnisz, gdzie on jest. Możesz także sprawdzić, gdzie znajduje się znak, używając
C-x C-x
, który zamienia pozycje punktu i znaku - patrz Ustawienie Znaku .Gdy tryb oznaczania przejściowego jest wyłączony, możesz go tymczasowo aktywować za pomocą
C-<SPC> C-<SPC>
lubC-u C-x C-x
.
i:
C-u C-x C-x
Wymień punkt i znak, aktywuj znak i tymczasowo włącz tryb Oznaczenia przejściowego, aż znak zostanie następnie dezaktywowany. (To jestC-x C-x
polecenieexchange-point-and-mark
z argumentem przedrostka).
Używam tego, gdy straciłem wybór z powodu operacji, która go usunęła i chcę przywrócić wybór. Jednym z takich scenariuszy byłoby:
Dzieje się tak, gdy chcę wykonać kopię zapasową wybranego obszaru ad hoc i poeksperymentować z kopią, na przykład chcę znaleźć i wymienić, ale nie mogę wymyślić sposobu, aby to zrobić w sposób, który nie niszczy tekstu, który powinien pozostać, więc później cofnę go z kopii.
Pozostałe odpowiedzi koncentrują się na użyteczności, C-x C-x
kiedy transient-mark-mode
jest aktywny. Ale C-x C-x
poprzedza transient-mark-mode
i jest użyteczny niezależnie od niego.
Główną rolą C-x C-x
jest zamiana punktu i oznaczenie. Jest to przydatne, gdy edytujesz dwa punkty w jednym buforze i z jakiegoś powodu nie chcesz dzielić bieżącego okna. Zrób trochę edycji, ustaw znak, przejdź do innego punktu w buforze, zrób trochę edycji C-x C-x
, zrób trochę edycji w poprzednim miejscu C-x C-x
, zrób więcej edycji, ad nauseam. (Jeśli nie planujesz wracać do drugiego punktu, C-u C-SPC
może być bardziej intuicyjny. Spójrz na znacznik w instrukcji Emacsa.)
Kiedy transient-mark-mode
jest wyłączony, C-x C-x
ma jeszcze jeden ważny cel: pozwala dowiedzieć się, gdzie znajduje się region. C-x C-x
, jeszcze raz szybki rzut oka na punkt C-x C-x
.
(A jeśli zastanawiasz się - tak, niektórzy z nas nadal wolą używać Emacsa z transient-mark-mode
wyłączonymi).