2
0
mirror of https://github.com/mhinz/neovim-remote synced 2024-11-11 13:10:34 +00:00
Go to file
2016-11-13 21:10:17 +01:00
bin Improve usage message 2016-11-08 16:27:47 +01:00
pictures README: add nicer header logo 2015-12-28 11:12:15 +01:00
.gitignore Add .gitignore 2016-06-05 13:27:55 +02:00
CHANGELOG.md Release 1.3.0 2016-10-06 20:57:55 +02:00
LICENSE Add LICENSE 2015-12-04 15:58:37 +01:00
Makefile Make: avoid twine errors by cleaning first 2016-11-08 16:32:19 +01:00
README.rst README: remove superfluous line 2016-11-13 21:10:17 +01:00
setup.py Improve usage message 2016-11-08 16:27:47 +01:00

.. figure:: https://github.com/mhinz/neovim-remote/raw/master/pictures/nvr-logo.png
   :alt: Logo

-  `Intro <#intro>`__
-  `Installation <#installation>`__
-  `FAQ <#faq>`__
-  `How to open directories? <#how-to-open-directories>`__
-  `Examples <#examples>`__
-  `Demos <#demos>`__

Intro
-----

**nvr** is a tool that helps controlling nvim processes.

It basically does two things:

1. adds back the ``--remote`` family of options (see ``man vim``)
2. helps controlling the current nvim from within ``:terminal``

To target a certain nvim process, you either use the ``--servername``
option or set the environment variable ``$NVIM_LISTEN_ADDRESS``.

Since ``$NVIM_LISTEN_ADDRESS`` is implicitely set by each nvim process,
you can call **nvr** from within Neovim (``:terminal``) without
specifying ``--servername``.

Installation
------------

::

    $ pip3 install neovim-remote

FAQ
---

How to open directories?
^^^^^^^^^^^^^^^^^^^^^^^^

``:e /tmp`` opens a directory view via netrw. Netrw works by hooking
into certain events, ``BufEnter`` in this case (see ``:au FileExplorer``
for all of them).

Unfortunately Neovim's API doesn't trigger any autocmds on its own, so
simply ``nvr /tmp`` won't work. Meanwhile you can work around it like
this:

::

    $ nvr /tmp -c 'doau BufEnter'

Examples
--------

In one window, create the server process:

::

    $ NVIM_LISTEN_ADDRESS=/tmp/nvimsocket nvim

In another window do this:

.. code:: shell

    $ # Spares us from using --servername all the time:
    $ export NVIM_LISTEN_ADDRESS=/tmp/nvimsocket
    $ # Open 2 files in the server:
    $ nvr --remote file1 --remote file2
    $ # Send keys to the current buffer of the server:
    $ # Enter insert mode, enter 'abc', and go back to normal mode again:
    $ nvr --remote-send 'iabc<esc>'
    $ # Evaluate any VimL expression.
    $ # Get all listed buffers:
    $ nvr --remote-expr "join(sort(map(filter(range(bufnr('$')), 'buflisted(v:val)'), 'bufname(v:val)')), "\""\n"\"")"
    .config/git/config
    vim/vimrc
    zsh/.zprofile

See ``nvr -h`` for all options.

Demos
-----

(Click the GIFs to watch them full-size.)

Using nvr from a different window (another tmux pane in this case):
|Demo 1|

Using nvr from within Neovim: |Demo 2|

.. |Demo 1| image:: https://github.com/mhinz/neovim-remote/raw/master/pictures/demo1.gif
.. |Demo 2| image:: https://github.com/mhinz/neovim-remote/raw/master/pictures/demo2.gif