Bazı emacs işlevlerinde “varsayılan” (son kullanılan) dizeden nasıl kurtulabilirim?


12

Aşağıdaki sorun var: 'Cx rt' (string-rectangle) kullandığımda, seçilen dikdörtgeni değiştirmek için bazı dize girmeniz istenir. Diyelim ki ";;" (dikdörtgeni yorumlamak için). Bu gayet iyi çalışıyor, ama bir dahaki sefere ben aynı işlevi çağırmak ve hiçbir şey (boş dize) ile değiştirmek istiyorum, çünkü "varsayılan" dize ";;" daha önce kullandığımı ve sadece isabet girin komut bu ";;" boş yerine dize. Boş dizeye nasıl ayarlayabilirim?

Benzer sorun bazı arama / değiştirme fonksiyonları ile vardı. Temel olarak, kullandığım son dizeyi hatırladığında ve varsayılan olarak ayarladığında, bunun yerine boş dizeyi nasıl "girerim"?

DÜZENLE :

YoungFrog tarafından belirtilen Kill-dikdörtgen, belirli bir sorunu çözer, ancak aklımda başka bir şey vardı: temelde, emacs girdiğiniz son değeri hatırlar ve sadece enter tuşuna bastığınızda "varsayılan" olarak kullanırsanız, işlevi kullanmadan önce gerçek varsayılanı "varsayılan" olarak kaldırabilir. İşte başka bir örnek:

Yönlü modda, 'Mx rgrep' yaparsanız, sizden 3 giriş ister:

1) Ne aranır: buraya ne girerseniz girin, rgrep'i bir sonraki kullanışınızda varsayılan olarak kullanılır. Birinin işaret ettiği gibi, boş dize aramak için hiçbir mantıklı, bu yüzden bu "varsayılan" değeri temizlemek sanırım gerçekten gerekli değildir sanırım.

2) Sonra hangi dosyaları arayacağınızı soracaktır. Gerçek varsayılan "tüm" dosyalarıdır. * .Txt girip ararsam, bir dahaki sefere rgrep kullandığımda, * .txt "varsayılan" olarak kullanılır. Şimdi bu "varsayılan" * .txt temizlemek ve orijinal varsayılan "tüm", tıpkı temizlemek istediğim gibi dönmek istiyorum ";;" string-rectangle fonksiyonunda "default" gerçek varsayılan, boş dize.

Tabii ki, tüm dosyalar için bu özel sorun muhtemelen *? Ancak bu genel problem potansiyeli, son kullanılan değeri hatırlayan diğer komutlarda kalır.

3) Daha sonra Base dizini isteyecektir, burada sorun yok.

Yani, gördüğüm gibi, emacs bazı komutlarda son kullanılan değeri hatırlayarak bana yardım etmeye çalıştığında (çoğu zaman çok yararlı buluyorum), bu değeri hiç kullanmamışım gibi temizlemenin bir yolu olmalı önce komut.

PS Ben hala emacs için yeniyim, ve her zaman bazı geçici çözüm olduğundan, belki de ihtiyacım olan işlevsellik gerekli değildir?


1
Bunun zor olduğuna inanıyorum, çünkü okuma ve boş dize için varsayılan değerin değişimi çoğu durumda aynı işlevde gerçekleşmez. Bu özel durumda delete-rectanglebir seçenektir.
politza

Seçili dikdörtgene boşluk eklemek istiyorsanız kullanabilirsiniz clear rectangle.
Kaushal Modi

Sadece yorum / rahatsızlığı engellemek istiyorsanız, neden kullanmıyorsunuz comment-dwim? Ayrıca arama için "boş" dize girmek de anlamlı olmaz, ancak değiştirme bölümü için boş bir dize girebilirsiniz. Bir kullanıcı için boş bir dize girmenin gerekli olabileceği daha fazla örnek görmeyi merak ediyorum.
Kaushal Modi

3
Açıklamanıza hızlı bir şekilde baktı, ancak komutun tasarımında bir sorun olabileceği anlaşılıyor string-rectangle. Boş bir dize, olası bir giriş olarak anlamlı olduğunda, varsayılan bir değeri kabul etmekten farklı olarak, girmenin bir yolu olmalıdır. Burada aslında bir tasarım hatası olup olmadığını görmek için komutun (ve bununla rahatsanız kaynak kodunda) dokümana yakından bakın. Orada olduğunu düşünüyorsanız, o zaman lütfen bize bildirin: M-x report-emacs-bug.
Drew

Çünkü 2), kelimenin tam anlamıyla girebilirsiniz all, ki bu biraz farklıdır *: eşleşir .*.
npostavs

Yanıtlar:


3

C-x r t( string-rectangle) Kullanmayın , bunun yerine C-x r k( kill-rectangle) kullanın.


1
Ben sadece verilen özel örneğe cevap verdim çünkü IMO genel davası (başlıktaki soru) hiçbir (genel) cevap kabul etmiyor. Yine de, söz istiyorum C-j(yerine RET) bazı durumlarda kudreti yardım, mesela ido-modu.
YoungFrog

3

Genel durumda, istediğiniz şeye ulaşılamaz. Bunun nedeni, Emacs'daki çeşitli yardımcı programların ve modların okuma tamamlama geçmişlerini tek bir konumda değil, farklı değişkenlerde depolamasıdır. Bu geçmiş değişkenlerini manuel olarak nil( C-x r törneğin, (setq string-rectangle-history nil)) olarak ayarlayabilirsiniz , ancak ölçeklenmez. Ayrıca kodu okumadan geçmiş değişkenlerinin isimlerini bulmak kolay değildir.

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.