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

20

Como configurar Ctrl-Esquerda e Ctrl-Direita como atalhos da palavra anterior / seguinte para bash (atualmente alt-be alt-f)?

ripper234
fonte
Hum, esta pergunta não soa?
Gilles 'SO- stop be evil'
@ Gilles - Eu pensei que eu pedi algo semelhante antes, sim, desculpe. Fechado o original como duplicado (porque ele pertence mais aqui do que no Superusuário).
precisa saber é o seguinte

Respostas:

26

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

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

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

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

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

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

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

Provavelmente, você pode se dar bem ao reunir todos esses itens em ~ / .inputrc.

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

export INPUTRC=~/.inputrc

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

Observe que você precisa escrever as seqüências de escape do teclado usando a sintaxe inputrc , por exemplo,

  • \C significa controle
  • \esignifica escape (que aparece ^[quando você digita usando Ctrl + V acima)
Mikel
fonte
Ctrl + V, Ctrl -> imprime "^ [[1; 5C", e eu estou usando o gnome-terminal.
precisa saber é o seguinte
2
Então tente "\e[1;5C": forward-word. E faça o Ctrl+ Vpara Ctrl+ Left Arrowtambém.
11117 Mikel
Obrigado, funciona como um encanto. Lenta mas seguramente, vou aprender a nadar no linux. Por que eles tiveram que torná-lo tão intuitivo em primeiro lugar? (Você tem que admitir deixou-ctrl, ctrl-direito são melhores escolhas)
ripper234
11
Se você acha que o Linux não é intuitivo, tente uma instalação padrão do FreeBSD ou até Solaris. Tendo o bash como seu shell inicial é um sonho. Além disso, como os teclados nem sempre possuem teclas de seta, Emacs e, portanto, o bash também suporta atalhos para isso. Tente usar Ctrl-be Ctrl-f por um tempo.
Penguin359
2
A beleza dos sistemas UNIX / Linux é que é fácil mudar as configurações. Depois de configurar seus programas favoritos da maneira que você gosta, copie-os. Na verdade, estou usando o controle de versão para meus arquivos de diretório inicial, como .inputrc, .bashrc, .vimrc e assim por diante. Uso o mercurial para clonar e manter todas as minhas configurações de diretório inicial atualizadas entre computadores. Também estou planejando, em algum momento, publicar meu repositório para que outros possam compartilhar todo o meu trabalho duro.
penguin359
3

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

O Zsh não usa o readline #like bash #, em vez disso, usa seu próprio e mais poderoso zle.

Não lê / etc / inputrc ou ~ / .inputrc.

Depois de ler esse guia, achei que precisava de uma fonte moderna de ZSH para obter a idéia geral de como fazer isso, e então encontrei esse arquivo oh-my-zsh que descreve o comportamento que eu queria, copiei as partes relevantes 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
mirandalol
fonte
Eu estava tentando ctrl + rightarrow, mas ele não viaja uma palavra no Mac
TomSawyer 24/11