首页 > 解决方案 > 在 vim 函数中延迟 tmux 发送键

问题描述

我有一个a.sh运行某个命令的 shell 脚本(让我们命名它)。在某些时候,此命令需要用户输入。

我已经设置了一个 vim 键绑定,我a.sh在 tmux 会话中运行。

function! CreateTmux()
    !tmux has-session -t mysession || tmux new-session -d -s mysession
    !tmux send-keys -t mysession 'a.sh' Enter
    " This should be delayed by a few seconds
    !tmux send-keys -t mysession 'my choice' Enter
endfunction

nnoremap <F9> :call CreateTmux()<CR>

我想send-keys通过 tmux 延迟会话以输入我对提示的选择。这是我的代码。

局限性:
1. 希望避免在vim中阻塞命令,以便继续工作。
2.我不能编辑a.sh所以没有提示就不能让它通过。
3. 我没有 vim 8 并且无法在我正在处理的服务器上获取它。

标签: vimtmux

解决方案


您可以尝试在后台运行最后一行 tmux 并使用 shell sleep。将函数的最后一行替换为

!(sleep 4 && tmux send-keys -t mysession 'my choice' Enter)&

()例如,如果您想替换&&by ,您只需要;


推荐阅读