__ _ _______ _____ _______ _______ ______ _______
| \ | |______ | | | |______ |_____/ | | |
| \_| |______ |_____| | |______ | \_ | | |
Pull requests are welcome, and if you want to become a contributor/maintainer I can also give you the right accesses to the codebase. 😄
Use the same terminal for everything. The main reason for this plugin is to reuse the terminal easily. All commands open a terminal if one does not already exist. REPL commands open a terminal and the proper REPL if not already opened.
- Neovim/Vim terminal helper functions/commands.
- Wraps REPLs to receive current file, line or selection.
- Multiple terminal support:
You can install this plugin using any vim plugin manager by using the path on GitHub for this repository:
[Plugin|Plug|...] 'kassio/neoterm'
See the your plugin manager documentation for more information.
For installation without a package manager, you can clone this Git repository into a bundle directory as with pathogen, and add the repository to your runtime path yourself. First clone the repository:
cd ~/.vim/bundle
git clone https://github.com/kassio/neoterm.git
Then, modify your ~/.vimrc
file to add this plugin to your runtime path:
set nocompatible
filetype off
let &runtimepath.=',~/.vim/bundle/neoterm'
filetype plugin on
You can add the following line to generate documentation tags automatically,
if you don't have something similar already, so you can use the :help
command
to consult neoterm's online documentation:
silent! helptags ALL
For Windows users, replace usage of the Unix ~/.vim
directory with
%USERPROFILE%\_vim
, or another directory if you have configured
Vim differently. On Windows, your ~/.vimrc
file will be similarly
stored in %USERPROFILE%\_vimrc
.
Neoterm's default behavior is to create a new buffer on the current window when
opening a neoterm. You can change this with g:neoterm_default_mod
. Check the
documentation
for more information.
:T {command}
: Opens a terminal, or use an opened terminal, and runs the given command within a terminal.:Tmap {command}
: maps a given command tog:neoterm_automap_keys
.
:3T {command}
: Will send the command toneoterm-3
.
I like to set some mappings to make me more productive.
" 3<leader>tl will clear neoterm-3.
nnoremap <leader>tl :<c-u>exec v:count.'Tclear'<cr>
This feature was removed on 05/Feb/2017, please consider using vim-test with
neoterm
strategy to replace this feature.
TREPLSendFile
: sends the current file to a REPL in a terminal.TREPLSendLine
: sends the current line to a REPL in a terminal.TREPLSendSelection
: sends the selection to a REPL in a terminal.<Plug>(neoterm-repl-send)
: sends with text-objects or motions, or sends the selection to a REPL in a terminal.<Plug>(neoterm-repl-send-line)
: sends the current line to a REPL in a terminal.
- Clojure:
lein repl
- Elixir:
iex
andiex -S mix
(ifconfig/config.exs
exists) - GNU Octave:
octave
- For Octave 4.0.0 and later, you can enable Qt widgets (dialogs, plots, etc.)
using
g:neoterm_repl_octave_qt = 1
- For Octave 4.0.0 and later, you can enable Qt widgets (dialogs, plots, etc.)
using
- Haskell:
ghci
- Idris:
idris
- Janet:
janet
- JavaScript:
node
- Java:
java
- Julia:
julia
- LFE:
lfe
- Lua with
lua
andluap
. - MATLAB:
matlab -nodesktop -nosplash
- PARI/GP:
gp
- PHP:
g:neoterm_repl_php
andpsysh
andphp
- Python:
ipython
,jupyter console
andpython
- R / R Markdown:
R
- Racket:
racket
- Rails:
bundle exec rails console
- Ruby:
pry
andirb
- Rust:
evcxr
- SML:
rlwrap sml
orsml
- Scala:
sbt console
- Stata:
stata -q
- TCL:
tclsh
Most standard file extensions for the above REPLs are picked up by Neovim/Vim's default filetype plugins. However, there are some exceptions:
- Julia
.jl
files, which are detected asfiletipe=lisp
- Idris
.idr
,.lidr
files which are not recognised as any filetype - LFE
.lfe
files, which are not recognized as any filetype
To fix this, either install a suitable plugin for the language or add something like
the following to your init.vim
:
au VimEnter,BufRead,BufNewFile *.jl set filetype=julia
au VimEnter,BufRead,BufNewFile *.idr set filetype=idris
au VimEnter,BufRead,BufNewFile *.lidr set filetype=lidris
au VimEnter,BufRead,BufNewFile *.lfe set filetype=lfe
If you want to use the jupyter console REPL present on your path, you can use
this configuration in your init.vim
:
function! Chomp(string)
return substitute(a:string, '\n\+$', '', '')
endfunction
let g:neoterm_repl_python = Chomp(system('which jupyter')) . ' console'
Note that the same approach may be used to use Jupyter for R or Stata, provided the appropriate kernels (IRkernel and stata_kernel) are installed.