Quali pacchetti sono disponibili per l'editing modale?


13

Quali pacchetti sono disponibili per l'editing modale in Emacs? Cosa usi e perché?

Proviamo a pubblicare un pacchetto per risposta. Propongo di citare i vantaggi e le carenze di ogni pacchetto.


Ecco la mia definizione di modifica modale (non sono riuscito a trovare l'articolo dedicato a Wikipeadia):

Modifica modale - stile di modifica del testo quando l'utente cambia periodicamente di solito tra la "modalità normale" quando i tasti non causano l'inserimento dei propri caratteri ma eseguono varie operazioni sul testo e la "modalità di inserimento" quando i tasti inseriscono caratteri corrispondenti. Potrebbero esserci più modalità, ovviamente. La maggior parte dei redattori moderni non sono modali. Un esempio di editor di testo modale è Vi (Vim).


E cos'è il "montaggio modale"?
Lindydancer,

@Lindydancer, ho aggiunto il mio tentativo di spiegare il concetto alla domanda.
Mark Karpov,

Risposte:


13

evil, La E xtensible VI L ayer per Emacs

Nome discutibile a parte, evilè l'attuale stato dell'arte quando si tratta di vimemulazione in Emacs (e forse altrove, per quella materia). Supporta molte funzionalità che altri pacchetti di emulazione Vim evitano, tra cui:

  • vim textobjects
  • vim registri
  • vim macro della tastiera
  • ex comandi

vantaggi

  • La compatibilità chiave con vimsignifica che non perdi la memoria muscolare quando passi ai sistemi senza Emacs.
  • Molto maturo e ampiamente utilizzato (molti pacchetti di community, ad esempio)
    • Molti pacchetti per vimsono stati portati su evil.
  • vim la grammatica dello stile è modulare e si presta molto bene all'estensione dell'utente
  • evil di per sé è molto estensibile: crea i tuoi oggetti texto, operatori e movimenti!

svantaggi

  • Probabilmente avrai bisogno di un po 'di armeggiare per farlo funzionare bene con altri pacchetti
    • Fortunatamente, evili casi d'uso più comuni sono incredibilmente facili.
  • evilè un sistema molto complesso. L'hacking sul nucleo malvagio può essere piuttosto coinvolto.
  • vimle combinazioni di tasti non sono necessariamente ergonomicamente ottimali. A volte, possono sentirsi un po 'arbitrari quando vengono portati su un sistema diverso.
  • Ospitato su BitBucket (mercuriale) fai di questo quello che vuoi.

Ho trovato l'acronimo male per lo strato vi estensibile per Emacs un po 'di cattivo gusto.
Nome

@Nome non è una mia idea, ma come?
PythonNut,

da un dizionario: male = Profondamente immorale e malevolo, incarnante o associato alle forze del diavolo, dannoso, estremamente spiacevole, ...
Nome

5
@Nome come qualcuno che si è dato il nome "Nome", penso che apprezzeresti l'uso dell'umorismo quando dai un nome alle cose. :-) Nel caso del Male, è ironia (vedi en.wikipedia.org/wiki/Irony#Definitions ). Penso che sia uno dei migliori nomi mai dati ad un pacchetto Emacs, e lo elencherei come un vantaggio!
tarsius,

@PythonNut Penso che l'uso di Bitbucket sia meno un problema (in realtà nessun problema) rispetto all'uso di Mercurial.
tarsius,

11

Esiste god-mode( https://github.com/chrisdone/god-mode ), che utilizza le associazioni di tasti Emacs standard ma elimina la necessità di tenere premuti i modificatori. Quando la modalità god è abilitata, i C-...binding non richiedono alcun modificatore e i M-...binding utilizzano un prefisso anziché un modificatore.

Ad esempio dalla pagina github:

Prima: Cp Ck Cn M- ^) Cj Cy Mr Cx zz M-2 Mg Mg Cx Cs

Dopo: pkng ^) jygr. . 2 ggxs


1
Espandi la tua risposta, quindi non è solo un link.
Mark Karpov,

@Stefan - Mi sono preso la libertà di espandere un po 'la tua risposta. Sentiti libero di cambiare come preferisci.
glucas,

glucas: grazie! @Mark: non sapendo nulla di più sulla modalità god, non ho potuto espandere facilmente la mia risposta. L'ho pubblicato nella speranza che qualcuno come Glucas riempisse gli spazi vuoti.
Stefan,

6

Aggiungendo il mio, grazie @Mark per l'incoraggiamento.

Xah Fly Keys

Progettato da zero per emacs, con l'obiettivo di essere il sistema PIÙ efficiente, da anni di esperienza con la modalità ergoemacs. Le scelte chiave sono per quanto possibile basate sulla scienza, basate su statistiche sulla frequenza chiave e sul punteggio chiave facile da premere. I comandi utilizzati più frequentemente sono associati ai tasti più facili da premere. Altri problemi, come il raggruppamento e il bigram di keybinding, sono considerati anche da 3 anni di esperimento settimanale.

Punti interessanti:

  • Tutti i comandi Cx vengono eseguiti in sequenza da 2 a 3 tasti singoli. In xah-fly-keys, Cx non è mai necessario. M- non è mai necessario neanche.
  • Non è in conflitto con le chiavi di nessun emacs GNU, perché non lega Ctrl o Meta (tranne C-7, C-8, ma non essenziale). Puoi avere xah-fly-keys in modalità insert e usare GNU Emacs come fai normalmente.
  • Considerato anche quale set di comandi risulta nella massima efficienza di modifica. Pertanto, il pacchetto utilizza ~ 80 comandi di modifica personalizzati. (ad esempio, copia copierà la riga corrente se non c'è alcuna selezione. Un solo comando per attivare il maiuscolo / minuscolo, invece delle variazioni ~ 6 di GNU Emacs di upper / lower / region / no-region.)
  • L'implementazione è il più semplice possibile. Nessuna macro, nessun consiglio, nessun rimappatura complessa delle chiavi, vengono utilizzati solo un paio di ganci. (bene o male?!)

svantaggi:

  • Come imparare vi per la prima volta, avrai bisogno di un mese per l'adozione.
  • Non molto conosciuto Appena rilasciato per uso pubblico questo mese.
  • Attualmente supporta solo il layout Dvorak.
  • Nessun diagramma chiave conveniente per l'apprendimento (ancora).
  • Per le modalità principali, è ancora necessario utilizzare Cc. (quindi, potresti usare altri pacchetti come god-mode o hydra per risolvere questo problema.)

Sono l'autore, quindi tieni presente che potrei essere inconsciamente di parte. Sentiti libero di commentare o correggere.


Hai qualche possibilità di supportare altri layout di tastiera? So che ErgoEmacs lo fa. Potrei provarlo, ma la barra del passaggio a Dvorak è troppo alta per un esperimento casuale.
PythonNut,

@PythonNut sì, massima priorità. Spero tra una settimana. La cosa principale è capire come voglio implementarlo.
Xah Lee,

Ah. Molto bello. Lo darò un vortice quando esce.
PythonNut,

6

Modalka deve essere l'ultimo figlio del blocco di modifica modale. Il progetto github sembra essere vecchio di 10 giorni. Non ho abbastanza tempo di utilizzo per commentare o valutare, ma ecco come è descritto:

Questo è un kit di costruzione per aiutare a passare alla modifica modale in Emacs. L'obiettivo principale del pacchetto è rendere l'editing modale in Emacs il più naturale e nativo possibile. Non c'è hack, nessun caso d'angolo, nessuna emulazione - basta iniziare a modificare modalmente nel modo desiderato.

La documentazione anche confronta e contrappone Modalka con altre soluzioni modali comuni, come evil, god-mode, boon, etc.


4

Vantaggio

Boon è uno dei pacchetti meno noti per l'editing modale. Non emula Vi (o Vim) ma fornisce un layout originale ottimizzato per il layout della tastiera Colemak.

Vantaggi e principi di progettazione

  • Allocazione spaziale in primo luogo, seconda in mnemonica: l'allocazione dei tasti ai comandi si basa in modo prioritario sulla posizione dei tasti sulla tastiera. Qualunque cosa sia stampata sul cappuccio chiave è una preoccupazione secondaria.

  • Facile rotolamento delle dita: la combinazione comune dovrebbe essere alternanza sinistra / destra o tiri semplici con una mano.

  • Utilizzo della riga iniziale e delle dita forti per i comandi più utilizzati

  • Navigazione semplice: molti comandi sono legati alla navigazione. Questo facilita lo spostamento. Poiché i movimenti raddoppiano come definizioni di regione, rende i comandi di manipolazione (operatori) più potenti.

svantaggi

  • Devi imparare di nuovo come interagire con l'editor poiché la raccolta di primitive di editing e il loro posizionamento sulla tastiera sono piuttosto unici.

1
Sembra un po 'strano che a Boon non importi davvero cosa c'è sulla chiave, ma impone che le chiavi siano Colemak. Sembra che dovrebbe essere agnostico.
PythonNut,

@PythonNut, immagino che le persone debbano fare riferimento ai tasti in qualche modo :-) Penso che sia del tutto possibile farlo funzionare con altri layout.
Mark Karpov,

Boon ha ora il supporto QWERTY e QWERTZ, consultare github.com/jyp/boon#installation . Ho aggiornato la risposta per riflettere questo.
raju-bitter

3

Ergoemacs supporta anche l'editing modale. Non emula vi, ma utilizza il tasto Alt per i comandi più utilizzati. Ad esempio, il cursore mobile è Alt più T. rovesciata a destra (su QWERTY è Alt+ jper left, Alt+ lper destra, Alt+ iper upe Alt+ kper down). L'eliminazione di char o word avviene Altcon i tasti della riga home a sinistra. Le scelte dei tasti si basano sulla frequenza dei comandi e sulla posizione dei tasti per facilitare la pressione.

  • Per avviare la modifica modale, l'utente può premere f6.
    • Una volta f6premuto, i tasti utilizzati più di frequente non richiedono più una combinazione di tasti alt.
    • Pertanto, su QWERTY, jè left, jè right, iè upe knon funziona).
  • La modalità di comando modale si esce premendo return, f6o escape.

Oltre al paradigma tradizionale modale, c'è un paradigma modale quasi che permette qualsiasi C-xo C-ccombinazione di tasti per essere raggiunti senza usare modificatori (come dio-mode).

  • Il quasi-modale viene avviato con QWERTY apps fper C-ccon il tasto di controllo premuto e QWERTY apps dper C-x.
  • Durante il completamento di questa sequenza di tasti, il appstasto cambierà il tipo di modificatori che si presume siano premuti.
  • Una volta chiamato il comando, ergoemacs riprende la modalità di modifica.
  • Durante qualsiasi sequenza di tasti è anche possibile modificare i tipi di tasti che vengono tenuti premuti. Questo è semplicemente premendo appsnuovamente il tasto.

Oltre a modificare i tasti di comando, ergoemacs-mode ti consente di cambiare le cose sulla sequenza di tasti durante la digitazione:

  • È possibile modificare l'argomento prefisso nel mezzo di una sequenza di tasti premendo f2.
  • La pressione backspaceriprende l'ultimo tasto premuto.
  • Apps consente di modificare i tasti premuti durante qualsiasi sequenza di tasti.

ergoemacs-mode tenta anche di rispettare qualsiasi cosa la modalità faccia ai tasti fondamentali. Ad esempio, se la modalità org definisce una chiave speciale per next-line, ergoemacs usa questo comando per Alt+ kquando in modalità org.

vantaggi:

  • Parte di GNU Emacs, in ELPA.
  • Supporta chiavi "universali" per Windows / Linux. es. Apri ( C-o), Chiudi ( C-w), Seleziona tutto ( C-a), Copia ( C-c), Taglia ( C-x), Incolla ( C-v), ecc.
  • Abbastanza popolare.
  • Supporta molti layout, inclusi Qwerty, dvorak, colemak, bepo e molti altri layout internazionali che regolano i tasti per assicurarsi che siano nella riga home (Mi in QWERTY sarebbe Mu in colemak).
  • Mostra un'immagine del layout della tastiera in emacs descrivendo il tema.
  • Le chiavi sono personalizzabili tramite un sistema di estensione, creando un tema.
  • È possibile impostare qualsiasi keymap modale arbitraria (non ancora documentata).

svantaggi:

  • Stabile è lento all'avvio.
    • Nel master instabile, il primo avvio è lento (~ 5 secondi per l'installazione minima), (~ 20 secondi per il mio avvio)
    • Il secondo secondo avvio è molto più rapido (per la mia complessa configurazione sono ~ 4 secondi).
    • Questo perché ergoemacs-mode sta cambiando e memorizzando nella cache ogni keymap attiva in emacs. Al secondo avvio, queste impostazioni vengono salvate.
  • Codice complesso.

Vedi https://github.com/ergoemacs/ergoemacs-mode


2

Un'altra opzione semi-modale è Hydra:

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

Secondo il sito web

Immagina di aver legato Cc j e Cc k nella tua configurazione. Volete chiamare Cc j e Cc k in una sequenza (arbitraria). Hydra ti consente di:

  • Associare le proprie funzioni in modo tale che premere Cc jjkk3j5k equivale a premere Cc j Cc j Cc k Cc k M-3 Cc j M-5 Cc k. Qualsiasi chiave diversa da j o k esce da questo stato.

  • Assegna un suggerimento personalizzato a questo gruppo di funzioni, in modo da sapere subito dopo aver premuto Cc che puoi seguire con j o k.

Non l'ho usato ma sembra interessante.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.