__ _ _______ _____ _______ _______ ______ _______
| \ | |______ | | | |______ |_____/ | | |
| \_| |______ |_____| | |______ | \_ | | |
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.gitThen, modify your ~/.vimrc file to add this plugin to your runtime path:
set nocompatible
filetype off
let &runtimepath.=',~/.vim/bundle/neoterm'
filetype plugin onYou 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 ALLFor 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:
iexandiex -S mix(ifconfig/config.exsexists) - 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
luaandluap. - MATLAB:
matlab -nodesktop -nosplash - PARI/GP:
gp - PHP:
g:neoterm_repl_phpandpsyshandphp - Python:
ipython,jupyter consoleandpython - R / R Markdown:
R - Racket:
racket - Rails:
bundle exec rails console - Ruby:
pryandirb - Rust:
evcxr - SML:
rlwrap smlorsml - 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
.jlfiles, which are detected asfiletipe=lisp - Idris
.idr,.lidrfiles which are not recognised as any filetype - LFE
.lfefiles, 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=lfeIf 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.