Quais pacotes estão disponíveis para edição modal?

13

Quais pacotes estão disponíveis para edição modal no Emacs? O que você usa e por quê?

Vamos tentar postar um pacote por resposta. Proponho mencionar vantagens e deficiências de cada pacote.


Aqui está minha definição de edição modal (não consegui encontrar o artigo dedicado da Wikipediaeadia):

Edição modal - estilo de edição de texto quando o usuário alterna periodicamente geralmente entre o "modo normal" quando as teclas não causam a inserção de seus caracteres, mas executa várias operações no texto e o "modo de inserção" quando as teclas inserem os caracteres correspondentes. Pode haver mais modos, é claro. A maioria dos editores modernos não é modal. Um exemplo de editor de texto modal é o Vi (Vim).

Mark Karpov
fonte
E o que é "edição modal"?
precisa saber é o seguinte
@ Lindydancer, adicionei minha tentativa de explicar o conceito à pergunta.
22815 Mark Karpov #

Respostas:

13

evil, O E xtensible VI G Ayer para Emacs

Nome questionável à parte, evilé o estado da arte atual quando se trata de vimemulação no Emacs (e possivelmente em qualquer outro lugar, nesse caso). Ele suporta muitos recursos que outros pacotes de emulação do Vim evitam, incluindo:

  • vim textobjects
  • vim registra
  • vim macros do teclado
  • ex comandos

Vantagens

  • A principal compatibilidade com vimsignifica que você não perde sua memória muscular ao mudar para sistemas sem o Emacs.
  • Muito maduro e amplamente utilizado (muitos pacotes da comunidade, por exemplo)
    • Muitos pacotes vimforam portados para evil.
  • vim gramática de estilo é modular e se presta muito bem à extensão de usuário
  • evil em si é muito extensível: crie seus próprios objetos de texto, operadores e movimentos!

Desvantagens

  • Provavelmente vai exigir algumas brincadeiras para torná-lo agradável com outros pacotes
    • Felizmente, eviltorna os casos de uso mais comuns ridiculamente fáceis.
  • evilé um sistema muito complexo. Hackear o núcleo maligno pode se tornar bastante envolvido.
  • vimas combinações de teclas não são necessariamente ergonomicamente ideais. Às vezes, eles podem se sentir um pouco arbitrários quando transportados para um sistema diferente.
  • Hospedado em BitBucket (mercurial) faça disso o que quiser.
PythonNut
fonte
Achei o acrônimo evil para vi layer extensível do Emacs um pouco de mau gosto.
Name
@Name não é minha ideia, mas como?
precisa saber é o seguinte
de um dicionário: evil = Profundamente imoral e malévolo, corporificando ou associado às forças do diabo, prejudicial, extremamente desagradável, ...
Nome
5
@Nome como alguém que se deu o nome "Nome", eu acho que você apreciaria o uso de humor ao nomear coisas. :-) No caso do mal, é ironia (consulte en.wikipedia.org/wiki/Irony#Definitions ). Eu acho que é um dos melhores nomes já dados a um pacote Emacs, e listaria isso como uma vantagem!
tarsius 16/09/15
@ PythonNut Acho que o uso do Bitbucket é menos problemático (na verdade, não é problema nenhum) do que o uso do Mercurial.
tarsius 16/09/15
11

Existe god-mode( https://github.com/chrisdone/god-mode ), que usa as ligações de teclas padrão do Emacs, mas elimina a necessidade de manter os modificadores pressionados. Quando o modo deus está ativado, as C-...ligações não requerem modificador e as M-...ligações usam um prefixo em vez de um modificador.

Como um exemplo da página do github:

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

Depois: pkng ^) jygr. . 2 ggxs

Stefan
fonte
1
Expanda sua resposta, para que não seja apenas um link.
Mark Karpov
@ Stefan - Tomei a liberdade de expandir um pouco sua resposta. Sinta-se livre para mudar como quiser.
glucas
glucas: Obrigado! @ Mark: não sabendo mais nada sobre o modo deus, não consegui facilmente expandir minha resposta. Postei na esperança de que alguém como glucas preenchesse os espaços em branco.
Stefan
6

Adicionando o meu, obrigado @Mark pelo incentivo.

Xah Fly Keys

Projetado desde o início para o emacs, com o objetivo de ser o sistema MAIS eficiente, com anos de experiência no modo ergoemacs. As escolhas principais são baseadas na ciência, tanto quanto possível, com base em estatísticas de frequência e pontuação fáceis de pressionar. Os comandos usados ​​com mais freqüência são mapeados para as teclas mais fáceis de pressionar. Outros problemas, como agrupamento e bigram de ligação de teclas, também são considerados a partir de 3 anos de experiência semanal.

Pontos interessantes:

  • Todos os comandos Cx são feitos por sequência de 2 a 3 teclas únicas. Nas teclas xah-fly-keys, Cx nunca é necessário. M- nunca é necessário também.
  • Não entra em conflito com nenhuma chave do GNU emacs, porque não liga Ctrl ou Meta (exceto C-7, C-8, mas não essencial). Você pode ativar o xah-fly-keys no modo de inserção e usar o GNU Emacs como normalmente.
  • Também foi considerado o conjunto de comandos que resulta em eficiência máxima de edição. Portanto, o pacote usa ~ 80 comandos de edição personalizados. (por exemplo, copiar copiará a linha atual se não houver seleção. Um único comando para alternar entre maiúsculas e minúsculas, em vez das ~ 6 variações de superior / inferior / região / sem região do GNU Emacs).
  • A implementação é o mais simples possível. Nenhuma macro, nenhum conselho, nenhum remapeamento complexo de chaves, apenas alguns ganchos são usados. (bom ou mal?!)

Desvantagens:

  • Como aprender vi pela primeira vez, você precisará de um mês para adotar.
  • Não é bem conhecido. Lançado recentemente para uso público este mês.
  • Atualmente, suporta apenas o layout Dvorak.
  • Ainda não existe um diagrama-chave conveniente para o aprendizado.
  • Para os principais modos, você ainda precisa usar o Cc. (portanto, você pode usar outros pacotes, como god-mode ou hydra, para resolver esse problema.)

Sou o autor, por isso esteja avisado de que posso ser inconscientemente tendencioso. Sinta-se livre para comentar ou corrigir.

Xah Lee
fonte
Alguma chance de você suportar outros layouts de teclado? Eu sei que o ErgoEmacs faz. Posso tentar, mas a barra de mudança para Dvorak é muito alta para um experimento casual.
precisa saber é o seguinte
@PythonNut sim, prioridade máxima. Espero em uma semana. O principal é descobrir como eu quero implementá-lo.
Xah Lee 16/09
Ah Muito legal. Vou dar uma volta quando sair.
precisa saber é o seguinte
6

Modalka deve ser o garoto mais novo no bloco de edição modal. O projeto github parece ter 10 dias. Não tenho tempo de uso suficiente para comentar ou avaliar, mas eis como está descrito:

Este é um kit de construção para ajudar a mudar para a edição modal no Emacs. O principal objetivo do pacote é tornar a edição modal no Emacs o mais natural e nativa possível. Não há truques, casos de canto, emulações - basta começar a editar do modo que desejar.

A documentação também compara e contrasta Modalka com outras soluções modais comuns, como evil, god-mode, boon, etc.

Usuário Emacs
fonte
4

Boon

Boon é um dos pacotes menos conhecidos para edição modal. Ele não emula o Vi (ou o Vim), mas fornece o layout original otimizado para o layout do teclado Colemak.

Vantagens e princípios de design

  • Alocação espacial em primeiro lugar, mnemônica em segundo: a alocação de teclas para comandos é baseada em prioridade nos locais das teclas no teclado. Tudo o que está impresso na tampa da chave é uma preocupação secundária.

  • Rolagem fácil com os dedos: a combinação comum deve ser alternada à esquerda / direita ou rolagem fácil com uma mão.

  • Uso da linha de casa e dedos fortes para os comandos mais usados

  • Navegação fácil: muitos comandos estão vinculados à navegação. Isso facilita a movimentação. Como os movimentos duplicam como definições de região, torna os comandos de manipulação (operadores) mais poderosos.

Desvantagens

  • Você precisa reaprender a interagir com o editor, pois a coleção de primitivas de edição e sua colocação no teclado são bastante únicas.
Mark Karpov
fonte
1
Parece um pouco estranho que Boon realmente não se importe com o que está na chave, mas reforça que as chaves sejam Colemak. Parece que o layout deve ser agnóstico.
precisa saber é o seguinte
@ PythonNut, acho que as pessoas precisam se referir às chaves de alguma forma :-) Acho que é perfeitamente possível fazê-lo funcionar com outros layouts.
22415 Mark Karpov # 1618
O Boon agora possui suporte para QWERTY e QWERTZ, consulte github.com/jyp/boon#installation . Eu atualizei a resposta para refletir isso.
precisa
3

O Ergoemacs também suporta edição modal. Ele não emula o vi, mas usa a tecla Alt para os comandos mais usados. Por exemplo, mover o cursor é Alt mais T. inverso à direita (no QWERTY é Alt+ jpara left, Alt+ lpara direita, Alt+ ipara upe Alt+ kpara down). A exclusão de caracteres ou palavras é feita Altcom as teclas da linha inicial do lado esquerdo. As opções de teclas são baseadas na frequência de comando e na posição da tecla para facilitar a impressão.

  • Para iniciar a edição modal, o usuário pode pressionar f6.
    • Uma vez f6pressionadas, as teclas mais usadas não exigem mais uma combinação de teclas alt.
    • Portanto, em QWERTY, jé left, jé right, ié upe kestá inativo).
  • O modo de comando modal é encerrado pressionando return, f6ou escape.

Além do paradigma tradicional modal, existe um paradigma modal quase que permite que qualquer C-xou C-ccombinação de teclas para ser atingido sem a utilização de quaisquer modificadores (como em modo deus).

  • O quase-modal é iniciado com o QWERTY apps fpara C-ccom a tecla de controle pressionada e o QWERTY apps dpara C-x.
  • Ao concluir esta sequência de teclas, a appstecla altera o tipo de modificadores que se supõe serem pressionados.
  • Depois que o comando foi chamado, o ergoemacs retoma o modo de edição.
  • Durante qualquer sequência de teclas, você também pode alterar os tipos de teclas que são mantidas pressionadas. Isso é simplesmente pressionando a appstecla novamente.

Além de alterar as teclas de comando, o ergoemacs-mode permite alterar as coisas sobre a sequência de teclas enquanto você a digita:

  • Você pode editar o argumento do prefixo no meio de uma sequência de teclas pressionando f2.
  • Pressionar backspacerecupera a última tecla pressionada.
  • Apps permite alterar as teclas pressionadas durante qualquer sequência de teclas.

O ergoemacs-mode também tenta respeitar tudo o que o modo faz com as teclas fundamentais. Por exemplo, se o modo org define uma chave especial para next-line, o ergoemacs usa esse comando para Alt+ kquando está no modo org.

Vantagens:

  • Parte do GNU Emacs, no ELPA.
  • Suporta chaves "universais" do Windows / Linux prontas para uso. por exemplo, Abrir ( C-o), Fechar ( C-w), Selecionar tudo ( C-a), Copiar ( C-c), Cortar ( C-x), Colar ( C-v), etc.
  • Bastante popular.
  • Oferece suporte a muitos layouts, incluindo Qwerty, dvorak, colemak, bepo e muitos outros layouts internacionais que ajustam as teclas para garantir que estejam na linha inicial (Mi no QWERTY seria Mu no colemak).
  • Mostra uma imagem do layout do teclado no emacs, descrevendo o tema.
  • As teclas são personalizáveis ​​por meio de um sistema de extensão, criando um tema.
  • Você pode configurar qualquer mapa de teclas modal arbitrário (ainda não documentado).

Desvantagens:

  • Estável é lento na inicialização.
    • No mestre instável, a primeira inicialização é lenta (~ 5 segundos para configuração mínima), (~ 20 segundos para minha inicialização)
    • A segunda segunda inicialização é muito mais rápida (para minha configuração complexa é de ~ 4 segundos).
    • Isso ocorre porque o modo ergoemacs está mudando e armazenando em cache todos os mapas de teclas ativos no emacs. Na segunda inicialização, essas configurações são salvas.
  • Código complexo.

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

Matthew Fidler
fonte
2

Outra opção semi-modal é o Hydra:

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

De acordo com o site

Imagine que você vinculou Cc j e Cc k na sua configuração. Você deseja chamar Cc j e Cc k em alguma sequência (arbitrária). Hydra permite que você:

  • Ligue suas funções de forma que pressionar Cc jjkk3j5k seja equivalente a pressionar Cc j Cc j Cc k Cc k M-3 Cc j M-5 Cc k. Qualquer chave que não seja j ou k sai desse estado.

  • Atribua uma dica personalizada a esse grupo de funções, para que você saiba imediatamente após pressionar Cc que pode seguir com j ou k.

Eu não usei, mas parece interessante.

Matthew Fidler
fonte