Obtendo; 5D ao pressionar ctrl + seta em um Terminal no FreeBSD

18

No centos, posso pular uma palavra pressionando ctrl + seta (esquerda ou direita) em um terminal. Quando ssh em uma caixa do FreeBSD e tento o mesmo padrão, recebo:

$ tail -f 20120412.log;5D;5D;5D

(cada tentativa = ; 5D )

Existe uma maneira de corrigir isso? Estou usando o Ubuntu 12.04 + Terminator.

Desde já, obrigado.

jdorfman
fonte

Respostas:

26

A .inputrcem seu diretório pessoal fará com que o ctrl+ leftpare de funcionar no Ubuntu (por exemplo).

Para que tudo funcione, adicione o seguinte a ~/.inputrc:

# Include system-wide inputrc, which is ignored by default when
# a user has their own .inputrc file.
$include /etc/inputrc
f.kowal
fonte
1
Para esclarecer - isso .inputrcdeve ser definido na máquina remota.
Omikron
funcionou para mim, somente depois de reiniciar o byobu.
Immeëmosol
1
Para alguém que é totalmente ausente suas .inputrc, as linhas relevantes para mim foram: "\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
AlbinoDrought
2

A menos que você os tenha alterado do padrão, o shell que você está usando no Ubuntu é bash. No FreeBSD, o shell padrão é csh. Você pode alterar seu shell com o seguinte comando nos dois sistemas operacionais:

chsh

Defina seu shell no FreeBSD como / usr / local / bin / bash. O Bash não faz parte do FreeBSD; portanto, se você ainda não o fez, instale-o a partir das portas:

cd /usr/ports/shells/bash
make install
make clean

Uma última coisa: não mude o shell para root. É para isso que serve a conta "toor": todos os privilégios do root, mas você pode definir o shell para o que quiser. O motivo é que não existem atividades do sistema que sejam executadas sob o toor; portanto, você não quebrará nada nem confundirá ninguém alterando o shell da conta para algo com o qual está acostumado (ou pode ser mais funcional como um shell de logon).

Utkonos
fonte
1

O shell que você está executando na máquina FreeBSD provavelmente não suporta essa sequência de controle. Sem saber qual shell você está executando em ambos os lados, é difícil dizer com certeza.

wfaulk
fonte
1

Se você usa o ZSH, use-o no arquivo / etc / zshrc .

case "${TERM}" in
  cons25*|linux) # plain BSD/Linux console
    bindkey '\e[H'    beginning-of-line   # home 
    bindkey '\e[F'    end-of-line         # end  
    bindkey '\e[5~'   delete-char         # delete
    bindkey '[D'      emacs-backward-word # esc left
    bindkey '[C'      emacs-forward-word  # esc right
    ;;
  *rxvt*) # rxvt derivatives
    bindkey '\e[3~'   delete-char         # delete
    bindkey '\eOc'    forward-word        # ctrl right
    bindkey '\eOd'    backward-word       # ctrl left
    # workaround for screen + urxvt
    bindkey '\e[7~'   beginning-of-line   # home
    bindkey '\e[8~'   end-of-line         # end
    bindkey '^[[1~'   beginning-of-line   # home
    bindkey '^[[4~'   end-of-line         # end
    ;;
  *xterm*) # xterm derivatives
    bindkey '\e[H'    beginning-of-line   # home
    bindkey '\e[F'    end-of-line         # end
    bindkey '\e[3~'   delete-char         # delete
    bindkey '\e[1;5C' forward-word        # ctrl right
    bindkey '\e[1;5D' backward-word       # ctrl left
    # workaround for screen + xterm
    bindkey '\e[1~'   beginning-of-line   # home
    bindkey '\e[4~'   end-of-line         # end
    ;;
  screen)
    bindkey '^[[1~'   beginning-of-line   # home
    bindkey '^[[4~'   end-of-line         # end
    bindkey '\e[3~'   delete-char         # delete
    bindkey '\eOc'    forward-word        # ctrl right
    bindkey '\eOd'    backward-word       # ctrl left
    bindkey '^[[1;5C' forward-word        # ctrl right
    bindkey '^[[1;5D' backward-word       # ctrl left
    ;;
esac
Vermaden
fonte
0

Parece que você pode ter a configuração $ TERM incorreta. echo $TERMpara descobrir qual é a sua configuração atual. Pode querer usar o xterm export TERM=xterm-256color.

Aaron Kaufman
fonte
ainda sem amor = |
jdorfman