在vim函数中延迟tmux发送键

时间:2018-07-02 14:14:12

标签: vim tmux

我有一个运行特定命令的shell脚本(将其命名为a.sh)。在某些时候,该命令需要用户输入。

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

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>

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

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

1 个答案:

答案 0 :(得分:1)

您可以尝试通过shell睡眠在后台运行最后的tmux行。将函数的最后一行替换为

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

例如,如果您想将()替换为&&,则只需要;