Use the same terminal for everything. The main reason for this plugin is reuse the terminal easily. All commands opens a terminal if it's not open or reuse the open terminal. REPL commands, opens a terminal and the proper REPL, if it's not opened.
- Compatible with Vim and NeoVim.
- Adds functions/commands to Vim or NeoVim.
- Wraps some REPL to receive current line or selection.
- Many terminals support:
To install this plugin, you should use one of the following methods.
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
.
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
Because the author of this plugin is a weird nerd, this is his preferred installation method.
This feature was removed on 05/Feb/2017, please consider to use the
vim-test with neoterm
strategy to replace this feature
TREPLSend
: sends the current line or the selection to a REPL in a terminal.TREPLSendFile
: sends the current file 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.
- Ruby:
pry
andirb
- Rails:
bundle exec rails console
- Python:
ipython
andpython
- JavaScript:
node
- Elixir:
iex
- Julia:
julia
- R / R Markdown:
R
- Haskell:
ghci
- Idris:
idris
- 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
- MATLAB:
matlab -nodesktop -nosplash
- PARI/GP:
gp
- PHP:
psysh
andphp
Most standard file extensions for the above REPLs are picked up by Vim or NeoVim's default filetype plugins. However, there are two exceptions:
- Julia
.jl
files, which are detected asfiletipe=lisp
- Idris
.idr
,.lidr
files which are not recognised as any filetype To fix this, either install a suitable plugin for the language or add something like the following to yourinit.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
:T <command>
: Opens a terminal, or use an opened terminal, and runs the given command within a terminal.:Tmap <command>
: maps a the given command to,tt
.
Open a pull request, repls and other features to this plugin. 😃
let g:neoterm_position = 'horizontal'
let g:neoterm_automap_keys = ',tt'
nnoremap <silent> <f10> :TREPLSendFile<cr>
nnoremap <silent> <f9> :TREPLSendLine<cr>
vnoremap <silent> <f9> :TREPLSendSelection<cr>
" or use keymaps that works with text-objects
nmap gx <Plug>(neoterm-repl-send)
xmap gx <Plug>(neoterm-repl-send)
nmap gxx <Plug>(neoterm-repl-send-line)
" now can use gx{text-objects} such as gxip
" Useful maps
" hide/close terminal
nnoremap <silent> ,th :call neoterm#close()<cr>
" clear terminal
nnoremap <silent> ,tl :call neoterm#clear()<cr>
" kills the current job (send a <c-c>)
nnoremap <silent> ,tc :call neoterm#kill()<cr>
" Rails commands
command! Troutes :T rake routes
command! -nargs=+ Troute :T rake routes | grep <args>
command! Tmigrate :T rake db:migrate
" Git commands
command! -nargs=+ Tg :T git <args>