Modsal düzenleme için hangi paketler mevcuttur?


13

Emacs'ta modsal düzenleme için hangi paketler var? Ne kullanıyorsun ve neden?

Her cevap için bir paket göndermeye çalışalım. Her paketin avantajlarını ve eksikliklerini belirtmeyi öneriyorum.


Modsal düzenleme tanımım (özel Wikipeadia makalesini bulamadım):

Kipli düzenleme - tuşlar karakterlerinin eklenmesine neden olmadığında, kullanıcı genellikle periyodik olarak "normal mod" arasında değiştiğinde metin düzenleme tarzıdır, ancak tuşlar karşılık gelen karakterleri eklediğinde metinde çeşitli işlemler ve "ekleme modu" gerçekleştirir. Elbette daha fazla mod olabilir. Modern editörlerin çoğu modal değildir. Kalıcı metin düzenleyici örneği Vi (Vim) 'dir.


Peki "kalıcı düzenleme" nedir?
Lindydancer

@Lindydancer, konsepti soruya açıklama girişimimi ekledim.
Mark Karpov

Yanıtlar:


13

evil, E xtensible VI L Emacs ayer

Şüpheli isim bir yana, Emacs (ve muhtemelen başka bir yerde, bu konuda) emülasyonu evilsöz konusu olduğunda mevcut teknolojidir vim. Aşağıdakiler de dahil olmak üzere diğer Vim emülasyon paketlerinden kaçınan birçok özelliği destekler:

  • vim textobjects
  • vim kayıtlar
  • vim klavye makroları
  • ex komutlar

Avantajları

  • Anahtar uyumluluğu, Emacs içermeyen sistemlere geçerken kas belleğinizi kaybetmemenizvim anlamına gelir .
  • Çok olgun ve yaygın olarak kullanılanlar (örneğin birçok topluluk paketi)
    • İçin birçok paket vimtaşındı evil.
  • vim stil gramer modülerdir ve kullanıcı uzantısına çok uygundur
  • evil kendisi çok genişletilebilir: kendi textobjects, operatörleri ve hareketleri yapmak!

Dezavantajları

  • Muhtemelen diğer paketlerle güzel oynamak için biraz uğraşmak gerekecektir
    • Neyse ki, evilen yaygın kullanım durumlarını gülünç kolaylaştırır.
  • evilçok karmaşık bir sistemdir. Kötü çekirdeğe saldırmak oldukça karmaşık olabilir.
  • vimtuş bağlamalarının ergonomik olarak optimum olması gerekmez. Bazen, farklı bir sisteme taşındıklarında biraz keyfi hissedebilirler.
  • BitBucket (mercurial) üzerinde barındırılan bu ne yapacaksınız.

Emacs için genişletilebilir vi katmanının kısaltmasını kötü buldum .
İsim

@ Fikrim değil, ama nasıl?
PythonNut 16:15

bir sözlükten: kötü = Derin ahlaksız ve kötü niyetli, somutlaştırmak veya şeytanın güçleri ile ilişkili, zararlı, son derece tatsız, ...
Adı

5
@ Adı ona "Adı" adını veren biri olarak, bir şeyleri adlandırırken mizahın kullanımını takdir edeceğinizi düşünürdüm. :-) Kötülük durumunda, ironiktir (bkz. En.wikipedia.org/wiki/Irony#Definitions ). Bence bir Emacs paketine verilen en iyi isimlerden biri ve bunu bir avantaj olarak listeliyorum!
tarsius

@PythonNut Bitbucket kullanımının Mercurial kullanımından daha az sorun olduğunu (aslında hiç sorun değil) düşünüyorum.
tarsius

11

Standart Emacs anahtar bağlamaları kullanan ancak değiştiricilerin basılı tutulması gereğini ortadan kaldıran god-mode( https://github.com/chrisdone/god-mode ) vardır . Tanrı modu etkinleştirildiğinde C-...bağlamalar değiştirici gerektirmez ve M-...bağlamalar değiştirici yerine bir önek kullanır.

Github sayfasından bir örnek olarak:

Önceki: Cp Ck Cn M- ^) Cj Cy Bay Cx zz M-2 Mg Mg Cx Cs

Sonra: pkng ^) jygr. . 2 ggxs


1
Lütfen yanıtınızı genişletin, bu sadece bir bağlantı değil.
Mark Karpov

@Stefan - Cevabınızı biraz genişletme özgürlüğünü aldım. İstediğiniz gibi değiştirmekten çekinmeyin.
glucas

glucas: Teşekkürler! @ Mark: Tanrı modu hakkında daha fazla bir şey bilmeden, cevabımı kolayca genişletemedim. Bunu glucas gibi birinin boşlukları doldurması umuduyla ilan ettim.
Stefan

6

Modalka , modal düzenleme bloğundaki en yeni çocuk olmalı. Github projesi 10 günlük gibi görünüyor. Yorum yapmak veya değerlendirmek için yeterli kullanım sürem yok, ancak şu şekilde açıklanmaktadır:

Bu, Emacs'ta modsal düzenlemeye geçmeye yardımcı olan bir yapı kitidir. Paketin ana amacı, Emacs'ta mümkün olduğunca doğal ve doğal olarak modal düzenleme yapmaktır. Kesmek yok, köşe vakası yok, öykünme yok - sadece istediğiniz şekilde modally düzenlemeye başlayın.

Belgeler de karşılaştırır ve tezat gibi diğer yaygın mod çözeltileri ile Modalka evil, god-mode, boonvs.


6

Kendi eklediğim için teşekkürler @Mark için teşvik.

Xah Sinek Tuşları

Ergoemacs modu ile yılların deneyiminden ÇOK verimli sistem olma hedefi ile emacs için sıfırdan tasarlandı. Anahtar seçimler, anahtar sıklığı istatistiklerine ve basması kolay skorlara dayanarak mümkün olduğunca bilim temelli. En sık kullanılan komutlar, basması en kolay tuşlarla eşlenir. Gruplama ve tuş bağlama bigramı gibi diğer konular da 3 yıllık haftalık deneylerden dikkate alınır.

İlginç Noktalar:

  • Tüm Cx komutları 2 ila 3 tek tuş dizisiyle yapılır. Xah-fly tuşlarında, Cx asla gerekli değildir. M- hiçbir zaman gerekli değildir.
  • Herhangi bir GNU emacs anahtarıyla çakışmaz, çünkü Ctrl veya Meta'yı bağlamaz (C-7, C-8 hariç, ancak gerekli değildir). Ekleme modunda xah-fly tuşlarını açabilir ve GNU Emacs'ı normal şekilde kullanabilirsiniz.
  • Ayrıca hangi komut kümesinin maksimum düzenleme verimliliği sağladığını da göz önünde bulundurun. Bu nedenle, paket ~ 80 özel düzenleme komutu kullanır. (örneğin, seçim yoksa kopya geçerli satırı kopyalar. GNU Emacs'ın üst / alt / bölge / bölge olmayan ~ 6 varyasyonu yerine harf durumunu değiştirmek için tek bir komut.)
  • Uygulama mümkün olduğunca basittir. Makro yok, tavsiye yok, anahtarların karmaşık bir şekilde yeniden eşlenmesi yok, sadece birkaç kanca kullanılıyor. (İyi ya da kötü?!)
  • QWERTY, dvorak, colemak, colemak-mod-dh, qwerty-abnt, qwertz, azerty, programcı-dvorak, işçi, norman dahil olmak üzere 10'dan fazla klavye düzenini destekler.

Dezavantajları:

  • Vi'yi ilk kez öğrenmek gibi, benimsemek için bir aya ihtiyacınız olacak.
  • Kötü moddan daha az bilinir.
  • Büyük modlar için hala Cc'yi kullanmanız gerekir. (bu nedenle, bu sorunu çözmek için tanrı modu veya hydra gibi başka paketler kullanabilirsiniz.)

Ben yazarım, bu yüzden bilinçsizce önyargılı olabileceğim konusunda uyarınız. Yorum yapmaktan veya düzeltmekten çekinmeyin.


Diğer klavye düzenlerini destekleme şansınız var mı? ErgoEmacs'ın biliyorum. Deneyebilirim, ama Dvorak'a geçme çubuğu sıradan bir deney için çok yüksek.
PythonNut

@PythonNut evet, birinci öncelik. Umarım bir hafta içinde. Önemli olan nasıl uygulamak istediğimi rakam.
Xah Lee

Ah. Çok havalı. Ortaya çıktığında bir koşuşturma vereceğim.
PythonNut

4

Nimet

Boon, modsal düzenleme için daha az bilinen paketlerden biridir. Vi (veya Vim) öykünmez, ancak Colemak klavye düzeni için optimize edilmiş orijinal düzen sağlar.

Avantajlar ve Tasarım İlkeleri

  • Önce uzay tahsisi, ikinci anımsatıcılar: tuşların komutlara tahsisi öncelikli olarak klavyedeki tuşların konumlarına dayanır. Tuş başlığına basılan her şey ikincil bir husustur.

  • Kolay parmak ruloları: ortak kombinasyon, sol / sağ el değişimi veya kolay tek elle rulolar olmalıdır.

  • En çok kullanılan komutlar için giriş sırası ve güçlü parmakların kullanımı

  • Kolay gezinme: birçok komut gezinmeye bağlıdır. Bu hareket etmeyi kolaylaştırır. Hareketler bölge tanımları olarak ikiye katlandığından, manipülasyon komutlarını (operatörler) daha güçlü hale getirir.

Dezavantajları

  • Düzenleme ilkeleri koleksiyonu ve klavyedeki yerleşimleri oldukça benzersiz olduğundan, düzenleyiciyle nasıl etkileşime gireceğinizi yeniden öğrenmeniz gerekir.

1
Boon'un anahtarda ne olduğunu umursamaması biraz tuhaf geliyor, ancak anahtarların Colemak olmasını zorunlu kılıyor. Görünüşe göre düzen agnostik olmalı.
PythonNut

@PythonNut, sanırım insanların bir şekilde anahtarlara başvurması gerekiyor :-) Sanırım diğer düzenlerle çalışmasını sağlamak tamamen mümkün.
Mark Karpov

Boon'un şimdi QWERTY ve QWERTZ desteği var, bkz. Github.com/jyp/boon#installation . Cevabı yansıtacak şekilde güncelledim.
19:14

3

Ergoemacs aynı zamanda kalıcı düzenlemeyi de destekler. Vi'yi taklit etmez, ancak en sık kullanılan komutlar için Alt tuşunu kullanır. Örneğin, hareket eden imleç Alt artı sağ ters ters T'dir (QWERTY'de sağ için Alt+ jiçin left, Alt+ liçin Alt+ , + iiçin upve Alt+ kiçin down). Karakter veya kelimeyi silmek Altsoldaki giriş satırı tuşlarıyla yapılır. Tuş seçenekleri, komut sıklığına ve tuşun basma kolaylığı konumuna bağlıdır.

  • Modsal düzenlemeyi başlatmak için kullanıcı düğmesine basabilir f6.
    • Bir kez f6basıldığında, en sık kullanılan tuşlar artık bir alt tuş kombinasyonu gerektirmez.
    • Bu nedenle, QWERTY, jis left, jis right, iis upve kdown).
  • Modal komut modu basarak çıkıldığında return, f6ya escape.

Geleneksel modal paradigmaya ek olarak, herhangi bir C-xveya C-canahtar kombinasyonuna herhangi bir değiştirici (tanrı modu gibi) kullanmadan ulaşılmasına izin veren yarı modal bir paradigma vardır .

  • Yarı-kalıcı QWERTY ile başlatılır apps fiçin C-ckumanda tuşunu basılı olan ve QWERTY apps diçin C-x.
  • Bu tuş dizisi tamamlanırken, appstuş basılı olduğu varsayılan değiştiricilerin türünü değiştirir.
  • Komut çağrıldığında, ergoemacs düzenleme moduna geri döner.
  • Herhangi bir tuş dizisi sırasında, basılı tutulan tuş türlerini de değiştirebilirsiniz. Bu sadece appstuşa tekrar basmaktır .

Komut tuşlarını değiştirmeye ek olarak, ergoemacs-mode, tuş dizisi ile ilgili şeyleri yazarken değiştirmenize izin verir:

  • Bir tuş dizisinin ortasında önek bağımsız değişkenini tuşuna basarak düzenleyebilirsiniz f2.
  • Basmak backspacebasılan son tuşu geri götürür.
  • Apps herhangi bir tuş dizisi sırasında basılı tutulan tuşları değiştirmenizi sağlar.

ergoemacs-mode ayrıca modun temel tuşlara yaptığı her şeye saygı duymaya çalışır. Örneğin, kuruluş modu için özel bir anahtar tanımlarsa next-line, ergoemacs kuruluş modundayken bu komutu Alt+ için kullanır k.

Avantajları:

  • ELPA'daki GNU Emacs'ın bir parçası.
  • Kutudan çıkar çıkmaz “evrensel” Windows / Linux anahtarlarını destekler. ör. Aç ( C-o), Kapat ( C-w), Tümünü seç ( C-a), Kopyala ( C-c), Kes ( C-x), Yapıştır ( C-v) vb.
  • Oldukça popüler.
  • Qwerty, dvorak, colemak, bepo ve ana sırada olduklarından emin olmak için tuşları ayarlayan diğer birçok uluslararası yerleşimi destekler (QWERTY'deki Mi, colemak'ta Mu olur).
  • Temayı açıklayarak klavye düzeninizin bir görüntüsünü emac'larda gösterir.
  • Anahtarlar, bir tema oluşturarak bir uzantı sistemi aracılığıyla özelleştirilebilir.
  • Herhangi bir rasgele mod tuş eşlemesi ayarlayabilirsiniz (henüz belgelenmemiştir).

Dezavantajları:

  • Başlangıçta kararlı.
    • Kararsız master'da ilk başlatma yavaştır (minimum kurulum için ~ 5 saniye), (başlatmam için ~ 20 saniye)
    • İkinci saniye başlangıcı çok daha hızlı (karmaşık kurulumum için ~ 4 saniye).
    • Bunun nedeni, ergoemacs modunun değişmesi ve emaclardaki her etkin tuş eşlemesinin önbelleğe alınmasıdır. İkinci açılışta bu ayarlar kaydedilir.
  • Karmaşık kod.

Bkz. Https://github.com/ergoemacs/ergoemacs-mode


2

Başka bir yarı mod seçeneği Hydra'dır:

https://github.com/abo-abo/hydra

Web sitesine göre

Yapılandırmanızda Cc j ve Cc k bağladığınızı düşünün. Cc j ve Cc k'yi bazı (rastgele) sırayla çağırmak istersiniz. Hydra şunları yapmanızı sağlar:

  • Fonksiyonlarınızı Cc jjkk3j5k tuşuna basmanın Cc j Cc j Cc k Cc k M-3 Cc j M-5 Cc k tuşuna basmaya eşdeğer olacak şekilde bağlayın. J veya k dışında herhangi bir anahtar bu durumdan çıkar.

  • Cc tuşuna bastıktan hemen sonra j veya k ile takip edebileceğinizi bilmek için bu işlev grubuna özel bir ipucu atayın.

Kullanmadım ama ilginç görünüyor.

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.