Não há soluções para isso, em termos de fazer o Ctrl-Space passar pelo terminal Bash, no momento em que este texto foi escrito (1 de setembro de 2016) - mas há uma solução alternativa que pode ser suficiente para muitos usuários: use o PuTTY para conectar via SSH, o que força o manuseio do Ctrl-Space. (No modo tty, é impossível distinguir Ctrl-Space de Ctrl- @, porque eles são o mesmo código de caractere, mas isso não deve ser um problema, já que por padrão o Emacs está configurado para manipular set-mark-command
dessa maneira.)
- 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 restaurar os arquivos de configuração. -
Edite o arquivo / etc / ssh / sshd_config (com sudo), da seguinte forma:
- Se houver uma configuração de linha descomentada
PermitRootLogin
, comente. 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 é isso, execute o comandowhoami
em seu 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 (há muitos guias disponíveis; pesquise na web por "passwordless ssh-keygen"). Enquanto isso, adicione ou descomente a linha
PasswordAuthentication yes
. - Defina
UsePrivilegeSeparation no
; provavelmente você encontrará uma linha no arquivo dizendoUsePrivilegeSeparation yes
; basta alterar oyes
parano
e salvar o arquivo / etc / ssh / sshd_config .
Se algo der errado aqui, você poderá restaurar o arquivo repetindo a etapa 1.
- Se houver uma configuração de linha descomentada
- Inicialize o servidor SSH com o comando
sudo service ssh --full-restart
. - Usando o PuTTY (faça o download aqui ), faça o login com
localhost
no Nome do host, tudo o mais deixado como padrão. Você será solicitado a digitar seu nome de usuário do Linux e sua senha. - Executar
emacs
. Ctrl-space irá definir a marca como desejado.
(Note que os passos acima não , por si só, tornam o seu sistema capaz de aceitar conexões SSH de outros hosts. Para fazer isso, você também terá que altere as regras de firewall do Windows para permitir a porta TCP de entrada 22.)
Em outra resposta você disse, "mas a putty não é um terminal local." Não tenho certeza se você não estava ciente de que poderia usar localhost
dessa maneira, ou se estava descartando o PuTTY devido à sobrecarga maior em relação a um terminal local. Se este último, eu não me preocupo, uma sessão SSH interativa é uma carga extremamente leve. (É certamente muito menos carga do que rodar um sistema X Window, então você pode rodar um GUI Emacs ou um xterm!)
A única desvantagem real em rodar desta forma em relação a um terminal direto é que os eventos paste são enviados letra a letra, como se você digitasse o conteúdo da área de transferência muito rápido, o que pode causar pares elétricos, recuos, expansão de snippets etc para disparar. (Colar deve não fazer com que os comandos de acordes sejam disparados, já que há lógica para detectar uma pasta em andamento e desabilitar acordes de tecla até que a colagem seja concluída.)
E há pelo menos uma grande vantagem sobre o terminal Bash padrão: os eventos de mouse são suportados pelo PuTTY em uma forma que o Emacs pode responder, então, ironicamente, você pode mover o ponto com o mouse no PuTTY mesmo se você não pode com o terminal local.