Giter VIP home page Giter VIP logo

neovim-remote's Introduction

Logo

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

Assuming ~/bin is in your $PATH:

1) Install the Python provider for Neovim:

$ pip3 install neovim

2a) Using the git repo:

$ mkdir -p ~/github
$ git clone https://github.com/mhinz/neovim-remote.git ~/github/neovim-remote
$ ln -s ~/github/neovim-remote/nvr ~/bin/nvr

2b) Download the script directly:

$ # Or alternatively:
$ curl -Lo ~/bin/nvr https://raw.githubusercontent.com/mhinz/neovim-remote/master/nvr

3)

$ chmod 700 ~/bin/nvr

Examples

In one window, create the server process:

$ NVIM_LISTEN_ADDRESS=/tmp/nvimsocket nvim

In another window do this:

$ # 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 fullscreen.)

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

Using nvr from within Neovim: Demo 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.