ESC를 누를 때까지 Tmux를 '접두사 모드'로 유지할 수 있나요?

ESC를 누를 때까지 Tmux를 '접두사 모드'로 유지할 수 있나요?

Vim의 모드와 마찬가지로 Tmux가 Escape를 누를 때까지 '접두사 모드'(실제로 무엇이라고 부르나요?)에 머물고 싶습니다. 그러면 다음과 같은 작업을 수행할 수 있습니다.

Prefix h j + +

대신에

Prefix h Prefix j Prefix + Prefix +

타이머나 과도한 코드에 대해 걱정할 필요가 없습니다.

답변1

나는 이것을 다음과 같이 게시했습니다.문제그리고 이런 답변을 받았습니다:

모든 키를 다시 바인딩하여 switch-client -Tprefix각 명령 시퀀스의 끝에 추가할 수 있지만 이를 수행하는 자동화된 방법은 없습니다.

여기서 문제는 명령에서 오류가 발생하면 작동하지 않지만 다음을 사용하여 문제를 해결할 수 있다는 것입니다.

예, 오류가 발생하면 run-shell을 사용하여 이 문제를 해결할 수 있는 명령 시퀀스가 ​​취소됩니다.

run "tmux mycmd; tmux switch-client -Tprefix"

그러나 이렇게 하면 오류가 표시되지 않을 수 있습니다.

내 현재 구성은 다음과 같습니다.

bind c new-window \; switch-client -T prefix
bind . command-prompt \; switch-client -T prefix
bind , copy-mode \; switch-client -T prefix

# Vim style splits
bind s split-window -v \; switch-client -T prefix
bind v split-window -h \; switch-client -T prefix

# Double tab to cycle panes
bind C-a select-pane -t :.+ \; switch-client -T prefix

내가 수집한 바에 따르면 tmux는 다양한 바인딩에 대해 다양한 컨텍스트를 사용합니다. 바인드를 사용할 컨텍스트를 지정하려면 를 사용합니다. bind <key> -T <context>여기서 접두사는 기본값입니다. 를 사용하여 컨텍스트를 전환할 수 있으므로 switch-client -T <context>우리가 하는 일은 모든 명령 뒤에 접두사를 다시 적용하는 것입니다.

이 방법의 단점은 다음과 같습니다.

  • 모든 바인딩에서 명시적으로 수행해야 합니다.
  • 오류가 발생하는 경우(예: 세션이 하나만 실행 중일 때 다음 세션으로 전환하려고 시도하는 경우) 일반 모드로 돌아갑니다.
  • Esc뿐만 아니라 바인딩되지 않은 키에서도 종료됩니다.

보너스!다음과 같은 기능을 사용하여 오랫동안 접두사 모드를 유지할 때 매우 유용한 펑키한 표시기를 추가할 수 있습니다.

set -g status-right "#{?client_prefix,#[reverse]● #[noreverse],#[reverse]○ #[noreverse]}"

관련 정보