Emacs'ta bir karakteri yeni satırla nasıl değiştirebilirim?


285

Emacs ve / veya ;kullanarak bir karakteri - demek - yeni bir çizgi ile değiştirmeye çalışıyorum .replace-stringreplace-regexp

Aşağıdaki komutları denedim:

  • M-x replace-string RET ; RET \n

    Bu yerini alacak ;2 karakterlerle: \n.

  • M-x replace-regex RET ; RET \n

    Bu, aşağıdaki hataya neden olur (mini karıştırıcıda gösterilir):

    Yedek metinde geçersiz \ 'kullanımı.

replace-stringBu görev için kullanmanın nesi yanlış ? Bunu yapmanın başka bir yolu var mı?

Teşekkürler.

Yanıtlar:


427

M-x replace-string RET ; RET C-q C-j.

  • C-qiçin quoted-insert,

  • C-j yeni bir satırdır.

Şerefe!


3
Cq gerçekten bir quote-insertsonraki karakteri tırnak.
— Joe Casadonte

2
Ben "alıntı-insert" gibi, "alıntı" yerine aslında "alıntı" olduğuna inanıyorum. En azından 22.1 sürümünde olduğu gibi.
— Bryan Oakley

8
C-jgerçek bir 0x0akontrol koduna karşılık Ret, teklifinizin yanındaki ve gönderdiği anahtardır 0x0d. en.wikipedia.org/wiki/C0_and_C1_control_codes
— Jonathan Arkell

2
Vim kullanıcıları için Not kullanırken C-jde Emacs ederken, C-miçinde vim .
— Alpha TAN

2
@JonathanArkell Bu nasıl çalıştığının bir açıklaması , ama neden değil . Editör içinde Ret 0x0a üretir, o zaman neden alıntılanan ekte 0x0d üretmeli? Bu hiç mantıklı değil. (Sadece dahili klavye kodu tarihsel nedenlerden dolayı 0x0d olduğundan? Her yerde anahtar haritalar kullanıyoruz, neden burada mantıklı geliyor?)
— vog

74

Minibuffer'a bir satırsonu koymanın dört yolu var.

  1. C-o

  2. C-q C-j

  3. C-q 12 (12, yeni satırın sekizlik değeridir)

  4. C-x oana pencereye bir satırsonu öldürün C-k, sonra C-x ominibüse geri dönün,C-y


10
Bahsetmek için +1 C-o! İle karşılaştırıldığında bir tane daha az tuş vuruşu C-q C-j. Bunu daha önce kullanmayı düşünmemiştim.
— itsjeyd

Sürüm 4 için teşekkürler! Co ve Cq ribaundunuz varsa faydalıdır.
— Joachim K

Çok teşekkürler. Co'nun neden çalıştığını ve Cq Cj'nin neden çalışmadığını açıklayabilir misiniz?
— Christian Madsen

C-oyeni satırı minibuffer'a ekledikten sonra noktayı hareket ettirmez, bu nedenle değiştirme dizesindeki yeni satırdan sonra bir şey eklemek istiyorsanız yine de sağ ok tuşuna basmanız gerekir.
— Robin Green

Emacs 25.2.2 sürümümde, C-oarama kullanılırken ana pencereye yeni satır girecek, minibuffer'a yeni satır C-q C-jgirecektir. C-osorgu ile çalışır - olsa değiştirin.
— TC Proctor

25

Her zaman kesip minibuffer'a yapıştırabileceğinizi unutmayın.

Bu nedenle, tamponunuzdan yeni satır karakteri (veya herhangi bir dize) kopyalayabilir, ardından değiştirme metni istendiğinde onu sorabilirsiniz.


2
Tuş bağını bilmediğim karakterler için gerçekten iyi bir fikir.
— Lei

Ah ah ! çok basit !
— Jérémy Pouyet

8

Daha açık bir şekilde:

Noktalı virgül karakterini (;) yeni satırla değiştirmek için aşağıdaki adımları izleyin.

  1. değiştirmek istediğiniz metni içeren tamponun sol üst köşesindeki imleci bulun
  2. Mx replace-string yazın ve RETURN tuşuna basın
  3. mini buffer şöyle bir şey görüntüler: Dizeyi değiştir (varsayılan ^ ->):
  4. Değiştirmek istediğiniz karakteri yazın. Bu durumda, ; ve RETURN tuşuna bas
  5. mini buffer şöyle bir şey görüntüler: string; ile:
  6. Şimdi Cq Cj'yi yürütün
  7. Tüm noktalı virgül örnekleri bir satırsonu ile değiştirilecek (imleç konumundan tamponun sonuna kadar görünecek)

Orijinal açıklamadan biraz daha fazla.


2

Metin moduna geçme

M-x text-mode

Girinti oluşturmak için bloğu vurgulayın

çentik

C+M \

İstediğiniz moda geri dönün.


0

yalnızca satır içi: C-M-S-%(ciltleme anahtarları hala varsayılansa) replace-string^J

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.