Tôi đang cố gắng tạo một ràng buộc bàn phím trong Neovim để gửi một khối được chọn đến thiết bị đầu cuối Neovim đã mở. Tôi đã sử dụng những câu trả lời này làm hướng dẫn https://vi.stackexchange.com/a/3390/3405 https://stackoverflow.com/a/6271254/859391
Mặc dù khi tôi đang cố gắng gọi lệnh bằng Visual Line đã chọn, tôi vẫn tiếp tục gặp lỗi Không có phạm vi cho phép. Tôi có thiếu một cái gì đó rõ ràng?
function! s:get_visual_selection()
" Why is this not a built-in Vim script function?!
let [lnum1, col1] = getpos("'<")[1:2]
let [lnum2, col2] = getpos("'>")[1:2]
let lines = getline(lnum1, lnum2)
let lines[-1] = lines[-1][: col2 - (&selection == 'inclusive' ? 1 : 2)]
let lines[0] = lines[0][col1 - 1:]
return join(lines, "\n")
endfunction
augroup Terminal
au!
au TermOpen * let g:last_terminal_job_id = b:terminal_job_id
augroup END
function! REPLSend(lines)
call jobsend(g:last_terminal_job_id, lines[0])
call jobsend(g:last_terminal_job_id, "\r") " needed for the way REPL handles the input
endfunction
command! REPLSendLine call REPLSend([s:get_visual_selection()])
vnoremap <silent> <leader>l :REPLSendLine<cr>
" leader is <Space>