Próbuję zastąpić znak - powiedzmy ;
- nową linią za pomocą replace-string
i / lub replace-regexp
w Emacsie.
Próbowałem następujących poleceń:
M-x
replace-string
RET;
RET\n
Spowoduje to zastąpienie
;
z 2 znaków:\n
.M-x
replace-regex
RET;
RET\n
Powoduje to następujący błąd (pokazany w minibuforze):
Nieprawidłowe użycie `\ 'w tekście zastępczym.
Co jest złego w korzystaniu replace-string
z tego zadania? Czy jest na to inny sposób?
Dzięki.
quote-insert
cytat następnego znaku.C-j
to dosłowny0x0a
kod kontrolny, w przeciwieństwie do tego,Ret
który jest kluczem obok twojego zapytania i wysłania0x0d
. en.wikipedia.org/wiki/C0_and_C1_control_codesC-j
w emacs , natomiastC-m
w vim .Są cztery sposoby na umieszczenie nowej linii w minibuforze.
C-o
C-q C-j
C-q
12
(12 to ósemkowa wartość nowego wiersza)C-x odo głównego okna, zabij nową linię za pomocą C-k, a następnie z C-x opowrotem do minibufora, pociągnij za niąC-y
źródło
C-o
! Jedno uderzenie klawisza mniej w porównaniu doC-q C-j
. Nie myślałem o tym wcześniej.C-o
nie przesuwa punktu po wstawieniu nowego wiersza w minibuforze, więc nadal musisz nacisnąć prawą strzałkę, jeśli chcesz wstawić coś po nowym wierszu w zastępującym ciągu.C-o
wprowadzę nową linię w głównym oknie podczas korzystania z wyszukiwania, natomiast wprowadzę nowąC-q C-j
linię w minibuforze.C-o
działa z zapytaniem - zamień jednak.Nie zapominaj, że zawsze możesz wyciąć i wkleić do minibufora.
Możesz więc po prostu skopiować znak nowej linii (lub dowolny ciąg) ze swojego bufora, a następnie szarpnąć go, gdy pojawi się monit o zastąpienie tekstu.
źródło
Mówiąc dokładniej:
Aby zastąpić znak średnika (;) znakiem nowej linii, wykonaj następujące kroki.
Nieco więcej niż mówi oryginalne wyjaśnienie.
źródło
Przełącz do trybu tekstowego
Podświetl blok do wcięcia
Akapit
Przełącz z powrotem na dowolny tryb.
źródło
inline tylko:
C-M-S-%
(jeśli klucze powiązania nadal są domyślne) niżreplace-string
^Jźródło