On 09/11/2017 12:36, Lifepillar wrote:
On 08/11/2017 22:15, Bram Moolenaar wrote:

Hmm, perhaps you could try something like this:

    :tmap <expr> <Esc>b SendToTerm("\<Esc>b")
    func SendToTerm(what)
      call term_sendkeys('', a:what)
      return ''
    endfunc

No idea if this works, haven't tried it.

That appears to work fine!

A follow-up on this: I have found that a drawback of your solution is that, in an instance of Vim run inside a Vim terminal window, I need to
type Esc twice to return to Normal mode (I often happen to run Vim
inside Vim e.g., when I `git commit`).

What I am using now instead is this:

    tnoremap <s-left> <esc>b
    tnoremap <s-right> <esc>f

The first time I tried, I used ^[b and ^[f (with literal Esc), but that
did not work (^[b and ^[f on the rhs were translated into <s-left> and
<s-right> because of my settings). With <esc>, though, it works as
expected.

To recap, my configuration is as follows:

1. My terminal sends ^[b and ^[f when I type alt-left/right arrows.

2. In my vimrc, terminal keycodes ^[b and ^[f are tied to Vim
   keycodes <s-left>/<s-right> using:

      set <s-left>=^[b
      set <s-right>=^[f

   This makes alt-arrows work as shift-arrows in Insert and Command
   mode, which means that I can jump between words with those key
   combinations. A Vim terminal window, though, now sees \033[1;2D
   and \033[1;2D when I type alt-arrows (because Shift-arrows are
   mapped to those sequences by my terminal).

3. To fix that, I remap <s-left> and <s-right> in Terminal mode to send
   the original sequence:

    tnoremap <s-left> <esc>b
    tnoremap <s-right> <esc>f

So, now I have alt-arrows work consistently in all modes, even in Vim
instances run inside a terminal window run inside a Vim instance run
inside etc... and Esc returns to Normal mode immediately under all
circumstances.

I don't know whether this strategy has any drawback (it seems fine so
far for me), and I may be missing something.

But if it is useful, you might want to update the terminal-special-key
section in the manual.

Life.

--
--
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+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to