No hay soluciones para esto, en términos de hacer que Ctrl-Space pase a través del terminal Bash, en el momento de escribir este artículo (1 de septiembre de 2016), pero hay una solución que puede ser suficiente para muchos usuarios: use PuTTY para conectarse a través de SSH, que obliga a manejar Ctrl-Space. (En el modo tty, es imposible distinguir Ctrl-Space de Ctrl- @, porque son el mismo código de caracteres, pero eso no debería ser un problema, ya que por defecto Emacs está configurado para manejar de set-mark-command
esa manera).
- Instale el servidor OpenSSH con
sudo apt-get install openssh-server
. Si ya estaba instalado, elimínelo ( sudo apt-get remove openssh-server
) y luego vuelva a instalarlo para restablecer los archivos de configuración.
Edite el archivo / etc / ssh / sshd_config (con sudo), de la siguiente manera:
- Si hay una configuración de línea
PermitRootLogin
no comentada, coméntela. Agrega una línea PermitRootLogin no
.
- Agregue una línea
AllowUsers USERNAME
, reemplazando USERNAME con su nombre de usuario de Linux (si no sabe qué es eso, ejecute el comando whoami
en el indicador Bash).
- Idealmente, debe configurar la autenticación sin contraseña utilizando claves SSH, pero cómo hacerlo está fuera del alcance de esta pregunta (hay muchas guías disponibles; busque en la web "ssh-keygen sin contraseña"). Mientras tanto, agregue o descomente la línea
PasswordAuthentication yes
.
- Conjunto
UsePrivilegeSeparation no
; probablemente encontrará una línea en el archivo que dice UsePrivilegeSeparation yes
; simplemente cambie yes
a no
y guarde el archivo / etc / ssh / sshd_config .
Si algo sale mal aquí, puede restaurar el archivo repitiendo el paso 1.
- Inicie el servidor SSH con el comando
sudo service ssh --full-restart
.
- Usando PuTTY (descargue aquí ), inicie sesión
localhost
en el campo Nombre de host, todo lo demás queda como predeterminado. Se le pedirá que ingrese su nombre de usuario de Linux y su contraseña.
- Ejecutar
emacs
. Ctrl-space establecerá la marca como se desee.
(Tenga en cuenta que los pasos anteriores no , por sí mismos, hacer que su sistema capaz de aceptar conexiones SSH desde otros ordenadores. Para hacer eso, usted también tendrá que cambiar las reglas de su firewall de Windows para permitir el puerto TCP entrante 22.)
En otra respuesta dijiste, "pero la masilla no es una terminal local". No estoy seguro si no sabía que podría usarlo localhost
de esta manera, o si estaba descartando PuTTY debido a la mayor sobrecarga en comparación con una terminal local. Si es lo último, no me preocuparía, una sesión SSH interactiva es una carga extremadamente ligera. (¡Ciertamente es mucho menos carga que ejecutar un sistema X Window para que pueda ejecutar una GUI Emacs o una xterm!)
La única desventaja real de ejecutar de esta manera frente a un terminal directo es que los eventos de pegado se envían letra por letra, como si escribiera el contenido del portapapeles muy rápido, lo que puede causar pares eléctricos, sangría, expansión de fragmentos, etc. fuego. (Pegar no debería hacer que se activen los comandos de acordes de teclas, ya que existe una lógica para detectar un pegado en curso y deshabilitar los acordes de teclas hasta que finalice el pegado).
Y también hay al menos una gran ventaja sobre el terminal Bash estándar: los eventos del mouse son compatibles con PuTTY en una forma a la que Emacs puede responder, por lo que, irónicamente, puede mover el punto con el mouse en PuTTY incluso si puede ' t con la terminal local.