Her satıra bir ön ek nasıl eklenir?


35

Aşağıdaki kod bende:

Hello
There
I am some code

Ve önüne gibi bir kod eklemek istiyorum:

I said Hello
I said There
I said I am some code

Peki her satıra nasıl ön ek eklerim?

Yanıtlar:


47

İle M-x string-rectanglebağlı olan bir ön ek ekleyebilirsiniz C-x r t. Bu, dikdörtgen seçimlerle çalışan bir dizi komutun parçasıdır ; bu, dikdörtgenin her satırına metin ekler.

İlk satırın başındaki işareti ayarlayarak başlayın ve imleci önek eklemek istediğiniz son satırın ilk karakterine getirin :

*Hello
 There
▮I am some code

Ardından kullanın C-x r t, önekinizi ( I said) girin ve tuşuna basın RET. Bu, dikdörtgendeki her satıra metni ekler:

I said Hello
I said There
I said I am some code

İmlecinizi işaretinizle aynı sütuna hizalamazsanız, dikdörtgenin o kısmının üzerine yazacaktır:

*Hello
 There
 I am▮ some code

aynı komutla sonuçlanır:

I said o
I said e
I said  some code

3
iyi cevap rozeti kazanan ikinci
kişisin

Bir alternatif kullanmaktır M-x string-insert-rectangle. Çok benzer, ancak seçimin her satırının başlangıcına string-insert-rectangle ekler , oysa string-rectangle yerine geçer , bu nedenle herhangi bir şeyin üzerine yazmak istemezseniz, seçiminizle ilgili daha kesin olmalısınız.
Jeff Clites,

32

Her satıra bir imleç koymak için çoklu imleç modunu kullanabilirsiniz . Ardından, yazdığınız herhangi bir metin her satıra eklenecektir.

Kod parçasının başındaki nokta ile başlarsınız:

▮Hello
 There
 I am some code

Sonra C->iki kere vur . (Bu önerilen anahtar bağlamadır; kendiniz ayarlamanız gerekir.) Bu, aşağıdaki iki satırda iki ekstra imleç oluşturur:

▮Hello
▮There
▮I am some code

Sonra yazın I said. Metin her satıra eklenecek:

I said ▮Hello
I said ▮There
I said ▮I am some code

Sonunda RET, çoklu imleç modundan çıkmak ve son imleçte nokta bırakmak için basın:

I said Hello
I said There
I said ▮I am some code

İşte nasıl çalıştığını gösteren bir video.


26

Şahsen ben tercih ederim replace-regexp("^" yerine "dedim" ile).


12

Diğer bir seçenek, bu özel durum için biraz tuhaf olsa bile, dikdörtgen seçimlerden veya çoklu imleçlerden daha fazla görevi yerine getirebilen makroları kullanmaktır.

İmleci ilk satırın başına getirin ve F3kaydetmeye başlamak için tuşuna basın, metni yerleştirin, imleci bir sonraki satırın başına getirin ve F4kaydı durdurmak için tuşuna basın. Şimdi F4makroyu C-2 F4tekrar etmek, iki kez tekrarlamak veya C-0 F4bir hatayla (satırların tükenmesi gibi) karşılaşılana kadar tekrar etmek için tekrar basın.


9

Kötülüğü kurabilir ve herhangi bir sayıda vi benzeri yolla yapabilirsiniz - Her satırı işaretlemek için Ctrl+ Vve sonra eklemek istediğiniz metni eklemek ve sonra yazmak için Shift+ Ive sonradan ESCekleme modundan çıkmak için vurmak istediğiniz görsel blok seçimini tercih ederim . Her satıra metin hazırlanacaktır. Bu, emacs dikdörtgen seçimlerine çok benzer, ancak birkaç daha az tuşa basabilirsiniz.


7

Bu, Artagnon'un cevabına çok benzer, ancak replace-regexpherhangi bir anahtara bağlı değildir.

Bu yüzden, aslında query-replace-regexpvarsayılan olarak bağlı olan C-M-%ve daha sonra ^verilen önek ile yerine kullanıyorum I saidve sonra !artık sormadan hepsini değiştirmek için yazın .


4

Eğer varsa cua-modeetkin, o zaman:

  • C-a Satırın başına gitmek
  • C-RET dikdörtgeni başlatmak
  • (aşağı tuşu) üçüncü satıra geçmek için iki kez,
  • I said eklenecek metin olarak
  • C-RET dikdörtgeni bitirmek için

cua-modeEşdeğerin olacağı Emacs standart dikdörtgenine kıyasla çalışma yolunu tercih ederim :

  • C-a Satırın başına gitmek
  • C-SPC dikdörtgeni başlatmak
  • (aşağı tuşu) üçüncü satıra geçmek için iki kez,
  • C-x r t I said RET metin eklemek için

cua-modeStandart Emacs dikdörtgen göre iki temel presler kaydeder.

Ancak benim için, cua modunun ek avantajı , dikdörtgene metin ekleyebilmemdir (kişisel olarak standart Emacs dikdörtgeni ile metin eklemeyi bilmiyorum ). Cua modunda, RETönce basılmış, sadece bir tuşa basılır I said.

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.