
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-command
dessa forma.)
- 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. 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 linhaPermitRootLogin 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 comandowhoami
no 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 dizendoUsePrivilegeSeparation yes
; basta alteraryes
parano
e salvar o/etc/ssh/sshd_configarquivo.
Se algo der errado aqui, você pode restaurar o arquivo repetindo a etapa 1.
- Se houver uma configuração de linha não comentada
- Inicie o servidor SSH com o comando
sudo service ssh --full-restart
. - Usando PuTTY (baixaraqui), faça login
localhost
no campo Hostname, todo o resto deixado como padrão. Você será solicitado a inserir seu nome de usuário e senha do Linux. - 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 localhost
dessa 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.
- Abra "Configurações" (clique no
☰
ícone na parte superior). - Clique em “Chaves e Macros”.
- 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. - Selecione "Espaço" no primeiro menu suspenso.
- Selecione “Ctrl” no segundo menu suspenso.Deixe os 2 menus suspensos restantes intactos.
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")
Acima basicamente envia
M-x select-mark-command
string para o emacs.Agora clique em "Salvar configurações".
Deve ficar assim no final:
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!