def g:SendRangeToTerminal(start_line: number, end_line: number) const terms = term_list() if terms->empty() echomsg "No Terminal windows found" return endif var line_num = start_line for line in getline(start_line, end_line) line_num += 1 const spl_cmd = line->matchlist('\vVIMST (sleep|ctrl) ([0-9]+|[a-z])') if !spl_cmd->empty() const [_, cmd, arg1; _] = spl_cmd if cmd == "sleep" timer_start(str2nr(arg1), (_) => g:SendRangeToTerminal(line_num, end_line)) return elseif cmd == "ctrl" terms[0]->term_sendkeys(nr2char(char2nr(arg1) - 96)) continue endif endif terms[0]->term_sendkeys(line .. "\") endfor enddef command -range -bar SendToTerm :call g:SendRangeToTerminal(, ) vnoremap s :SendToTerm nnoremap s :SendToTerm autocmd BufNewFile,BufRead cheat.sh nnoremap :SendToTerm \| norm j autocmd BufNewFile,BufRead cheat.sh nnoremap <2-LeftMouse> :SendToTerm