vim-galore/content/neovim.md
2016-02-05 12:18:25 +01:00

1.4 KiB

Neovim


:terminal

Neovim implements a proper terminal emulator (libvterm) and can easily fire up a new shell via :terminal.

In Vim you run interactive programs like this: :!read foo && echo $foo. In Neovim this won't work because :! uses named pipes (libuv processes) for communication now. Use :te read foo && echo $foo instead.

By now you might have noticed, that you can't leave the insert mode in a terminal buffer via <esc>, since it gets captured by the terminal emulator instead of Neovim. Use <c-\><c-n> instead.

Since terminal buffers are a new kind of buffer (&buftype is set to "terminal"), there are also new commands for creating terminal mappings: :tmap, :tnoremap, and :tunmap.

There are also two new autocmd events: TermOpen and TermClose.

Here an example configuration:

if has('nvim')
  nnoremap <leader>t  :vsplit +terminal<cr>
  tnoremap <esc>      <c-\><c-n>
  tnoremap <a-h>      <c-\><c-n><c-w>h
  tnoremap <a-j>      <c-\><c-n><c-w>j
  tnoremap <a-k>      <c-\><c-n><c-w>k
  tnoremap <a-l>      <c-\><c-n><c-w>l
  autocmd BufEnter term://* startinsert
endif

Related help:

:h :terminal
:h nvim-terminal-emulator