ZSH의 Line Editor(ZLE)에 Emacs와 유사한 바인딩을 더 추가합니다.

ZSH의 Line Editor(ZLE)에 Emacs와 유사한 바인딩을 더 추가합니다.

Zsh의 emacs와 유사한 키 바인딩에 대해 몇 가지 질문이 있습니다. 모든 질문에 대한 배경 설명: Emacs와 유사한 키 바인딩을 활성화했습니다 bindkey -e(기본적으로 활성화됨).

복사 및 영역 강조 표시:

C-spaceEmacs에서 ( )를 실행하고 set-mark영역을 선택한 다음 로 복사하면 M-wEmacs는 해당 영역을 종료 링에 넣고 텍스트 선택을 중지합니다(즉, 포인트를 이동하면 더 이상 텍스트가 선택되지 않습니다).

그러나 나는 같은 행동을 할 수 없습니다ZLE. 영역을 복사하면 M-W선택 모드가 계속 켜져 있고 커서를 움직이면 선택 항목이 계속 변경됩니다.

선택 중지:

Emacs에서는 범위를 선택한 다음 를 누르면 C-g선택이 중지됩니다(현재 마크업이 종료됩니다). Zsh에서는 기본적으로 C-g셸에서 새 줄이 시작됩니다. 그러면 C-g진행 중인 선택을 중지하기 위해 바인딩할 수 있는(아마도 다른 것을 사용하여) ZLE 명령이 있습니까 ?

답변1

선택을 비활성화하려면 다음을 실행하십시오.set-mark-command부정 인수 포함: ESC - Ctrl+Space.

영역을 복사하고 선택을 비활성화하려면 두 작업을 모두 수행하는 함수를 작성한 다음위젯으로 선언zle -N그리고제본그 위젯을 키로.

copy-region-as-kill-deactivate-mark () {
  zle copy-region-as-kill
  zle set-mark-command -n -1
}
zle -N copy-region-as-kill-deactivate-mark
bindkey '\ew' copy-region-as-kill-deactivate-mark

관련 정보