VMWare 14.0에서 GUI가 아닌 ArchLinux를 실행하고 있습니다. openssh를 통해 SSH 서버를 설치하고 다음을 사용하여 가상 머신에 연결했습니다.새끼 고양이 0.70Windows 10 [버전 10.0.15063].
내 문제는 여러 줄 명령을 사용할 때 Kitty의 명령 출력이 매우 이상하다는 것입니다.
예를 들어:
Kitty SSH 클라이언트의 경우:
[ddk@mylinux:~]
14:23:08 $ if [[ -o interactive ]]
if> then
then> echo 'inter'
then> fi
then # not my typing
echo 'inter' # not my typing
fi)inter # not my typing
[ddk@mylinux:~]
14:23:34 $
내 가상 머신의 터미널에서:
[ddk@mylinux:~]
14:23:54 $ if [[ -o interactive ]]
if > then
then > echo interactive
then > fi
interactive
[ddk@mylinux:~]
14:24:37 $
그렇다면 Kitty SSH 클라이언트에서 잘못된 출력을 어떻게 수정합니까?
P/S: 달리고 있어요다루기 힘든사전 구성된 스크립트가 없습니다.아 맙소사. 이 내 꺼야.zshrc.
답변1
Stéphane Chazelas가 말했듯이 문제는 당신의 preexec
기능입니다. 터미널 제목을 설정할 때 사용한 명령은 특수 문자를 보호하지 않습니다. 명령의 첫 번째 줄 바꿈은 이스케이프 시퀀스를 종료하여 헤더를 설정한 다음 추가 줄을 인쇄합니다.
print
또한 백슬래시 확장이 수행되고 명령에서 프롬프트 백분율 확장도 수행하므로 명령의 백슬래시 및 백분율 문자와 관련된 문제가 있습니다 .
해결 방법은 제어 문자를 제거하거나 인코딩하고 백슬래시 확장을 수행하여 프롬프트의 제어 문자와 제어 문자를 분리하는 것입니다. 예를 들어:
set_title () { print -rn $'\e]0;'${${:-${(%):-$1}$2}//[^[:print:]]/_}$'\a' }
precmd () { set_title '[%n@%M:%~]' '' }
preexec () { set_title '[%n@%M:%~]' " ($1)" }