ZSH Bindkey가 명령을 실행하고 Enter를 누르십시오.

ZSH Bindkey가 명령을 실행하고 Enter를 누르십시오.

명령을 실행하는 키 바인딩이 있었으면 좋겠습니다. 현재 상태에서 터미널을 클릭하면 Ctrl + f명령이 표시되며 Enter를 눌러야 합니다. 나는 아마도 키 바인딩이 나를 위해 이것을 할 수 있기를 바랐습니다. 나는 현재

bindkey -s ^f "tmux-sessionizer\n"

멈춰서 Enter 키를 누를 수 없나요? 아니면 제가 할 수 있는 일이 있나요?

답변1

빈 프롬프트에서 Ctrl+F를 누르면(적어도 기본 구성에서는) 게시한 코드가 실행됩니다( tmux-sessionizer적어도 기본 구성에서는). 실제로 extended_glob참조해야 할 매우 유용한 옵션 세트가 있을 수 있습니다 ^. 예 bindkey '^f' 'tmux-sessionizer\n') . 그러나 비어 있지 않은 프롬프트에서 이 키를 누르면 일반적으로 유용한 작업이 수행되지 않고 일부 나쁜 작업이 수행될 수 있습니다. 외부 명령을 실행하는 더 좋은 방법은 셸 입력을 사용하는 것이 아니라 직접 실행하는 것입니다. 이를 위해:

  1. 정의하다기능이것이 당신이 원하는 것입니다.
  2. 함수가 끝나면,라인 편집자에게 말하세요도착하다프롬프트 다시 표시.
  3. 다음과 같이 함수를 등록합니다.라인 편집기 위젯.
  4. 키 바인딩편집기 위젯에.
function run-tmux-sessionizer { tmux-sessionizer; zle redisplay; }
zle -N run-tmux-sessionizer
bindkey '^f' run-tmux-sessionizer

답변2

당신은 이것을 할 수 없습니다혼자 명령 bindkey. 하지만 만약 당신이 내zsh-edit끼워 넣다, 다음을 사용할 수 있습니다.

bind '^F' 'tmux-sessionizer'

관련 정보