Daha sonra GNU Emacs'ta sütun nasıl seçilir?


15

Yıllardır ViM, TextMate ve GNU Emacs kullanıyorum.

Örneğin, düzenlemek istediğim metin

foo
foo
foo

Ve işte elde etmek istediğim metin sonucu

bar foo
bar foo
bar foo

Vim'deyken, ilk satırda ve ilk sütunda "Ctrl v" yi yapabilirim, sonra "2 j" ye basabilir, sonra "i" ye basabilir, sonra "bar" yazabilir, bitti.

Textmate'deyken, aşağı (fare ile) seçerken "Apple Command Option" a basabilir, sonra "bar" yazabilirim.

Ama GNU Emacs 23.1'deyken nasıl yapacağımı bilmiyorum. : ((

EmacsWiki'yi araştırdım ve etrafta dolaştım ama çözümü alamadım. Çözümümü biliyorsanız lütfen bana rehberlik edin. Bunun için minnettar olurum.


@Trey Jackson ve @humble kahve, çözüldü, çok teşekkürler !!
Arie

Yanıtlar:


16

İki seçenek akla geliyor. Birincisi dikdörtgenlerdir (başka bir cevapta belirtildiği gibi). Bunun için açık talimatlar:

  1. ilk satıra git, ilk sütun
  2. C-SPC
  3. son satıra git (ilk sütun)
  4. C-x r t bar SPC RET

Çok güzel dikdörtgen / sütun düzenleme komutları sunan başka bir seçenek de CUA modudur . İşte nasıl kullanılacağını açıklayan bir blog yazısı (açıklama: blogum). CUA modunun gücünü görmek için bu üç dakikalık videoyu izlemeye değer .

CUA modunu aşağıdakilerle entegre ediyorum (çünkü geçici işaret moduna sahip olmamayı tercih ediyorum):

(setq cua-enable-cua-keys nil)
(setq cua-highlight-region-shift-only t) ;; no transient mark mode
(setq cua-toggle-set-mark nil) ;; original set-mark behavior, i.e. no transient-mark-mode
(cua-mode)

11

Emacs-24.4'te, dikdörtgenler için temel destek biraz geliştirildi, bu nedenle C-SPCbunu kullanmak yerine C-x r tşunları yapabilirsiniz:

C-x SPC
down down
C-t bar RET

C-SPCYönteme kıyasla bununla ilgili güzel şeylerden biri, seçtiğiniz dikdörtgen hakkında görsel geri bildirim alacağınızdır. Tabii ki cua-modeyöntem de işe yarıyor (ve benzer şekilde çalışıyor).


ne yazık ki, bana bu gelişmeler hiç yeterli değil: cua-modedaha doğru olsaydı ... Sadece bir şeyden bahsetmek için: içinde cua-mode, bir dikdörtgen vurgulanırken, metin yazabilir ve ekleyebilirsiniz. Geçerli yerleşik emacs "temel destek", vurgu kaybolur (seçim "iptal edildi") ve giriş imleç noktasına eklenir. Bu karşı-sezgisel ve genellikle istediğim değil (ve nasıl cua-mode
alıyorum

@ShinTakezou: Dikdörtgen işaretli mod sayacı sezgisel bulurken cua'nın davranış sayacını sezgisel buluyorum. Neyse ki, seçim olsun. Cua'nın desteğini tercih ederseniz, cua modunu etkinleştirebilirsiniz veya (yalnızca dikdörtgen desteğini istiyorsanız) (global-set-key [?\C-x ?\s] 'cua-rectangle-mark-mode).
Stefan

aslında yaptığım şey: cua-moduna yapışmak. Şöyle çalışır: bir sütunu vurgulayın, metin yazın, bitti. Aksi takdirde: bir sütunu vurgulayın, metin eklemek istediğinizi söyleyin, minibuffer'a metin yazın (yazarken arabellekte göründüğünü göremezsiniz ...), ... tamam. Daha sonra son karakterde bir yazım hatası göreceksiniz ... cua modunda, yazarken görebilirim, silebilirim (tüm eki geri almaz), yeniden düşünün, başka bir karakter ekleyin ... ve dikdörtgen vurgulanmış olarak kalır ihtiyacım olduğu gibi, btw, küçültebilir, büyütebilir, biraz daha metin yazabilir veya o yeni dikdörtgeni "kesebilir" ... bu yüzden bana göre daha sezgisel ve rahat.
ShinTakezou

Sevdiğinize sevindim ;-)
Stefan

BTW, Emacs-25'te, CUA olmayan dikdörtgen C-tişlemi (aka C-x r t), yeni eklenen metnin yazarken önizlemesini de gösterir.
Stefan

2

Emac'larda bu tür sütunlara 'dikdörtgenler' denir. Yani bu , ilgili dokümantasyon sayfası.

Tüm bu komutlar, bölgenin üzerinde çalıştığınız dikdörtgeni içermesini gerektirir. Bu nedenle, dikdörtgenin sol üst karakterindeki işareti ayarlamanız ve bölgeyi dikdörtgenin sağ alt karakterine genişletmeniz gerekir. Daha sonra bulunduğunuz komut M-x string-insert-rectanglesizden dizenin eklenmesini ister.


1

En kısa cevap: ile CUA dikdörtgen modunu etkinleştirin C-RET.

Yani, davanız için,

  1. İlk satıra, ilk sütuna gidin ve C-RETCUA moduna girmek için tuşuna basın
  2. Son satıra, ilk sütuna git ve yaz barSPC
  3. ESCVeya CG ile CUA modundan çık

Daha ayrıntılı bir çözüm ve CUA'ya bağlantılar için @Trey'nin cevabına bakın.


2
Evet, yorum yapmak için çok az itibarım var. Cevabını tekrarlamak istemiyorum, ama CUA belgesinden biraz daha bilgi ekleyeceğim.
Martin

0

Bunun için replace-regexp komutunu kullanabilirsiniz:

  1. işaretini son satıra ayarla -> C SPC ve son satıra git
  2. minibuffer Mx replace-regexp RET yazın (bu Bay için bir anahtar bağlama var)
  3. ^ RET ver
  4. bar yazın ve RET tuşuna basın

Bu, satırın başına çubuk ekleyecektir.

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.