Pytanie Jak zamienić postać na znak nowej linii w Emacs?


Próbuję zastąpić postać - powiedz ; - z nową linią za pomocą replace-string i / lub replace-regexp w Emacs.

Próbowałem następujące polecenia:

  • M-x  replace-string  GNIĆ  ;  GNIĆ  \n 

    To zastąpi ; z 2 znakami: \n.

  • M-x  replace-regex  GNIĆ  ;  GNIĆ  \n

    Powoduje to następujący błąd (pokazany w minibuforze):

    Niepoprawne użycie `\ 'w tekście zastępczym.

Co jest nie tak z używaniem replace-string do tego zadania? Czy jest jakiś inny sposób na zrobienie tego?

Dzięki.


235
2018-03-04 23:50


pochodzenie




Odpowiedzi:


M-x  replace-string  GNIĆ  ;  GNIĆ  C-q C-j.

  • C-q dla quoted-insert,

  • C-j to nowa linia.

Twoje zdrowie!


353
2018-03-04 23:52



C-q jest naprawdę quote-insert który cytuje następny znak. - Joe Casadonte
Uważam, że jest to raczej "cytowany" niż "cytat", jak w "cytowanym-wstawieniu". Przynajmniej tak jest w wersji 22.1. - Bryan Oakley
Więc dlaczego tak nie jest Ret zamiast pracować C-j po C-q? - Cactus
C-j jest dosłowny 0x0a kod sterujący, kontra Ret który jest kluczem obok twojego cytatu i wysyła 0x0d. en.wikipedia.org/wiki/C0_and_C1_control_codes - Jonathan Arkell
Uwaga dla użytkowników vim, używając C-j w emacs, podczas C-m w krzepkość. - Alpha TAN


Istnieją cztery sposoby, w jakie znalazłem wprowadzenie nowego linii do minibufora.

  1. Współ

  2. C-q C-j

  3. C-q  12 (12 to wartość ósemkowa nowej linii)

  4. C-x o do głównego okna, zabij znak nowej linii C-k, następnie C-x o wróć do minibufora, szarpnij nim C-y


57
2018-03-16 21:58



+1 za wzmiankę C-o! Jedno mniej kluczowe uderzenie w porównaniu do C-q C-j. Nie pomyślał o użyciu tego wcześniej. - itsjeyd
Dzięki za wersję 4! Przydatne, jeśli masz odbicia C-o i C-q. - Joachim W
Wielkie dzięki. Czy możesz wyjaśnić, dlaczego działa C-o, a C-q C-j nie? - Christian Madsen
C-q C-j powinno działać dobrze. C-o jest po prostu krótszy. - slipmthgoose
C-o nie przesuwa punktu po wstawieniu nowej linii do minibufora, więc nadal musisz nacisnąć klawisz strzałki w prawo, jeśli chcesz wstawić coś za znakiem nowej linii zastępczej. - Robin Green


Nie zapominaj, że zawsze możesz wyciąć i wkleić do minibufora.

Więc możesz po prostu skopiować znak nowego wiersza (lub dowolny ciąg) z bufora, a następnie pociągnąć go, gdy pojawi się monit o tekst zastępczy.


22
2018-03-05 12:02



To naprawdę dobry pomysł dla postaci, których nie znam. - Lei


Bardziej jednoznacznie:

Aby zamienić znak średnika (;) na znak nowej linii, wykonaj poniższe kroki.

  1. zlokalizuj kursor w lewym górnym rogu bufora zawierającego tekst, który chcesz zmienić
  2. Wpisz m-x replace-string i naciśnij RETURN
  3. mini-bufor wyświetli coś takiego: Zamień ciąg (domyślnie ^ ->):
  4. Wpisz znak, który chcesz zastąpić. W tym przypadku, ; i naciśnij RETURN
  5. mini-bufor wyświetli coś takiego: strunowy ; z:
  6. Teraz wykonaj C-q C-j
  7. Wszystkie wystąpienia średnika zostaną zastąpione znakiem nowej linii (od miejsca, w którym znajduje się kursor, na końcu pojawi się bufor)

Trochę więcej niż pierwotne wyjaśnienie.


7
2017-08-01 22:25





Przełącz na tryb tekstowy

M-x text-mode

Wyróżnij blok do wcięcia

Akapit

C+M \

Przełącz się z powrotem do dowolnego trybu ..


2
2018-02-18 04:24