Linux 서버에 zsh 셸이 있고 다른 컴퓨터의 화면 세션에서 서버에 연결합니다. 집과 끝과 같은 제어 키가 올바르게 작동하도록 노력하고 있습니다.
zsh는 GNU Readline 라이브러리를 사용하지 않기 때문에 터미널 시퀀스를 zsh 명령에 매핑해야합니다. 먼저 zkbd를 사용하여 각 키 입력으로 전송 된 시퀀스를 찾은 다음 올바른 명령에 매핑합니다. 이것은 .zshrc에있는 것입니다.
autoload zkbd
[ ! -f "${ZDOTDIR:-$HOME}/.zkbd/$TERM-${DISPLAY:-$VENDOR-$OSTYPE}" ] && zkbd
source "${ZDOTDIR:-$HOME}/.zkbd/$TERM-${DISPLAY:-$VENDOR-$OSTYPE}"
[ -n "${key[Backspace]}" ] && bindkey "${key[Backspace]}" backward-delete-char
[ -n "${key[Home]}" ] && bindkey "${key[Home]}" beginning-of-line
...
이제 두 가지 문제가 있습니다.
screen
. 그래도 연결하는 컴퓨터에 따라 일부 키의 시퀀스가 다릅니다 (예 : F1은 ^[[11~
또는 ^[OP
). 서로 다른 매핑을 구별하기 위해 zkbd 파일의 이름을 어떻게 지정해야합니까?단순히 사용하는 것이 아니라 TERM=screen
화면 프로그램에는의 다른 값 을 설정하는 데 사용할 수있는 기능이 있습니다 TERM
. 이것은 완전한 ncurses 터미널 데이터베이스를 설치 했고 실제 터미널에 해당 하는 TERM
외부 화면을 사용한다고 가정합니다 .
주어진 TERM
에 대해 터미널 데이터베이스에 해당 "screen. $ TERM"항목이있는 경우 screen은이를 사용 합니다 . ncurses 터미널 데이터베이스에는 설정 한 터미널의 실제 동작과 일치하는 몇 가지가 있습니다 ( TERM=xterm
예 : screen.Eterm , screen.gnome , screen.konsole , screen.konsole-256color , screen.linux , screen.mlterm , screen.mlterm) -256color , screen.mrxvt , screen.putty , screen.putty-256color , screen.rxvt , screen.teraterm , screen.vte ,screen.vte-256color , screen.xterm-256color , screen.xterm-new , screen.xterm-r6 , screen.xterm-xfree86 .
터미널 데이터베이스를 사용하기위한 설정을 한 후에는 사용자 고유의 특수 / 매직 구성 파일이 필요하지 않습니다. 게다가 어떤 파일을 사용할지 서버에 어떻게 알릴 수 있습니까? 실제 정보는 실제로 사용중인 터미널 에뮬레이터를 알고 있는 클라이언트에 있습니다 .
zsh
이 정보를 $terminfo
어레이에서 직접 사용할 수 있습니다 .
추가 읽기 :
$terminfo[]
)이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다