Jakie pakiety są dostępne do edycji modalnej?

13

Jakie pakiety są dostępne do edycji modalnej w Emacsie? Czego używasz i dlaczego?

Spróbujmy wysłać jedną paczkę na odpowiedź. Proponuję wymienić zalety i wady każdego pakietu.


Oto moja definicja edycji modalnej (nie mogłem znaleźć dedykowanego artykułu Wikipeadia):

Edycja modalna - styl edycji tekstu, gdy użytkownik okresowo przełącza się zwykle między „trybem normalnym”, gdy klawisze nie powodują wstawiania znaków, ale wykonują różne operacje na tekście i „trybem wstawiania”, gdy klawisze wstawiają odpowiednie znaki. Oczywiście może być więcej trybów. Większość współczesnych edytorów nie jest modalna. Przykładem modalnego edytora tekstu jest Vi (Vim).

Mark Karpov
źródło
Czym jest „edycja modalna”?
Lindydancer
@Lindydancer, dodałem moją próbę wyjaśnienia koncepcji do pytania.
Mark Karpov,

Odpowiedzi:

13

evilThe e xtensible VI l Ayer Emacsowi

Pomijając wątpliwą nazwę, eviljest obecny stan techniki, jeśli chodzi o vimemulację w Emacsie (i być może gdziekolwiek indziej). Obsługuje wiele funkcji, których unikają inne pakiety emulacji Vima, w tym:

  • vim obiekty tekstowe
  • vim rejestry
  • vim makra klawiatury
  • ex polecenia

Zalety

  • Kluczowa kompatybilność z vimoznacza , że nie tracisz pamięci mięśniowej podczas przełączania na systemy bez Emacsa.
  • Bardzo dojrzałe i szeroko stosowane (na przykład wiele pakietów społeczności)
    • Wiele pakietów dla vimzostało przeniesionych evil.
  • vim gramatyka stylu jest modułowa i nadaje się bardzo dobrze do rozszerzenia użytkownika
  • evil sam w sobie jest bardzo rozszerzalny: twórz własne obiekty tekstowe, operatory i ruchy!

Niedogodności

  • Prawdopodobnie będzie wymagało trochę majstrowania, aby gra była przyjemna z innymi pakietami
    • Na szczęście evilsprawia , że najczęstsze przypadki użycia są niezwykle łatwe.
  • evilto bardzo złożony system. Hakowanie złego rdzenia może być dość zaangażowane.
  • vimskróty klawiszowe niekoniecznie są ergonomicznie optymalne. Czasami mogą czuć się trochę arbitralni po przeniesieniu do innego systemu.
  • Hostowane na BitBucket (mercurial) zrób to, co chcesz.
PythonNut
źródło
Akronim zło dla rozszerzalnej warstwy vi dla Emacsa jest trochę złym gustem.
Imię
@Name nie mój pomysł, ale jak to możliwe?
PythonNut
ze słownika: zło = głęboko niemoralne i wrogie, ucieleśniające lub powiązane z siłami diabła, szkodliwe, wyjątkowo nieprzyjemne, ...
Imię
5
@ Imię jako ktoś, kto nadał sobie imię „Imię”, pomyślałbym, że docenisz użycie humoru przy nazywaniu rzeczy. :-) W przypadku Zła to ironia (patrz en.wikipedia.org/wiki/Irony#Definitions ). Myślę, że to jedna z najlepszych nazw, jakie kiedykolwiek nadano pakietowi Emacsa, i wymienię to jako zaletę!
Tarsius
@PythonNut Myślę, że korzystanie z Bitbucket jest mniejszym problemem (w rzeczywistości nie stanowi żadnego problemu) niż używanie Mercurial.
Tarsjusz
11

Istnieje god-mode( https://github.com/chrisdone/god-mode ), który wykorzystuje standardowe powiązania klawiszy Emacsa, ale eliminuje potrzebę przytrzymywania modyfikatorów. Gdy tryb C-...boski jest włączony, wiązania nie wymagają modyfikatora, a M-...powiązania używają przedrostka zamiast modyfikatora.

Jako przykład ze strony github:

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

Po: pkng ^) jygr. . 2 ggxs

Stefan
źródło
1
Rozwiń swoją odpowiedź, aby nie był to tylko link.
Mark Karpov,
@Stefan - Pozwoliłem sobie trochę rozszerzyć twoją odpowiedź. Zmień dowolnie, jak chcesz.
glucas
glucas: Dzięki! @ Mark: nie wiedząc nic więcej o trybie bożym, nie mogłem z łatwością rozszerzyć mojej odpowiedzi. Napisałem to w nadziei, że ktoś taki jak Glucas wypełni puste pola.
Stefan
6

Modalka musi być najnowszym dzieckiem w bloku edycji modalnej. Wygląda na to, że projekt github ma 10 dni. Nie mam wystarczająco dużo czasu na komentowanie lub ocenę, ale oto jak to opisano:

Jest to zestaw budowlany, który pomaga przejść do edycji modalnej w Emacsie. Głównym celem pakietu jest uczynienie edycji modalnej w Emacsie możliwie naturalnym i rodzimym. Nie ma włamania, przypadków narożnych, emulacji - po prostu rozpocznij edycję modalnie tak, jak chcesz.

Dokumentacja również porównuje i kontrastuje Modalka z innych wspólnych rozwiązań, takich modalnych evil, god-mode, boon, etc.

Użytkownik Emacsa
źródło
6

Dodanie własnego, dziękuję @Mark za zachętę.

Xah Fly Keys

Zaprojektowany od podstaw dla emacsa, z zamiarem bycia NAJBARDZIEJ wydajnym systemem, z wieloletniego doświadczenia w trybie ergoemacs. Kluczowe wybory są oparte na nauce w jak największym stopniu, na podstawie statystyk częstotliwości klucza i łatwego do naciśnięcia wyniku. Najczęściej używane polecenia są przypisane do klawiszy najłatwiejszych do naciśnięcia. Inne kwestie, takie jak grupowanie i bigram związany z kluczami, są również brane pod uwagę na podstawie 3-tygodniowego eksperymentu.

Ciekawe punkty:

  • Wszystkie polecenia Cx są wykonywane po sekwencji od 2 do 3 pojedynczych klawiszy. W xah-fly-keys Cx nigdy nie jest konieczne. M- nigdy nie jest konieczne.
  • Nie powoduje konfliktu z kluczami GNU emacs, ponieważ nie wiąże Ctrl ani Meta (oprócz C-7, C-8, ale nie jest niezbędny). Możesz mieć włączone klawisze xah-fly w trybie wstawiania i używać GNU Emacs w zwykły sposób.
  • Rozważono również, jaki zestaw poleceń skutkuje maksymalną wydajnością edycji. Tak więc pakiet używa ~ 80 niestandardowych poleceń edycji. (na przykład kopiowanie skopiuje bieżącą linię, jeśli nie ma zaznaczenia. Jedno pojedyncze polecenie, aby przełączyć wielkość liter, zamiast ~ 6 wariantów GNU Emacs: górny / dolny / region / brak regionu).
  • Wdrożenie jest tak proste, jak to możliwe. Bez makr, bez porad, bez skomplikowanego mapowania kluczy, zastosowano tylko kilka haczyków. (dobry czy zły?!)
  • Obsługuje ponad 10 układów klawiatury, w tym: QWERTY, dvorak, colemak, colemak-mod-dh, qwerty-abnt, qwertz, azerty, programer-dvorak, workman, norman.

Niedogodności:

  • Podobnie jak nauka vi po raz pierwszy, będziesz potrzebować jednego miesiąca na adopcję.
  • Mniej znany niż tryb zła.
  • W przypadku głównych trybów nadal musisz używać DW. (więc możesz użyć innych pakietów, takich jak God-Mode lub Hydra, aby rozwiązać ten problem).

Jestem autorem, więc ostrzegam, że mogę być nieświadomie stronniczy. Skomentuj lub popraw.

Xah Lee
źródło
Czy jest szansa, że ​​będziesz obsługiwał inne układy klawiatury? Wiem, że robi to ErgoEmacs. Mogę spróbować, ale pasek przejścia na Dvorak jest zbyt wysoki, by przeprowadzić przypadkowy eksperyment.
PythonNut,
@PythonNut tak, najwyższy priorytet. Mam nadzieję, że za tydzień. Najważniejsze, aby dowiedzieć się, jak chcę to zaimplementować.
Xah Lee
Ach Bardzo fajny. Zrobię to, gdy wyjdzie.
PythonNut,
4

Dar

Boon jest jednym z mniej znanych pakietów do edycji modalnej. Nie emuluje Vi (ani Vima), ale zapewnia oryginalny układ zoptymalizowany pod kątem układu klawiatury Colemak.

Zalety i zasady projektowania

  • Najpierw alokacja przestrzenna, a po drugie mnemonika: alokacja klawiszy do poleceń zależy w pierwszej kolejności od lokalizacji klawiszy na klawiaturze. Cokolwiek jest wydrukowane na kluczu, jest sprawą drugorzędną.

  • Łatwe rolki palców: powszechną kombinacją powinny być albo naprzemiennie lewe / prawe ręce albo łatwe rolki jedną ręką.

  • Użycie wiersza głównego i mocnych palców do najczęściej używanych poleceń

  • Łatwa nawigacja: wiele poleceń jest powiązanych z nawigacją. Ułatwia to poruszanie się. Ponieważ ruchy podwajają się jako definicje regionu, sprawia, że ​​polecenia manipulacyjne (operatory) są silniejsze.

Niedogodności

  • Musisz ponownie nauczyć się, jak współpracować z edytorem, ponieważ kolekcja operacji podstawowych i ich umiejscowienie na klawiaturze są dość unikalne.
Mark Karpov
źródło
1
Brzmi trochę dziwnie, że Boon tak naprawdę nie dba o to, co jest na klawiszu, ale wymusza, aby kluczami był Colemak. Wygląda na to, że powinien być niezależny od układu.
PythonNut,
@PythonNut, myślę, że ludzie muszą jakoś odwoływać się do klawiszy :-) Myślę, że jest całkowicie możliwe, aby działało z innymi układami.
Mark Karpov
Boon ma teraz wsparcie QWERTY i QWERTZ, patrz github.com/jyp/boon#installation . Zaktualizowałem odpowiedź, aby to odzwierciedlić.
raju-gorzki
3

Ergoemacs obsługuje również edycję modalną. Nie emuluje vi, ale używa klawisza Alt do najczęściej używanych poleceń. Na przykład, przesuwającym się kursorem jest Alt plus odwrócony prawy T. (w QWERTY jest to Alt+ jfor left, Alt+ lfor right, Alt+ ifor upi Alt+ kfor down). Usuwanie znaku lub słowa odbywa się za Altpomocą klawiszy lewego rzędu domu. Klawisze są wybierane na podstawie częstotliwości poleceń i pozycji klawiszy w celu ułatwienia naciśnięcia.

  • Aby rozpocząć edycję modalną, użytkownik może nacisnąć f6.
    • Po f6naciśnięciu najczęściej używane klawisze nie wymagają już kombinacji klawiszy Alt.
    • Dlatego w QWERTY jjest left, jjest right, ijest upi kjest w dół).
  • Tryb modalnego polecenia wyłącza się naciskając return, f6lub escape.

Obok tradycyjnego modalnej paradygmatu jest quasi modalne paradygmat umożliwia dowolny C-xlub C-ckombinację klawiszy być osiągnięty bez użycia jakichkolwiek modyfikatorów (jak chrzestnej trybu).

  • Tryb quasi-modalny rozpoczyna się od QWERTY apps ffor C-cz wciśniętym klawiszem sterującym i QWERTY apps dfor C-x.
  • Podczas wykonywania tej sekwencji appsklawiszy klawisz zmieni typ modyfikatorów, które zakłada się, że zostaną wciśnięte.
  • Po wywołaniu polecenia ergoemacs wznawia tryb edycji.
  • Podczas dowolnej sekwencji klawiszy możesz także zmieniać typy przytrzymywanych klawiszy. Można to zrobić, naciskając appsponownie klawisz.

Oprócz zmiany klawiszy poleceń, tryb ergoemacs pozwala zmieniać rzeczy o sekwencji klawiszy podczas pisania:

  • Możesz edytować argument prefiksu w środku sekwencji klawiszy, naciskając f2.
  • Naciśnięcie backspacepowoduje cofnięcie ostatniego naciśniętego klawisza.
  • Apps umożliwia zmianę klawiszy przytrzymanych podczas dowolnej sekwencji klawiszy.

Tryb ergoemacs próbuje także uszanować wszystko, co tryb robi kluczowym kluczom. Na przykład, jeśli tryb org definiuje specjalny klucz dla next-line, ergoemacs używa tego polecenia dla Alt+ kw trybie org.

Zalety:

  • Część GNU Emacs, w ELPA.
  • Obsługuje „uniwersalne” klucze Windows / Linux od razu po wyjęciu z pudełka. np. Otwórz ( C-o), Zamknij ( C-w), Wybierz wszystko ( C-a), Kopiuj ( C-c), Wytnij ( C-x), Wklej ( C-v) itp.
  • Dość popularny.
  • Obsługuje wiele układów, w tym Qwerty, dvorak, colemak, bepo i wiele innych układów międzynarodowych, które dostosowują klawisze, aby upewnić się, że znajdują się w głównym rzędzie (Mi w QWERTY będzie Mu w colemak).
  • Wyświetla obraz układu klawiatury w emacsie, opisując motyw.
  • Klucze można dostosowywać za pomocą systemu rozszerzeń, tworząc motyw.
  • Możesz skonfigurować dowolną modalną mapę klawiszy (jeszcze nieudokumentowaną).

Niedogodności:

  • Podczas uruchamiania stabilny jest wolny.
    • W niestabilnym systemie głównym pierwsze uruchomienie jest wolne (~ 5 sekund dla minimalnej konfiguracji), (~ 20 sekund dla mojego uruchomienia)
    • Drugi sekundowy start jest znacznie szybszy (dla mojej złożonej konfiguracji jest to ~ 4 sekundy).
    • Wynika to z faktu, że tryb ergoemacs zmienia się i buforuje każdą aktywną mapę klawiszy w emacsie. Przy drugim uruchomieniu ustawienia te zostaną zapisane.
  • Złożony kod.

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

Matthew Fidler
źródło
2

Inną półmodalną opcją jest Hydra:

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

Według strony internetowej

Wyobraź sobie, że związałeś Cc j i Cc k w swojej konfiguracji. Chcesz wywoływać Ccj i Cck w jakiejś (dowolnej) sekwencji. Hydra umożliwia:

  • Powiąż swoje funkcje w taki sposób, że naciśnięcie Cc jjkk3j5k jest równoważne naciśnięciu Cc j Cc j Cc k Cc k M-3 Cc j M-5 Cc k. Każdy klucz inny niż j lub k wychodzi z tego stanu.

  • Przypisz niestandardową wskazówkę do tej grupy funkcji, aby natychmiast po naciśnięciu klawisza Cc wiedziałeś, że możesz śledzić za pomocą j lub k.

Nie użyłem tego, ale wydaje się interesujące.

Matthew Fidler
źródło