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.