Windows 10 linux bash shell ctrl + espaço não define marca no Emacs

Windows 10 linux bash shell ctrl + espaço não define marca no Emacs

No Windows 10 instalei o Subsistema para Linux Bash. Mas estou com um problema com o atalho no Emacs Ctrl+ spaceque não define o ponto de marcação.

O que eu tentei e não ajudou:

  • Tentei desmarcar "ativar atalhos da tecla Ctrl" no menu de propriedades do console do Windows

  • Tentei usar um terminal diferente do ConEmu sem sucesso.

Eu me pergunto se isso está de alguma forma relacionado ao Ubuntu, que tem problemas semelhantes com ctrl + space e o Windows Linux Bash está usando repositórios do Ubuntu.

Responder1

Não hásoluçõespara isso, em termos de fazer o Ctrl-Space passar pelo terminal Bash, no momento em que este livro foi escrito (1º de setembro de 2016) - mas há uma solução alternativa que pode ser suficiente para muitos usuários: use PuTTY para conectar via SSH, o que força manipulação de Ctrl-Espaço. (No modo tty, é impossível distinguir Ctrl-Space de Ctrl-@, porque eles têm o mesmo código de caracteres, mas isso não deve ser um problema, já que por padrão o Emacs está configurado para lidar set-mark-commanddessa forma.)

  1. Instale o servidor OpenSSH com sudo apt-get install openssh-server. Se já estiver instalado, remova-o ( sudo apt-get remove openssh-server) e reinstale-o para redefinir os arquivos de configuração.
  2. Edite o/etc/ssh/sshd_configarquivo (com sudo), como segue:

    • Se houver uma configuração de linha não comentada PermitRootLogin, comente-a. Adicione uma linha PermitRootLogin no.
    • Adicione uma linha AllowUsers USERNAME, substituindo USERNAME pelo seu nome de usuário do Linux (se você não sabe o que é, execute o comando whoamino prompt do Bash).
    • Idealmente, você deve configurar a autenticação sem senha usando chaves SSH, mas como fazer isso está fora do escopo desta questão (existem muitos guias disponíveis; pesquise na web por "ssh-keygen sem senha"). Enquanto isso, adicione ou descomente a linha PasswordAuthentication yes.
    • Definir UsePrivilegeSeparation no; provavelmente você encontrará uma linha no arquivo dizendo UsePrivilegeSeparation yes; basta alterar yespara noe salvar o/etc/ssh/sshd_configarquivo.

    Se algo der errado aqui, você pode restaurar o arquivo repetindo a etapa 1.

  3. Inicie o servidor SSH com o comando sudo service ssh --full-restart.
  4. Usando PuTTY (baixaraqui), faça login localhostno campo Hostname, todo o resto deixado como padrão. Você será solicitado a inserir seu nome de usuário e senha do Linux.
  5. Correr emacs. Ctrl-espaço definirá a marca conforme desejado.

(Observe que as etapas acima irãonão, por si só, tornam seu sistema capaz de aceitar conexões SSH deoutroanfitriões. Para fazer isso, você também terá que alterar as regras do firewall do Windows para permitir a porta TCP de entrada 22.)

Emoutra respostavocê disse, "mas o putty não é um terminal local". Não tenho certeza se você não sabia que poderia usar localhostdessa maneira ou se estava descartando o PuTTY por causa da maior sobrecarga em comparação com um terminal local. Neste último caso, não me preocuparia, uma sessão SSH interativa é uma carga extremamente leve. (É certamentemuitomenos carga do que executar um sistema X Window, então você pode executar uma GUI Emacs ou um xterm!)

A única desvantagem real de executar desta forma em comparação com um terminal direto é que os eventos de colagem são enviados letra por letra, como se você tivesse digitado o conteúdo da área de transferência muito rápido, o que pode causar pares elétricos, recuo, expansão de snippet, etc. fogo. (Colar devenãofaz com que os comandos de acordes de teclas sejam acionados, pois há lógica para detectar uma colagem em andamento e desativar os acordes de teclas até que a colagem seja concluída.)

E também há pelo menos uma grande vantagem sobre o terminal Bash padrão: eventos de mouse são suportados pelo PuTTY de uma forma que o Emacs pode responder, então, ironicamente, você pode mover o ponto com o mouse no PuTTY mesmo que você possa' t com o terminal local.

Responder2

Eu uso o ConEmu. Não existe uma maneira elegante, mas pode ser resolvida usando a macro.

  1. Abra "Configurações" (clique no ícone na parte superior).
  2. Clique em “Chaves e Macros”.
  3. No lado direito, role para baixo até ver as opções "Macro 01" .. "Macro 32" e escolha qualquer uma que esteja disponível (não importa).
    Vamos levarMacro 01para este exemplo.
  4. Selecione "Espaço" no primeiro menu suspenso.
  5. Selecione “Ctrl” no segundo menu suspenso.Deixe os 2 menus suspensos restantes intactos.
  6. Cole abaixo noMacro GUIcampo:

    keys("\e");keys("x");keys("s");keys("e");keys("t");keys("-");keys("m");keys("a");keys("r");keys("k");keys("-");keys("c");keys("o");keys("m");keys("m");keys("a");keys("n");keys("d");keys("\n")
    
  7. Acima basicamente envia M-x select-mark-commandstring para o emacs.Agora clique em "Salvar configurações".


Deve ficar assim no final:

insira a descrição da imagem aqui

Responder3

Este projeto permite usar o MinTTY como um terminal alternativo:https://github.com/mintty/wsltty. É derivado do PuTTY, mas não requer SSH. E como o PuTTY, ele lida perfeitamente com o espaço Ctrl.

Responder4

Este problema agora foi corrigido emWindows 10 compilação 14965. Verificar:

[Environment]::OSVersion

E instale atualizações se ainda não o fez!

informação relacionada