memo

2025-03-09

tmux でコマンドプロンプトの位置まで移動する方法

コマンドの実行結果が長かった場合に、そのコマンド実行の直前までターミナル画面をスクロールさせたいことがある。 そういう場合に使える、 tmux でコマンドプロンプトの位置まで移動する方法について。

tmux の man に書かれているが:

  • copy mode で使える next-prompt, previous-prompt というコマンドがあり、これらを使うことでコマンドプロンプトの位置に移動することができる。

  • tmux にプロンプトの位置を伝えるため、エスケープシーケンス \033]133;A\033\\ を出力する必要がある。

ということでこんな感じに設定ファイルに書くと:

  • .zshrc:

    PROMPT=$'%{\033]133;A\033\\%}'"${PROMPT}"
    
  • .bashrc:

    PS1='\[\e]133;A\e\\\]'"${PS1}"
    
  • .tmux.conf:

    bind-key -T copy-mode C-S-Up send-keys -X previous-prompt
    bind-key -T copy-mode C-S-Down send-keys -X next-prompt
    bind-key -T copy-mode-vi C-S-Up send-keys -X previous-prompt
    bind-key -T copy-mode-vi C-S-Down send-keys -X next-prompt
    

copy mode に入ってから ctrl + shift + ↑/↓で前/次のプロンプトまで移動できるようになる