Como alterar o atalho de palavra anterior / seguinte no bash?

19

Como eu configuro Ctrl-Left e Ctrl-Right como atalhos de palavra anterior / seguinte para bash (atualmente alt-b e alt-f)?

    
por ripper234 07.04.2011 / 10:22

2 respostas

25

A resposta correta depende de qual terminal você está usando.

Para o Gnome Terminal ou versões recentes do xterm, coloque isso em ~ / .inputrc:

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

Para o PuTTY, coloque isso no seu ~ / .inputrc:

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

Para o rxvt, coloque isso no seu ~ / .inputrc:

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

Provavelmente, você pode juntar todos esses recursos em ~ / .inputrc.

Em todos os casos, você também precisa colocar isso em seu ~ / .bashrc (ou ~ / .zshrc):

export INPUTRC=~/.inputrc

Se isso não funcionar, ou se você tiver um terminal diferente, vá até o terminal e digite Ctrl + V Ctrl + < kbd> - > . Em seguida, use isso em vez de "\e[1;5C" ou "\eOC" acima. Repita para Ctrl + < - .

Note que você precisa escrever as sequências de escape do teclado usando a sintaxe inputrc , por exemplo,

  • \C significa controle
  • \e significa escape (que aparece como ^[ ao digitar usando Ctrl + V acima)
por 07.04.2011 / 10:43
2

Se você estiver usando o ZSH, precisará usar um método diferente, porque, citando as partes relevantes do guia ZSH do ArchLinux :

Zsh does not use readline #like bash#, instead it uses its own and more powerful zle.

It does not read /etc/inputrc or ~/.inputrc.

Depois de ler esse guia, eu percebi que precisava de uma fonte moderna de ZSH para ter uma idéia geral de como fazer isso, e então eu encontrei este oh-minha-zsh arquivo que descreve o comportamento que eu queria, Eu copiei as partes relevantes que eu queria no meu ~ / .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
    
por 12.08.2013 / 21:06