¿Cómo cambiar el acceso directo de la palabra anterior / siguiente en bash?

20

¿Cómo configuro Ctrl-Izquierda y Ctrl-Derecha como atajos de palabras anteriores / siguientes para bash (actualmente alt-b y alt-f)?

ripper234
fuente
¿ Esta pregunta no te suena?
Gilles 'SO- deja de ser malvado'
@Gilles: pensé que había preguntado algo similar antes, sí, lo siento. Cerró el original como un duplicado (porque pertenece más aquí que en Super Usuario).
ripper234

Respuestas:

26

La respuesta correcta depende del terminal que esté utilizando.

Para Gnome Terminal o versiones recientes de xterm, ponga esto en ~ / .inputrc:

"\e[1;5C": forward-word
"\e[1;5D": backward-word

Para PuTTY, ponga esto en su ~ / .inputrc:

"\eOC": forward-word
"\eOD": backward-word

Para rxvt, ponga esto en su ~ / .inputrc:

"\eOc": forward-word
"\eOd": backward-word

Probablemente pueda salirse con la suya al juntarlos en ~ / .inputrc.

En todos los casos, también debe poner esto en su ~ / .bashrc (o ~ / .zshrc):

export INPUTRC=~/.inputrc

Si eso no funciona, o si tiene una terminal diferente, vaya a su terminal y escriba Ctrl+ V Ctrl+ ->. Luego use eso en lugar de "\e[1;5C"o "\eOC"arriba. Repita para Ctrl+ <-.

Tenga en cuenta que debe escribir las secuencias de escape del teclado utilizando la sintaxis inputrc , p. Ej.

  • \C significa control
  • \esignifica escape (que aparece como ^[cuando lo escribes usando Ctrl + V arriba)
Mikel
fuente
Ctrl + V, Ctrl -> imprime "^ [[1; 5C", y estoy usando gnome-terminal.
ripper234
2
Así que inténtalo "\e[1;5C": forward-word. Y haz lo Ctrl+ Vpara Ctrl+ Left Arrowtambién.
Mikel
Gracias, funciona como un encanto. Lento pero seguro, aprenderé a nadar en Linux. ¿Por qué tuvieron que hacerlo tan poco intuitivo en primer lugar? (Tienes que admitir Ctrl-izquierda, Ctrl-derecha son mejores opciones)
ripper234
1
Si cree que Linux no es intuitivo, intente una instalación predeterminada de FreeBSD o incluso Solaris. Tener bash como caparazón inicial es un sueño. Además, dado que los teclados no siempre tenían teclas de flecha, Emacs y, por lo tanto, atajos de soporte de bash para eso también. Intente usar Ctrl-b y Ctrl-f por un tiempo.
penguin359
2
La belleza de los sistemas UNIX / Linux es que es fácil moverse por la configuración. Una vez que haya configurado sus programas favoritos de la manera que le gusten, simplemente cópielos. De hecho, estoy usando el control de versiones para mis archivos de directorio de inicio como .inputrc, .bashrc, .vimrc, etc. Utilizo mercurial para clonar y mantener todas las configuraciones de mi directorio personal actualizadas entre computadoras. También estoy planeando en algún momento publicar mi repositorio para que otros puedan compartirlo todo mi arduo trabajo.
penguin359
3

Si está utilizando ZSH, debe tomar un método diferente, ya que, citando las partes relevantes de la guía ZSH de ArchLinux :

Zsh no usa readline #like bash #, en su lugar usa su propio y más potente zle.

No lee / etc / inputrc o ~ / .inputrc.

Después de leer esa guía, pensé que necesitaba una fuente moderna de ZSH para tener una idea general de cómo hacer esto, y entonces encontré este archivo oh-my-zsh que describe el comportamiento que quería, copié las partes relevantes. quería en mi ~ / .zshrc:

bindkey -e #Use emacs mode, it's more sane for beginners
bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move forward one word
bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word
# Also, If you want to copy paste this into your zshrc,
# I'm pretty sure you would have to add this at the top : 
# setopt interactive_comments
mirandalol
fuente
estaba intentando ctrl + rightarrow, pero no viaja una palabra en Mac
TomSawyer