zsh를 사용하고 tab명령, 경로 이름, 옵션 등을 완성하는 경우 잠재적인 일치 항목이 여러 개 있을 때마다 제안 사항이 프롬프트 아래에 표시됩니다.
제안을 선택하면 zsh는 여기에서 볼 수 있듯이 터미널에서 제안 목록을 제거합니다.
대조적으로 bash가 완료 제안을 제공하면 목록을 출력하고 새로운 프롬프트로 돌아갑니다.
이미지 출처
내가 사용하지 않은 제안은 아무런 가치도 제공하지 않고 터미널에서 더 많은 "노이즈"를 생성하므로 zsh 동작이 나에게 더 좋습니다.
이런 방식으로 zsh처럼 작동하도록 bash/readline을 구성할 수 있습니까?
답변1
짧게: 가능하지만 .inputrc
바인딩만큼 복잡합니다.
긴: 의견에서 제안한 대로~할 수 있었다bash 프롬프트와 readline 바인딩에서 이와 같은 작업을 수행하십시오.
커서를 저장/복원하는 것은 효과가 없습니다. 화면의 나머지 부분을 확실하게 지울 수 있는 유일한 지점은 Enter선택을 완료하기 위해 누르는 것뿐이기 때문입니다.
에 제어권을 넘긴 후에는 accept-line
화면의 나머지 부분을 지우기에는 너무 늦습니다. readline이 하나 이상의 작업을 수행하도록 만들기 위해 일련의 실제 및 임시 "키 바인딩"을 정의하는 것은 가능하지만 복잡합니다. 예를 들어 참조
그러나 이 접근 방식은 bash에 문자를 보내고 readline에 명령을 실행하는 것으로 제한됩니다. readline 명령 중 어느 것도 수행하지 않습니다
printf '\033[J'
클리어하기 위해나머지화면의. 가장 가까운 것은 readline의 내장 clear-screen
(~ 아니다당신이 원하는 것). 귀하의 바인딩은 다음과 같은 작업을 수행해야 합니다.
beginning-of-line
- 삽입 "
printf '\033[J';
" end-of-line
accept-line
이는 end-of-line
readline의 특이한 문제를 해결합니다. 누를 수 있게 해줍니다.Enter 어딘가에라인에. 커서가 줄 중앙에 있으면 입력의 일부만 표시됩니다(비록 bash는 전체 문자열을 가져옵니다).