In few of my earlier articles, I demonstrated how to set up LSP, DAP and Fuzzy Finder for Neovim, plugins to help you code faster, and also how to convert .vimrc/init.vim to init.lua. In this article, let’s explore a few niche Neovim plugins which serve very specific purposes.
For the demonstration, I am going to use the Lua based configuration I crafted in my earlier article. Of course you can install these plugins using Vim built-in packages support (
:h package), or any other plugin managers like vim-plug.
Firenvim turns browser into a Neovim client. Just click on any
textarea and it will be immediately replaced by an instance of Firenvim. For those who do a lot typing or online coding in Chrome or Firefox (current supported browsers), you will find this plugin very useful.
OSC stands for Operating System Command, a category of ANSI escape sequences which instruct the terminal emulator to perform certain actions.
OSC52 is one of these sequence and it tells the terminal that the string it carries must be copied to the system clipboard.
If you day to day work requires you to log into remote servers via a terminal emulator, perform some tasks and copy text from remote servers to local machine’s clipboard, then this plugin will be very useful for you.
This is not really a Neovim plugin but a plugin for Visual Studio Code. Just like Firenvim which embeds Neovim in browsers, vscode-neovim embeds Neovim into Visual Studio Code.
This plugin is for those who want full Neovim experience in Visual Studio Code.
VSCodeVim also support Neovim integration but is still in experimental stage.
Vimpeccable is a plugin for Neovim that allows you to easily replace your Vimscript-based
init.vim with a Lua-based one. Vimpeccable adds to the existing Neovim Lua API by adding new Lua commands to easily map keys directly to Lua.
If you want a Lua based configuration without going too deep into Lua and the Neovim APIs, this plugin is for you. It mirrors the standard Vim APIs and has all the variations of
xnnoremap, etc. that you probably are already familiar with.
Jupyter-Vim provides a two-way integration between Vim and Jupyter. Develop code on a Jupyter notebook without leaving the terminal. Send lines from Vim to a Jupyter console/Qt-console. Have a MATLAB-like “cell-mode”.
If you need seamless integration between Jupyter and Vim/Neovim, then this plugin is for you.
For this plugin to work, make sure you install Jupyter Console or Qt Console.
Once configured, you can run selected lines of codes or send the entire file to Jupyter console.
codi.vim provides an interactive scratchpad for hackers, with a similar interface to Numi. It opens a pane synchronized to your main buffer which displays the results of evaluating each line as you type (with NeoVim or Vim with
+channel, asynchronously). It's extensible to nearly any language that provides a REPL (interactive interpreter)!
Languages with built-in support:
Below is a sample screen shot. You can see that the
stdout is immediately available to the right.
For developers preferring an interactive programming environment, this plugin could be of use to you.
vim-slime, neoterm, vim-floaterm
Similar to jupyter-vim which integrates Vim with Jupyter, vim-slime integrates Vim with a REPL which could be in Python, R, Clojure, etc.
You can configure the target to be GNU screen, tmux, Vim terminal, Neovim terminal, kitty, conemu, etc.
In below screen I configured the target to be Neovim terminal and I started a Python REPL in the terminal. I can then press
C-c C-c to send the Python code to the REPL.
neoterm allows you to use the terminal for everything. The main purpose for this plugin is to reuse the terminal easily. All commands open a terminal if one does not already exist.
- Neovim/Vim terminal helper functions/commands.
- Wraps REPLs to receive current file, line or selection.
- Multiple terminals support.
In below screen I use neoterm commands (
TREPLSendFile, TREPLSendLine, TREPLSendSelection) to send the code to a Python REPL.
Another option for you is vim-floaterm which also allows you to send code to a floating terminal with REPL running. In below screen, I use the
FloatermSend command to send the Python code to the pop-up REPL.
For those who write technical or scientific documentation using LaTeX, VimTex could be useful for you. Besides being a filetype and syntax plugin for LaTeX files, it integrates with other tools for document compilation and PDF viewing.
Personally I find vim-oscyank helpful for me as my job requires me to log in to servers, and frequently I need to copy text to my local machine.
The dotfiles I used in this article can be found at this repository.
Do check out the following articles.
Vim/Neovim — Managing Multiple Projects
Managing multiple projects from Vim/Neovim.