Zsh의 emacs와 유사한 키 바인딩에 대해 몇 가지 질문이 있습니다. 모든 질문에 대한 배경 설명: Emacs와 유사한 키 바인딩을 활성화했습니다 bindkey -e
(기본적으로 활성화됨).
복사 및 영역 강조 표시:
C-space
Emacs에서 ( )를 실행하고 set-mark
영역을 선택한 다음 로 복사하면 M-w
Emacs는 해당 영역을 종료 링에 넣고 텍스트 선택을 중지합니다(즉, 포인트를 이동하면 더 이상 텍스트가 선택되지 않습니다).
그러나 나는 같은 행동을 할 수 없습니다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