¿Puede dar más detalles sobre cómo instaló e invocó Cygwin, y dónde exactamente la tecla de retroceso no funciona?
ak2
1
Supongo que esto está sucediendo en el shell. ¿Qué sucede cuando escribe control-V seguido de retroceso? ¿Y cuál es el resultado del sttycomando?
Keith Thompson
¿Qué tipo de teclado tienes? EE. UU., Reino Unido, etc.
pjc50
Alguna vez has resuelto esto? Lo estoy viendo ahora en mi nueva instalación de Cygwin, aunque anteriormente funcionó. Vale la pena señalar que no está obteniendo "un espacio": no se puede mover el cursor hacia atrás para borrar el personaje. El espacio que estás viendo es el espacio que se suponía que pisotearía al personaje anterior. Si presiona ^ L, puede ver que el retroceso ESTÁ funcionando. Es por eso que stty no está arreglando las cosas. Es casi como el shell de CMD al que Cygwin está obligado a no interpretar el movimiento del cursor.
SomeCallMeTim
Respuestas:
33
En mi caso, el retroceso no funcionaba en absoluto después de crear ~ / .vimrc en blanco. El siguiente cambio lo hizo funcionar
Gracias, esto funcionó para mí: anteriormente, en Vim, mi tecla de retroceso se movía hacia atrás a lo largo de la línea, pero no borraba las letras hasta que comencé a escribir. Ahora hace el retroceso 'habitual'.
Robert
44
Es genial que esta respuesta haya ayudado a otros usuarios, pero en este caso no es la solución a la pregunta ya que la pregunta original no es sobre vim.
Kelsin
Esto también resolvió un problema similar que tenía con las teclas del cursor
Steve Paul
12
Funcionó para mí: en el símbolo del sistema de Windows, escriba
Tenía la TERMvariable de entorno establecida a msystravés de la configuración de la variable de entorno de Windows como se sugiere en StackOverflow para ayudar con los gitproblemas en Windows. Simplemente restablecerlo cygwinen .bashrcno ayudó, pero eliminar la TERMentrada de la configuración de Windows sí. ¡Gracias por señalarme en la dirección correcta!
Florian Brucker
Esto resolvió el hecho de que cygwin64 ignoraba los espacios de retroceso en los comandos que contienen saltos de línea. Gracias.
suanik
11
Encontré una solución a un problema que se presentó como el anterior.
Simplemente ejecute la configuración de Cygwin nuevamente y reinstale termcapy terminfo. Si usa el cuadro de búsqueda, puede encontrarlos rápidamente. En lugar de decir "Guardar" para cada uno, haga clic en él para que diga "Reinstalar". Puede que tenga que marcar la casilla de verificación "Ocultar obsoleto" para termque aparezca en la búsqueda.
Mi carpeta terminfo faltaba por completo. No tengo idea de por qué. Espero que esto ayude a alguien.
Tenía un ncurses instalado personalizado, que eliminé. Después de quitar y reinstalar a través de cygwin setup.exe tuve este problema. No quiero aplicar una bandaid configurando las variables TERM a algo distinto de lo que funcionaba antes de mi contratiempo. Reinstalar terminfo (no pude encontrar termcap) funcionó para mí. ¡Gracias!
La solución más simple con diferencia. Espero que no haya efectos secundarios.
RomanSt
1
Cuando configura el tipo TERM, le está diciendo al host qué TERMCAP debe usar para dibujar dentro de la ventana del terminal. La mayoría de los hosts * NIX no saben qué es un tipo de término 'cygwin', por lo que no saben cómo realizar la manipulación de caracteres en pantalla, como inserciones, eliminaciones, pergaminos, cambios de fuente, etc.
Si cambia la variable TERM en CYGWIN antes de telnet o SSH a un host, obtendrá resultados mucho mejores:
En CYGWIN:
d@test01 ~
$ TERM=ansi;export TERM
$ ssh suntest1
d@suntest1's password:
Sun Microsystems Inc. SunOS 5.8 Generic patch October 2001
d pts/1 test01 Fri Oct 12 00:15 still logged in
$ echo $TERM
ansi
$_
El host ahora sabe que tiene un tipo de terminal ANSI y puede usar su archivo ANSI TERMCAP para indicarle cómo comunicarse.
Si no puede hacer que funcione y casi todo funciona correctamente, excepto el espacio de retroceso, puede reprogramar "getty" en el host al que se conecta para reconocer lo que desea, y así es cómo (este es el más antiguo, el más común y el más universal forma de resolver problemas de retroceso / eliminación):
Usted ssh o telnet a su host y en el host ejecuta el comando stty. Si presiona la tecla "RETROCESO" y no retrocede es porque el terminal probablemente esté buscando un carácter diferente en función del tipo TERM. En lugar de profundizar en todo eso, puede establecer manualmente la definición de retroceso en la CLI o en su archivo .profile, .bashrc o .bash-profile en su directorio $ HOME como desee o según el sabor de * NIX que sea utilizando.
Entonces, si presiona ^ H (eso es CONTROL-H) y su tecla retrocede pero presiona la tecla RETROCESO y no intenta usar stty de la siguiente manera:
stty erase \*<HIT YOUR BACKSPACE KEY HERE>*[ENTER]
La mayoría de las veces se verá así:
stty erase \^?[ENTER]
El '\' le dice que el siguiente carácter será un carácter de control no imprimible y que lo acepte, no lo "interpretará".
Una vez que presione [ENTRAR], debería poder presionar su tecla [RETROCESO] y hacer que retroceda / elimine lo que escribió.
Puede configurar esto en su shell.
Ahora, si todavía usa VI, a veces la traducción no funciona y tiene que escribir ^ H en vi, pero está bien.
Podrías haber dicho:
stty borrarse [ENTRAR]
y literalmente habría traducido 'k' en el carácter borrar / borrar.
Ok, tuve este problema con la actualización manual de una instalación de Cygwin. De todos modos encontré esta publicación , que me llevó a la solución para mi instalación.
El cygwin anterior tenía un archivo /etc/terminfo/c/cygwin, pero en el cygwin más nuevo esperaba que fuera el archivo /etc/terminfo/63/cygwin.
Una vez que copié el archivo "cygwin" en esta ubicación, la tecla de retroceso del shell bash funcionó bien, al igual que tab y otros.
Cambiar la TERMvariable cygwiny agregar SET TERM=cygwinal .batarchivo no funcionó para mí, pero lo arreglé. Aquí lo que hice: en la instalación debida del administrador de paquetes que seleccioné para instalar xterm: X11 terminal emulator, después de la instalación agregué SET TERM=xtermal .batarchivo (como se propuso anteriormente), inicié el terminal y en Opciones -> Menú del terminal seleccionado Type=xterm, luego reinicié el terminal. Retroceso comenzó a funcionar correctamente!
Nota: si ya instaló cygwin, simplemente ejecute el instalador nuevamente y agregue el paquete xterm.
Después de pasar 2 días de tiempo leyendo cosas en línea. Encontré este que funcionó para mí. No sé si este caso coincide con todos. Pero funcionó a las mil maravillas gracias a Yuksel
El problema era con los archivos 'termInfo', pasos que él sugirió
confirme si el problema está relacionado con la terminal escribiendo CygWin Terminal, esto debería dar (ignore la advertencia)
less my_session.log
ADVERTENCIA: el terminal no es completamente funcional
Obtenga la información de 'TermCap' con la ruta o directorio con el que está relacionado escribiendo el código a continuación en la Terminal CygWin
infocmp -C
deberías obtener
infocmp: no se pudo abrir el archivo terminfo / usr / share / terminfo / 63 / cygwin
O también puede obtener algo que comience con texto como 'Reconstruido a través de infocmp ...'
Ejecute el siguiente código en CygWin Terminal para ejecutar los diagnósticos y obtener detalles adicionales sobre la ruta donde se guardan los archivos
cygcheck -s
que debería responderte similar al texto a continuación
Diagnósticos de configuración de Cygwin
...
C: / cygwin / system binary, noacl
C: / cygwin / bin / usr / bin system binary, noacl
de la salida, obtuviste del tercer paso. ahora copie todos los archivos y carpetas que existen dentro de / usr / share / terminfo en la carpeta C: \ cygwin \ etc \ terminfo - NOTA: esta carpeta puede ser diferente a la suya dependiendo de la instalación
Haga clic derecho en cualquier lugar de la ventana de Cygwin
Hacer clic options
Haz clic en la Keyspestaña
garrapata Backarrow sends ^H
Presione aplicar.
Esto es lo único que funcionó para mí, especialmente porque si tiene que usar SSH en un servidor (no todas las soluciones funcionarán) solía agregar stty erase ^?a mi .bashrc, pero esto solo solucionó el problema el 80% del tiempo.
Incluso estoy atrapado en el mismo problema y desde Minty también la funcionalidad de retroceso no funciona. Tengo espacio cuando presiono la tecla de retroceso tanto en la terminal de menta como en la terminal de cygwin
Rachel
@ Rachel ¿Alguna vez resolvió esto? Estoy viendo el mismo problema con una nueva instalación de Cygwin. :(
SomeCallMeTim
@SomeCallMeTim: pude solucionar este problema usando Minty, cygwin se comporta de una manera muy extraña a veces.
Rachel
@Rachel Gracias, aunque descubrí que mi problema era que la instalación de Cygwin perdió algunos archivos importantes (como / usr / lib / terminfo). No sé por qué se perdieron; Encontré a alguien más con ese problema, entró en la configuración y le dijo a Terminfo y Termcap que reinstalaran, y todo funcionó.
stty
comando?Respuestas:
En mi caso, el retroceso no funcionaba en absoluto después de crear ~ / .vimrc en blanco. El siguiente cambio lo hizo funcionar
Poner:
establecer bs = 2
en .vimrc
Encontré esto en http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html
fuente
Funcionó para mí: en el símbolo del sistema de Windows, escriba
¡Esto lo agregará al
.bashrc
y todo puede funcionar bien!fuente
TERM
variable de entorno establecida amsys
través de la configuración de la variable de entorno de Windows como se sugiere en StackOverflow para ayudar con losgit
problemas en Windows. Simplemente restablecerlocygwin
en.bashrc
no ayudó, pero eliminar laTERM
entrada de la configuración de Windows sí. ¡Gracias por señalarme en la dirección correcta!Encontré una solución a un problema que se presentó como el anterior.
Simplemente ejecute la configuración de Cygwin nuevamente y reinstale
termcap
yterminfo
. Si usa el cuadro de búsqueda, puede encontrarlos rápidamente. En lugar de decir "Guardar" para cada uno, haga clic en él para que diga "Reinstalar". Puede que tenga que marcar la casilla de verificación "Ocultar obsoleto" paraterm
que aparezca en la búsqueda.Mi carpeta terminfo faltaba por completo. No tengo idea de por qué. Espero que esto ayude a alguien.
fuente
Edite su c: \ cygwin \ cygwin.bat
Coloca esto:
SET TERM=cygwin
antes de:
bash --login -i
fuente
Cuando configura el tipo TERM, le está diciendo al host qué TERMCAP debe usar para dibujar dentro de la ventana del terminal. La mayoría de los hosts * NIX no saben qué es un tipo de término 'cygwin', por lo que no saben cómo realizar la manipulación de caracteres en pantalla, como inserciones, eliminaciones, pergaminos, cambios de fuente, etc.
Si cambia la variable TERM en CYGWIN antes de telnet o SSH a un host, obtendrá resultados mucho mejores:
En CYGWIN:
El host ahora sabe que tiene un tipo de terminal ANSI y puede usar su archivo ANSI TERMCAP para indicarle cómo comunicarse.
Si no puede hacer que funcione y casi todo funciona correctamente, excepto el espacio de retroceso, puede reprogramar "getty" en el host al que se conecta para reconocer lo que desea, y así es cómo (este es el más antiguo, el más común y el más universal forma de resolver problemas de retroceso / eliminación):
Usted ssh o telnet a su host y en el host ejecuta el comando stty. Si presiona la tecla "RETROCESO" y no retrocede es porque el terminal probablemente esté buscando un carácter diferente en función del tipo TERM. En lugar de profundizar en todo eso, puede establecer manualmente la definición de retroceso en la CLI o en su archivo .profile, .bashrc o .bash-profile en su directorio $ HOME como desee o según el sabor de * NIX que sea utilizando.
Entonces, si presiona ^ H (eso es CONTROL-H) y su tecla retrocede pero presiona la tecla RETROCESO y no intenta usar stty de la siguiente manera:
La mayoría de las veces se verá así:
El '\' le dice que el siguiente carácter será un carácter de control no imprimible y que lo acepte, no lo "interpretará".
Una vez que presione [ENTRAR], debería poder presionar su tecla [RETROCESO] y hacer que retroceda / elimine lo que escribió.
Puede configurar esto en su shell.
Ahora, si todavía usa VI, a veces la traducción no funciona y tiene que escribir ^ H en vi, pero está bien.
Podrías haber dicho:
stty borrarse [ENTRAR]
y literalmente habría traducido 'k' en el carácter borrar / borrar.
-RE
fuente
Ok, tuve este problema con la actualización manual de una instalación de Cygwin. De todos modos encontré esta publicación , que me llevó a la solución para mi instalación.
El cygwin anterior tenía un archivo
/etc/terminfo/c/cygwin
, pero en el cygwin más nuevo esperaba que fuera el archivo/etc/terminfo/63/cygwin
.Una vez que copié el archivo "cygwin" en esta ubicación, la tecla de retroceso del shell bash funcionó bien, al igual que tab y otros.
fuente
Cambiar la
TERM
variablecygwin
y agregarSET TERM=cygwin
al.bat
archivo no funcionó para mí, pero lo arreglé. Aquí lo que hice: en la instalación debida del administrador de paquetes que seleccioné para instalarxterm: X11 terminal emulator
, después de la instalación agreguéSET TERM=xterm
al.bat
archivo (como se propuso anteriormente), inicié el terminal y en Opciones -> Menú del terminal seleccionadoType=xterm
, luego reinicié el terminal. Retroceso comenzó a funcionar correctamente!Nota: si ya instaló cygwin, simplemente ejecute el instalador nuevamente y agregue el paquete xterm.
Estoy corriendo:
fuente
Estoy de acuerdo con todas las respuestas aquí. Pero hay una manera mucho más simple que se encuentra aquí: http://lifepluslinux.blogspot.in/2014/08/backspace-doesnt-work-in-vim-on-cygwin.html
fuente
Funcionó para mí: en el símbolo del sistema de Windows, escriba
Esto lo agregará al .bash_profile (no .bashrc, que no funcionó para mí, y con un salto de línea inicial)
fuente
Después de pasar 2 días de tiempo leyendo cosas en línea. Encontré este que funcionó para mí. No sé si este caso coincide con todos. Pero funcionó a las mil maravillas gracias a Yuksel
El problema era con los archivos 'termInfo', pasos que él sugirió
confirme si el problema está relacionado con la terminal escribiendo CygWin Terminal, esto debería dar (ignore la advertencia)
less my_session.log
Obtenga la información de 'TermCap' con la ruta o directorio con el que está relacionado escribiendo el código a continuación en la Terminal CygWin
infocmp -C
deberías obtener
O también puede obtener algo que comience con texto como 'Reconstruido a través de infocmp ...'
Ejecute el siguiente código en CygWin Terminal para ejecutar los diagnósticos y obtener detalles adicionales sobre la ruta donde se guardan los archivos
cygcheck -s
que debería responderte similar al texto a continuación
de la salida, obtuviste del tercer paso. ahora copie todos los archivos y carpetas que existen dentro de / usr / share / terminfo en la carpeta C: \ cygwin \ etc \ terminfo - NOTA: esta carpeta puede ser diferente a la suya dependiendo de la instalación
fuente
Por favor siga la imagen de abajo
options
Keys
pestañaBackarrow sends ^H
Esto es lo único que funcionó para mí, especialmente porque si tiene que usar SSH en un servidor (no todas las soluciones funcionarán) solía agregar
stty erase ^?
a mi .bashrc, pero esto solo solucionó el problema el 80% del tiempo.fuente
Nunca experimenté tu problema. Intente instalar el emulador de terminal Mintty ( http://code.google.com/p/mintty/ ).
Está disponible a través del instalador de Cygwin. La mejor terminal para cygwin.
fuente