Por que ctrl + seta esquerda não pula palavras?

20

Estou no meu Ubuntu 12.04. Sempre que estou editando texto, uso ctrl+ left/ rightpara mover / pular entre as palavras. Recentemente, instalei o xscreensaver e alterei os atalhos do teclado para ativar o meu protetor de tela. Mas então, Ctrl+ leftparou de responder normalmente (vá para a próxima palavra à esquerda). Ctrl+ rightainda pula para a próxima palavra à direita. O problema ocorre se estou usando o terminal, Gedit ou mesmo digitando texto em páginas da web.

Voltei ao gnome-screensaver, removi o xscreensaver (também corrigi os atalhos do teclado). Mas a questão permanece.

Tentei copiar o conteúdo de /etc/inputrcpara ~/.inputrc(por padrão, não tenho ~ / .inputrc). Eu obtive algumas informações aqui: Caracteres estranhos aparecendo quando uso as teclas Ctrl e Seta para navegar

Por favor ajude.

EDIT: Aqui está o meu ~/.inputrc:

# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.
# Be 8 bit clean.
set input-meta on
set output-meta on
# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.

# set convert-meta off

# try to enable the application keypad when it is called.  Some systems
# need this to enable the arrow keys.
# set enable-keypad on

# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys

# do not bell on tab-completion
# set bell-style none
# set bell-style visible

# some defaults / modifications for the emacs mode
$if mode=emacs

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# mappings for "page up" and "page down" to step to the beginning/end
# of the history
# "\e[5~": beginning-of-history
# "\e[6~": end-of-history

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

$if term=rxvt
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line

# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line

$endif

se eu remover / etc / inputrc, eis o que recebo se eu pressionar CTRL e pressionar a seta para a direita cinco vezes: pressionando ctrl + seta para a direita

Ao contrário da primeira imagem acima, pressionar CTRL e pressionar a seta para a esquerda mais de uma vez não será impresso ;5Dnovamente ... é como se estivesse aceitando o comando uma vez e não o faça mais. Veja a imagem abaixo: pressionando ctrl + seta esquerda

itagomo
fonte
Qual shell você está usando?
Sergiy Kolodyazhnyy

Respostas:

25

1 - Entrada ~/.zshrc

bindkey '^[[1;5D' backward-word
bindkey '^[[1;5C' forward-word

2 - Ou em ~/.bashrc

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

... E agora ctrl+ left/ rightpula palavras no byobu / tmux.

3 - Não mexa com inputrc.

yPhil
fonte
este é há muito tempo ... já reinstalado ubuntu
itagomo
3
Da mesma forma, se você tiver um shell Bash, no seu arquivo ~ / .bashrc, adicione bind '"\ e [1; 5D" palavra reversa' bind '"\ e [1; 5C" palavra direta'
ishmael
3

Eu tenho esse mesmo problema. Corrigi-o copiando estas linhas para o meu ~/.inputrcarquivo:

"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
Hemanthkumar
fonte
apenas as 2 primeiras linhas são necessárias
davidchoo12 12/07
1

Crie um arquivo inputrc usando touch ~/.inputrc.
Copie o conteúdo da resposta aceita no link a que você se referiu, ou seja, caracteres estranhos que aparecem quando eu uso as teclas Ctrl e Seta para navegar até esse arquivo, abrindo o arquivo ~ / .inputrc usando algum editor de texto. Salve isso.
Leia o arquivo usando o bind ~/.inputrccomando ou reinicie um novo terminal. As coisas devem funcionar ..

drake01
fonte
eu já fiz meu ~ / .inputrc. mesmo conteúdo que o meu / etc / inputrc possui. o problema aqui é o comando "CTRL + Seta para a esquerda" não pule para a próxima palavra à esquerda. mas, além disso, todas as funções funcionam. alguma outra solução?
Itagomo 13/07/12
Parece que a ligação para ctrl + seta esquerda está sendo substituída de alguma forma. Você poderia incluir o conteúdo exato do arquivo inputrc? A segunda possibilidade pode ser que a linha esteja malformada. A propósito, a ligação para a combinação ctrl + left é a última linha do ~/.inputrcarquivo?
drake01
postagem editada .. veja acima .. informações adicionais, pular as palavras para a direita funciona pressionando (não deve soltar) a tecla CTRL e pressionando a tecla direita uma vez toda vez que eu quiser pular as palavras .. mas indo para a esquerda, preciso para liberar a tecla CTRL toda vez que eu pular palavras ..
itagomo 13/07/12
alguém que possa ajudar?
itagomo 19/07/12
1

Eu descobri que pular palavras para a esquerda acionando Ctrl + Left não funcionava (mesmo quando adicionei algum código em ~ / .inputrc ou ~ / .zshrc) porque, por padrão, esse atalho já é usado no Ubuntu (redimensiona a janela atual horizontalmente). Você pode alterar o atalho padrão no menu Sistema -> Preferências -> Atalho do teclado. Acabei de substituir Ctrl + Left por Ctrl + Down para liberá-lo. Após essa substituição, pular as palavras para a esquerda usando Ctrl + Left funciona bem! Mesmo sem ~ / .inputrc ou ~ / .zshc.

Banjo
fonte
procura soluções para isso há muito tempo. Este foi muito simples e eficiente! Obrigado.
Rizwanhudda