
terminfo
나는 탐험 을 해왔고 stty
. 실행하면 stty -a|grep icanon
표준 모드가 설정된 것으로 표시되지만, 끄고 stty -icanon
다시 확인하면 여전히 설정되어 있는 것을 볼 수 있습니다. Bash에서 동일한 작업을 수행하면 icanon을 비활성화할 수 있지만 동작에 어떤 변화도 느껴지지 않습니다. 그래서 두 가지 질문이 있습니다. zsh에서 icanon을 비활성화할 수 없는 이유는 무엇이며, 가능하다면 동작에 어떤 영향을 주어야 합니까?
답변1
Bash에서 동일한 작업을 수행하면 icanon을 비활성화할 수 있지만 동작에 어떤 변화도 느껴지지 않습니다.
bash가 정식 모드로 전환되기 때문입니다.끄다사용자로부터 명령을 읽을 때(텍스트 삽입, 화살표 키를 사용하여 커서를 좌우로 이동하는 등 터미널 드라이버에서 제공하지 않는 줄 편집 기능을 구현하기 위해)복원명령줄을 실행할 때 이전 터미널 설정.
효과를 보려면 다음과 같은 외부 명령을 실행하십시오 cat
.
bash$ stty -icanon
bash$ cat
hheelloo
stty echo
각 키는 켜져 있기 때문에 한 번, cat
전체 줄을 기다릴 필요 없이 즉시 읽고 다시 쓰기 때문에 반복됩니다 .
[zsh 사용] 끄고
stty -icanon
다시 확인해 보면 여전히 설정되어 있는 것을 볼 수 있습니다.
위와 같이 이전 단말기 설정을 복원하는 경우 zsh
에도 적용됩니다 .일부 정상적인 기본값echo
( 및 설정 포함 icanon
). 아마도 명령이 정식 모드를 벗어나면 다음과 같이 가정하기 때문일 것입니다.끄다종료 시 이는 단지 사고였습니다(예: 전체 화면 앱이 충돌하거나 vi
충돌 한 경우 less
).
zsh
나는 그것이 readline 라이브러리를 사용하는 다른 프로그램처럼 작동하도록 하는 옵션을 찾을 수 없었지만 bash
명령을 실행하기 전에 icanon 모드를 끄려면 stty를 호출하여 이를 수행할 수 있습니다. 동일한 명령줄:
zsh$ stty -icanon; cat
hheelloo