Como fazer HOME, END para trabalhar no terminal sem X

1

minha configuração das chaves atuais é:

typeset -A key

key[Home]=${terminfo[khome]}
key[End]=${terminfo[kend]}
key[Insert]=${terminfo[kich1]}
key[Delete]=${terminfo[kdch1]}
key[Up]=${terminfo[kcuu1]}
key[Down]=${terminfo[kcud1]}
key[Left]=${terminfo[kcub1]}
key[Right]=${terminfo[kcuf1]}
key[PageUp]=${terminfo[kpp]}
key[PageDown]=${terminfo[knp]}

# setup key accordingly
[[ -n "${key[Home]}"    ]]  && bindkey  "${key[Home]}"    beginning-of-line
[[ -n "${key[End]}"     ]]  && bindkey  "${key[End]}"     end-of-line
[[ -n "${key[Insert]}"  ]]  && bindkey  "${key[Insert]}"  overwrite-mode
[[ -n "${key[Delete]}"  ]]  && bindkey  "${key[Delete]}"  delete-char
[[ -n "${key[Up]}"      ]]  && bindkey  "${key[Up]}"      up-line-or-history
[[ -n "${key[Down]}"    ]]  && bindkey  "${key[Down]}"    down-line-or-history
[[ -n "${key[Left]}"    ]]  && bindkey  "${key[Left]}"    backward-char
[[ -n "${key[Right]}"   ]]  && bindkey  "${key[Right]}"   forward-char

# Finally, make sure the terminal is in application mode, when zle is
# active. Only then are the values from $terminfo valid.
function zle-line-init () {
    echoti smkx
}
function zle-line-finish () {
    echoti rmkx
}

if [ -n "${DISPLAY:-}" ]; then
   zle -N zle-line-init
   zle -N zle-line-finish
fi

preenchimento e outros arquivos zsh aqui: link

O problema é que este bindkey "${key[Home]}" beginning-of-line não funciona para terminal sem que o Xorg seja executado. Ele cola ~ em HOME e END . Como posso fazê-lo funcionar sem o Xorg também?

    
por Cynede 29.01.2013 / 06:02

1 resposta

1

O parâmetro $terminfo special em zsh é preenchido a partir dos dados que vêm do banco de dados terminfo no seu sistema.

No seu caso, parece que a entrada no banco de dados para o terminal que você está usando está incorreta.

O banco de dados terminfo é indexado no valor da variável de ambiente $TERM .

Portanto, $TERM está incorreto ou o banco de dados está incorreto.

Qual terminal é esse? É esse o console de algum sistema operacional BSD? O que $TERM contém? Você está logado localmente ou efetuando login em algum sistema remoto (que pode ter um banco de dados terminfo diferente) sobre ssh / rsh?

    
por 29.01.2013 / 12:03

Tags