Odpowiedzi:
Możesz dodać przedrostek M-x string-rectangle
, który jest związany C-x r t
. Jest to część serii poleceń, które działają na zaznaczeniach prostokątnych ; ten wstawia tekst w każdym wierszu prostokąta.
Rozpocznij od ustawienia znacznika na początku pierwszego wiersza i przesuń kursor do pierwszego znaku ostatniego wiersza, który chcesz poprzedzić:
*Hello
There
▮I am some code
Następnie użyj C-x r t
, wprowadź prefiks ( I said
) i naciśnij RET
. To dodaje tekst do każdej linii w prostokącie:
I said Hello
I said There
I said I am some code
Jeśli nie ustawisz kursora w tej samej kolumnie co znak, zastąpi on tę część prostokąta:
*Hello
There
I am▮ some code
z tym samym poleceniem powoduje:
I said o
I said e
I said some code
M-x string-insert-rectangle
. Jest bardzo podobny, ale string-insert-rectangle
wstawia na początku każdej linii zaznaczenia, podczas gdy string-rectangle
zastępuje , więc w tym drugim przypadku musisz być bardziej precyzyjny w wyborze, jeśli nie chcesz niczego zastępować.
Możesz użyć trybu wielu kursorów , aby umieścić kursor w każdej linii. Następnie każdy wpisany tekst zostanie wstawiony w każdym wierszu.
Zacząłbyś od punktu na początku fragmentu kodu:
▮Hello
There
I am some code
Następnie naciśnij C->dwa razy. (Jest to sugerowane powiązanie klawiszy; musisz je skonfigurować samodzielnie). Spowoduje to utworzenie dwóch dodatkowych kursorów w następujących dwóch wierszach:
▮Hello
▮There
▮I am some code
Następnie wpisz I said
. Tekst zostanie dodany w każdym wierszu:
I said ▮Hello
I said ▮There
I said ▮I am some code
Na koniec naciśnij, RETaby wyjść z trybu wielu kursorów i pozostaw punkt na ostatnim kursorze:
I said Hello
I said There
I said ▮I am some code
Oto wideo, które pokazuje, jak to działa.
Inną opcją jest użycie makr, które mogą obsłużyć więcej zadań niż zaznaczenia prostokątne lub wiele kursorów, nawet jeśli jest to nieco bardziej skomplikowane w tym konkretnym przypadku.
Ustaw kursor na początku pierwszego wiersza i naciśnij, F3aby rozpocząć nagrywanie, wstaw tekst, przesuń kursor na początek następnego wiersza i naciśnij, F4aby zatrzymać nagrywanie. Teraz naciśnij F4ponownie, aby powtórzyć makro, C-2 F4powtórzyć je dwukrotnie lub C-0 F4powtórzyć do momentu napotkania błędu (np. Brak linii).
Możesz zainstalować zło i zrobić to na wiele sposobów podobnych do vi - wolę wizualny wybór bloku za pomocą Ctrl+, Vaby zaznaczyć każdą linię, a następnie Shift+, Iaby wstawić, a następnie wpisać tekst, który chcesz wstawić, a następnie nacisnąć, ESCaby wyjść z trybu wstawiania i tekst zostanie dodany do każdej linii. Jest to bardzo podobne do wyboru prostokąta Emacsa, ale kilka mniej naciśnięć klawiszy.
Jest to bardzo podobne do odpowiedzi artagnon, ale replace-regexp
nie jest związane z żadnym kluczem.
Tak więc faktycznie używam, query-replace-regexp
który jest domyślnie związany, C-M-%
a następnie zastępuję ^
go podanym prefiksem, I said
a następnie piszę, !
aby zamienić wszystko bez monitowania.
Jeśli cua-mode
włączyłeś, to:
I said
jako tekst do wstawieniaWolę cua-mode
sposób pracy, niż standardowy prostokąt Emacsa, gdzie odpowiednikiem byłoby:
I said
RET wstawić tekstcua-mode
Oszczędza dwóch naciśnięć klawiszy w porównaniu do standardowej Emacs prostokąta.
Ale dla mnie dodatkową zaletą trybu cua jest to, że mogę dołączyć tekst do prostokąta (osobiście nie wiem, jak dołączyć tekst ze standardowym prostokątem Emacsa). W trybie cua jest to tylko jedno RETnaciśnięcie klawisza, wprowadzone przed I said
.