La pregunta es sencilla, no se queja de eso. Solo quiero comentar que a menudo vale mucho la pena facilitar las combinaciones de teclas "estándar" que ya existen en muchas aplicaciones, en lugar de personalizarlas sin una ganancia real y la certeza de nunca ver el comportamiento en sistemas extranjeros. Ctrl+wes a lo que debes acostumbrarte, en mi humilde opinión.
Daniel Andersson
@ Daniel Andersson: o alternativamente, puede desarrollar una forma de transferir sus configuraciones a la máquina extranjera.
Adobe
Compartir archivos de puntos es un problema resuelto, pero no ayuda mucho más que en computadoras más o menos locales donde tienes privilegios bastante abiertos. Si está en un sistema externo, lo más probable es que no tenga la libertad de reconfigurar cosas así (al menos no sin ser golpeado por colegas que también usan la misma máquina :-)). Además, cada nueva aplicación necesitará un tratamiento especial.
Daniel Andersson
66
Tengo el problema inverso, estoy acostumbrado a Ctrl-w"eliminar la palabra anterior" en la consola, y lo hago por instinto incluso en Eclipse o Chrome, donde significa cerrar pestaña / cerrar archivo actual. Bastante molesto.
Ezequiel Muns
1
Tengo el mismo problema con Chrome SShInATab. ¿Cómo hago ctrl-W sin ctrl-W? :)
Riccardo SCE
Respuestas:
11
¿Por qué no simplemente usar Alt+ Backspaceo Ctrl+ Wque ya están mapeados en la mayoría de las terminales? No estoy seguro acerca de la consola. Xmodmap (man xmodmap) también se puede utilizar para reasignar otras claves personalizadas. (Paradójicamente, xmodmap no puede reasignar Backspace muy bien porque el terminal anula las asignaciones, pero funciona bien con la mayoría de las teclas ...).
Porque solía Ctrl-Retroceso en mis Emacs. Sabía sobre Ctrl-w. Alt-Retroceso es nuevo para mí (+1).
Adobe
1
Buen punto, @hellork. Puede interceptar el control + retroceso en el servidor X (a través de xmodmap) y asignarlo a algún carácter no utilizado (como el retroceso alternativo).
44
Lo molesto de esto es que ctrl + retroceso es un mapeo muy común para "eliminar palabras al revés" en la mayoría de las aplicaciones GUI en la mayoría de los principales sistemas operativos. Del mismo modo, Ctrl + W está muy extendido para "cerrar ventana". Alt + w rara vez se usa para algo en las GUI, que se me ocurra. La estandarización sería genial. Me pregunto cuál sería la mayor interrupción, el cambio de terminales o el cambio de GUI.
nada101
1
@naught, Control-W ya es la tecla predeterminada de borrado de palabras en terminales Unix. Sí, entra en conflicto con la convención de Windows / GUI, pero de hecho llegó primero, por muchos años. ¡Culpa a Microsoft!
alexis
11
Encontré este hilo a través de google, pero la respuesta no fue lo que quería escuchar. Así que jugué:
En mi terminal, el retroceso normal envía ^H, mientras que ctrl + retroceso envía ^?. Por lo tanto, debería tratarse simplemente de volver a vincular ^?para eliminar una palabra, que de forma predeterminada está disponible a través de Ctrl + W.
Primero (intento fallido):
$ bind -P | grep 'C-w'
unix-word-rubout can be found on "\C-w".
Por lo tanto, esto debería funcionar:
$ bind '"\C-?":unix-word-rubout'
Sin embargo, no ... ¿alguien capaz de explicar?
Segundo intento (exitoso):
$ bind '"\C-?":"^W"'
Donde the ^Wes literal / raw ^W(presione ctrl + V y luego ctrl + W para que aparezca).
Aquí hay algunas buenas respuestas, pero lo resolví en Konsole con Configuración-> Editar perfil actual-> Teclado-> Editar, y luego agregué una asignación de Backspace+Controla \x17. (Encontré el código ASCII para usar Ctrl-w showkey --ascii).
Gracias por señalar la cosa con showkey. Por lo tanto, descubrí que ALT+Dpara eliminar la palabra delante del cursor correspondería \x1b\x64.
loki
Gracias, resolvió mi problema. En mi caso, necesito reasignar Alt + Retroceso y su secuencia es \x1b\x7f.
DDMC
3
Eso depende de lo que ve bash. En la interacción terminal regular, bash no ve qué modificadores de teclas presionó, solo el carácter resultante. Retroceso ya es lo mismo que control-H, por ejemplo. Mantener presionado shift o control no hace ninguna diferencia.
SIN EMBARGO, su aplicación de terminal (xterm? Cmd? Terminal? Putty? Depende de su sistema operativo) puede ver sus pulsaciones de teclas, y puede tener una manera de asignar la combinación de teclas de control-retroceso a algo que bash puede distinguir aparte del retroceso.
Descubrí que mi bash no ve retroceso. Pero puede ser posible hacerlo ver eso.
Adobe
@adobe, ¿qué quieres decir? Escriba 'stty' en su terminal y luego lea el manual al respecto. Si ^ H está configurado para ser tu personaje de borrado, puedes configurarlo para otra cosa ... si tienes una buena razón.
1
Hay un buen ejemplo de cómo hacer esto en github.com/calj/gtconf/blob/master/zsh/zshrc . Konsole te permite hacerlo. Copie uno de los archivos * .keytab de / usr / share / kde4 / apps / konsole / en ~ / .kde / share / apps / konsole y modifíquelo con las sugerencias en el enlace de arriba, eliminando la línea "tecla Retroceso" y agregando: key Backspace-Shift-Control : "\x7f"y key Backspace-Shift+Control : "\E[9;3~"también cambie la línea de título mientras lo hace: keyboard "Xfree4 Modlist"por ejemplo. Luego puede agregar "\e[9;3~": backward-kill-word"a ~ / .inputrc
Adam
2
Prueba esto:
bind '"\C-_":backward-kill-word'
Opcionalmente, agregue lo siguiente a ~ / .inputrc para que sea permanente:
Es poco probable que Control-backspace sea el mismo que Control-subrayado.
Thomas Dickey
1
De todas las cosas que probé en este hilo, ¡esto funcionó! Usando "GNU bash, versión 4.3.48 (1) -release (x86_64-pc-linux-gnu)" en bash en windows / WSL
Markus Jevring
Esto funciona muy bien para mí en Cygwin, usando GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin) .
zagyi
1
En Konsole:
hacer clic Settings -> Edit current profile
haga clic en la pestaña 'Teclado' -> [Edit...]
haga clic en el [Add]botón y debajo del Key Combinationtipo de columna Backspace+Ctrl. En el Outputtipo de columna 0x08(que es convencionalmente el carácter de retroceso)
Ahora debería poder asignar esa clave a backward-kill-word través de
Gracias. Funciona para mí, al menos en xfce4-terminal.
limon
0
En la mayoría de los terminales, CTRL + W ya debería eliminar una palabra al revés. Esto funciona con xterm y supongo que funciona con konsole. CTRL + W es un enlace de teclas estándar en un programa basado en texto que funcionará con vim en modo de inserción, emacs y todos los shells.
Ctrl+w
es a lo que debes acostumbrarte, en mi humilde opinión.Ctrl-w
"eliminar la palabra anterior" en la consola, y lo hago por instinto incluso en Eclipse o Chrome, donde significa cerrar pestaña / cerrar archivo actual. Bastante molesto.Respuestas:
¿Por qué no simplemente usar Alt+ Backspaceo Ctrl+ Wque ya están mapeados en la mayoría de las terminales? No estoy seguro acerca de la consola. Xmodmap (man xmodmap) también se puede utilizar para reasignar otras claves personalizadas. (Paradójicamente, xmodmap no puede reasignar Backspace muy bien porque el terminal anula las asignaciones, pero funciona bien con la mayoría de las teclas ...).
fuente
Encontré este hilo a través de google, pero la respuesta no fue lo que quería escuchar. Así que jugué:
En mi terminal, el retroceso normal envía
^H
, mientras que ctrl + retroceso envía^?
. Por lo tanto, debería tratarse simplemente de volver a vincular^?
para eliminar una palabra, que de forma predeterminada está disponible a través de Ctrl + W.Primero (intento fallido):
Por lo tanto, esto debería funcionar:
Sin embargo, no ... ¿alguien capaz de explicar?
Segundo intento (exitoso):
Donde the
^W
es literal / raw^W
(presione ctrl + V y luego ctrl + W para que aparezca).fuente
Simplemente edite su
~/.inputrc
(puede que necesite crear uno o copiar el que está/etc/inputrc
allí) para que contenga:Esto asignará también Ctrl+ Deletepara eliminar la palabra al lado del cursor.
fuente
Aquí hay algunas buenas respuestas, pero lo resolví en Konsole con Configuración-> Editar perfil actual-> Teclado-> Editar, y luego agregué una asignación de
Backspace+Control
a\x17
. (Encontré el código ASCII para usar Ctrl-wshowkey --ascii
).fuente
showkey
. Por lo tanto, descubrí queALT+D
para eliminar la palabra delante del cursor correspondería\x1b\x64
.\x1b\x7f
.Eso depende de lo que ve bash. En la interacción terminal regular, bash no ve qué modificadores de teclas presionó, solo el carácter resultante. Retroceso ya es lo mismo que control-H, por ejemplo. Mantener presionado shift o control no hace ninguna diferencia.
SIN EMBARGO, su aplicación de terminal (xterm? Cmd? Terminal? Putty? Depende de su sistema operativo) puede ver sus pulsaciones de teclas, y puede tener una manera de asignar la combinación de teclas de control-retroceso a algo que bash puede distinguir aparte del retroceso.
fuente
key Backspace-Shift-Control : "\x7f"
ykey Backspace-Shift+Control : "\E[9;3~"
también cambie la línea de título mientras lo hace:keyboard "Xfree4 Modlist"
por ejemplo. Luego puede agregar"\e[9;3~": backward-kill-word"
a ~ / .inputrcPrueba esto:
Opcionalmente, agregue lo siguiente a ~ / .inputrc para que sea permanente:
Funciona en bash 4.3.11 en Kubuntu 14.04
fuente
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
.En Konsole:
Settings -> Edit current profile
[Edit...]
[Add]
botón y debajo delKey Combination
tipo de columnaBackspace+Ctrl
. En elOutput
tipo de columna0x08
(que es convencionalmente el carácter de retroceso)Ahora debería poder asignar esa clave a
backward-kill-word
través defuente
En la mayoría de los terminales, CTRL + W ya debería eliminar una palabra al revés. Esto funciona con xterm y supongo que funciona con konsole. CTRL + W es un enlace de teclas estándar en un programa basado en texto que funcionará con vim en modo de inserción, emacs y todos los shells.
fuente