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.
Cuando se ejecuta
showkey -a
en la consola windows / ubuntu-bash, muestra que ctrl + espacio solo envía un espacio plano.Y es el mismo problema con la sesión ssh a cualquier otra máquina Linux ctrl + space se envía como espacio plano.
El mismo comportamiento es con cualquier otra terminal basada en Windows (conemu, consolez, MobaXTerm), excepto que la masilla puede manejar esto bien, pero la masilla no es una terminal local.
Creo que los terminales de Windows no tienen asignaciones para algunas secuencias. El mismo problema es con otras combinaciones como ctrl + 1 ctrl + 2 .. etc. Aquí se requiere un terminal que pueda manejar las asignaciones de teclado para sí mismo como masilla, por ejemplo.
Creo que este problema debería solucionarse en futuras versiones de Windows Bash Terminal.
fuente
set-mark-command
es probablemente el comando más utilizado en Emacs (aparte deself-insert-command
), volver a entrenar los dedos es una pregunta muy, muy pronunciada, especialmente si ha estado usando Emacs durante más de 25 años como yo.Este proyecto le permite usar MinTTY como un terminal alternativo: https://github.com/mintty/wsltty . Se deriva de PuTTY, pero no requiere SSH. Y al igual que PuTTY, maneja Ctrl-space muy bien.
fuente
Este problema ahora está solucionado en Windows 10 build 14965 . Cheque:
¡E instale actualizaciones si no lo ha hecho!
fuente
Hay un truco ya que podemos instalar X Server para Windows
1 primero instala xming para windows
2 comenzar xming
3 luego desde windows bash install
4 luego abrir
cmd.exe
y ejecutarahora estamos en la consola bash y corremos
5 En este punto, ya deberíamos ver un nuevo terminal en Xming. Y podemos ejecutar emacs en modo terminal.
Y todos los enlaces ahora funcionan bien
la discusión relacionada está aquí https://github.com/Microsoft/BashOnWindows/issues/531
fuente
-nw
hace que se ejecute en una terminal, al igual que lo haría con PuTTY, excepto que ahora tiene que ejecutar un segundo sistema completo de ventanas, desde mi prueba rápida, te costará casi 500 MB de memoria más allá de ejecutar un sshd y PuTTY y tendrá un costo de CPU similarmente más alto.