![如何发送键来打破 tmux 中的滚动模式?](https://linux22.com/image/24485/%E5%A6%82%E4%BD%95%E5%8F%91%E9%80%81%E9%94%AE%E6%9D%A5%E6%89%93%E7%A0%B4%20tmux%20%E4%B8%AD%E7%9A%84%E6%BB%9A%E5%8A%A8%E6%A8%A1%E5%BC%8F%EF%BC%9F.png)
我在 VIM 中有一个键映射,如下所示:
map <F5> :silent !tmux send-keys -t 0:0 C-m "python %" C-m<cr>
当我按 F5 时,vim 在 tmux 会话 0、窗口 0 中运行我当前的 Python 脚本。但是,如果窗口 0 当前处于滚动状态(即 Shift-PgUp 或鼠标滚动),tmux 将运行命令但不会滚动新输出。
如何向 tmux 窗口发送一个键以使其脱离滚动模式? (我希望它在输出时滚动)
笔记:我通常通过按 Esc 退出滚动模式,但我不知道如何使用 发送 Escape 键tmux send-keys
。我尝试发送C-[
,但没有成功。
答案1
您可以使用 ANSI-C 引用发送文字转义(和换行符)(还有更多相关内容)这里),例如将转义发送至0:0
:
tmux send-keys -t 0:0 $'\e'
对于您的映射,假设我理解正确,您可以执行以下操作:
map <F5> :silent !tmux send-keys -t 0:0 $'\e'"python"$'\n'<CR>
请注意,转义符始终会被发送,因此为了解决 shell 接收转义符的问题,您可以发送额外的换行符:
map <F5> :silent !tmux send-keys -t 0:0 $'\e'$'\n'"python"$'\n'<CR>