Niedawno się o tym dowiedziałem multiple-cursors
i wygląda na bardzo przydatny pakiet. Przejrzałem dokumentację oryginalnego repozytorium , ale polecenia wciąż wydają mi się nieco niejasne.
Potem obejrzałem wideo w Emacs Rocks !, i jest świetne, ale skupia się głównie na tym, co multiple-cursors
jest w stanie zrobić, a nie na tym, jak to zrobić.
Czy są jakieś instrukcje, samouczki lub przykłady, które ilustrują jego najbardziej podstawową funkcjonalność?
multiple-cursors
Amelio Vazquez-Reina
źródło
źródło
multiple-cursors
bardzo szybko zacząć i czytać plik README. Moje zalecenie to po prostu nauczyć sięmc/mark-next-like-this
. Wypróbuj i zapoznaj się z tym, co robi. Stamtąd wracaj do README za każdym razem, gdy masz pytanie, które zaczyna się od: „Zastanawiam się, czy wielu kursorów może to zrobić ...” Wszystko to powiedziało, myślę, że to bardziej podstawowe wprowadzenie niż Skały Emacsa! wideo byłoby pomocne dla początkujących.Odpowiedzi:
Oprócz opisów użycia @bastibe używam wielu kursorów, aby dodawać lub usuwać tekst z początku / końca grupy wierszy:
set-rectangular-region-anchor
(powiązane z dowolnym klawiszem, który lubisz, myślę, że sugestią Magnars było H-space, jeśli masz hiperklucz )C-n
iC-p
), aż na każdej linii, którą chcesz edytować, znajduje się kursorC-e
), aby wprowadzić tam zmiany.Możesz użyć
forward-word
,forward sentence
itp., Aby poruszać się w przód iw tył wzdłuż linii, co pozwala edytować czwarte słowo w każdym wierszu, nawet jeśli tekst w każdym wierszu nie jest identyczny.Na przykład cały czas wykonuję ten rodzaj pracy:
C-u M-!ls / test-dat / pp5 / * fsaRETURN
To wstawia zawartość katalogu pp5 do bufora. Umieszczam punkt
!
na początku aukcji:→
→
→
→
I voila, przekonwertowałeś listę plików na kod, aby odczytać tę listę. Jest to o wiele trudniejsze do opisania niż do zrobienia!
źródło
multiple-cursors
mogą tworzyć naprawdę potężne kombinacje.phi-search
może być bardziej niezawodne niż nawigowanie za pomocą poleceń takich jakM-f (x3)
phi-search
tym, wygląda świetnie!Zasadniczo mam dwa częste przypadki użycia dla
multiple-cursors
:mc/mark-next-like-this
i,mc/mark-previous-like-this
aby zaznaczyć więcej wystąpień tego ciągu. Następnie natychmiast uderzyłem, C-waby usunąć każdą instancję i zamiast tego napisałem nowy ciąg. Często używam tego do zmiany nazwy zmiennej w kodzie.mc/edit-lines
aby uzyskać jeden kursor na linię. Teraz możesz używać regularnych poleceń edycji, które działają na każdym z tych kursorów.Pierwszy przypadek użycia jest szczególnie przydatny w przypadku
expand-region
. Mamer/expand-region
związany C-j, amc/mark-next-like-this
imc/mark-previous-like-this
do C->a C-<. Dzięki temu mogę łatwo wybrać słowo punkt jest włączone i natychmiast zaznaczyć następne / poprzednie wystąpienie tego słowa.Drugi przypadek użycia zastąpił dla mnie większość zastosowań makr. Zamiast rejestrować makro, a następnie stosować je w kilku miejscach, umieściłem kursor w każdym miejscu i po prostu wykonam operację we wszystkich miejscach jednocześnie.
źródło
multiple-cursors
polecasz dla np.mark-next-like-this
&mark-previous-like-this
?C->
iC-<
dlamark-next-like-this
imark-previous-like-this
.Chciałbym dodać dodatki, których czasem używam
multiple-cursors
.Przydatne okazały się:
iy-go-to-char
Czasami musisz przejść do następnego,
#
następnego,
lub określonego ogranicznika. Jest to szczególnie przydatne, gdy trzeba przewijać różne liczby słów dla każdego kursora. Zapewnia funkcjeiy-go-to-char
iiy-go-to-char-backward
, które można ładnie powiązać i używać.rozwiń region
Jest to bardzo przydatne z podobnych powodów
iy
- gdy masz nieco inne linie pod każdym kursorem i być może chcesz wybrać cytowany ciąg pod punktem lub podobnie.niestandardowe rzeczy
Są to rzeczy, które są po prostu elisp w mojej konfiguracji, ale uważam je za przydatne. Prawdopodobnie nie napisane przeze mnie.
Pytaj o dane wejściowe
Dostałem ten od Magnars w odpowiedzi na prośbę o umieszczenie innego ciągu pod każdym kursorem. Kod jest prosty, ale powiązanie go z czymś i użycie wielu kursorów to wygodny sposób na wstawienie nieco innych rzeczy w każdym miejscu.
Numer przyrostowy w punkcie
Pochodzi z SO lub emacswiki. Nie jestem pewien który. Jest to całkiem przydatne samo w sobie, a także w połączeniu z
mc/insert-numbers
eval-and-replace
To jest super mocne i umożliwia kilka naprawdę użytecznych bitów i kawałków. Ocenia jakąkolwiek płeć za kursorem i wstawia wynik jej oceny.
Połącz to z,
multiple-cursors-numbers
aby np. Wstawić potęgę dwóch lub szeregu, który przechodzi0 1 2 0 1 2 0 1 2
przez każdą linię lub coś. (Zrobiłem oba te pożytecznie) Lub użyj go,s.el
aby zapisać tę żmudną konfigurację Java z domyślnymi rzeczami. Zapisujesz każdyCONFIG_VALUE_VARIABLE
, a następnie przekształcaszCONFIG_VALUE_VARIABLE = "configValueVariable"
go, uruchamiającs-camel-case
.źródło
C-S-b
lub,M-S-b
aby wybrać do tyłu, dopóki nie zostanie wybrany fragment. Możesz także użyć strzałki w lewo Shift.C->
(naciśnij klawisz Shift, jeśli klawisz>
znajduje się nad klawiszem klawiatury), dopóki nie zostanie wybrany więcej niż jeden element.* Ważne jest, aby wybrać do tyłu, w przeciwnym razie pierwszy wybór umieści kursor w niewłaściwej pozycji.
źródło