On Thursday, October 25, 2018 at 2:33:38 PM UTC-5, Lifepillar wrote:
> On 25/10/2018 17:32, Kelvin Lawrence wrote:
> > I'm enjoying the new :term feature in 8.1
> > 
> > I have my code on the left and a job running on the right. The job is a console environment for Groovy. Is there an easy way to copy from the code on the left and paste into the console I have running on the right? I know I cannot turn modifiable on but is there any way to send a paste command to the :term job?
> 
> I use code similar to this:
> 
>    nnoremap <silent> <leader>x :<c-u>call TermSend([getline('.')])<cr>
>    vnoremap <silent> <leader>x :<c-u>call TermSend(GetSelection())<cr>
> 
>    fun! TermSend(lines)
>      if empty(get(b:, 'bound_terminal', '')) ||
>         \ !bufexists(b:bound_terminal)
>        let b:bound_terminal = str2nr(input('Terminal buffer: '))
>      endif
>      for l:line in a:lines
>        call term_sendkeys(b:bound_terminal, l:line . "\r")
>      endfor
>      call cursor(line('.') + 1, 1) " Move to the next line
>    endf
> 
>    fun! GetSelection()
>      if getpos("'>") != [0, 0, 0, 0]
>        let [lnum1, col1] = getpos("'<")[1:2]
>        let [lnum2, col2] = getpos("'>")[1:2]
>        let l:lines = getline(lnum1, lnum2)
>        let l:lines[-1] = lines[-1][:col2-(&selection=='inclusive'?1:2)]
>        let l:lines[0] = l:lines[0][col1 - 1:]
>        return l:lines
>      else
>        return []
>      end
>    endf
> 
> Then typing \x will send the current line or the current selection to
> a terminal buffer (the first time, you are prompted to choose the
> buffer's number). The function sends one line at a time: it is slower
> than sending the whole text in one swoop, but I have found it to be more
> reliable.
> 
> Now, if only there was a simpler way to get the currently selected text…
> 
> Enjoy,
> Life.
Thanks for the detailed reply. Very informative,
Cheers
Kelvin
-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
--- 
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment