GithubHelp home page GithubHelp logo

talatmursalin / neoterm Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kassio/neoterm

0.0 0.0 0.0 336 KB

Wrapper of some vim/neovim's :terminal functions.

License: Other

Vim Script 100.00%

neoterm's Introduction

neoterm

__   _ _______  _____  _______ _______  ______ _______
| \  | |______ |     |    |    |______ |_____/ |  |  |
|  \_| |______ |_____|    |    |______ |    \_ |  |  |

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:
    • many-terms

Installation

Vundle/Plug.vim/minpac/any other

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.

Manual

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

Windows

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.

test libs (removed on 05/Feb/2017)

This feature was removed on 05/Feb/2017, please consider using vim-test with neoterm strategy to replace this feature.

REPL

  • 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.

Supported REPLs

  • Clojure: lein repl
  • Elixir: iex and iex -S mix (if config/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
  • Haskell: ghci
  • Idris: idris
  • JavaScript: node
  • Julia: julia
  • LFE: lfe
  • Lua with lua and luap.
  • MATLAB: matlab -nodesktop -nosplash
  • PARI/GP: gp
  • PHP: g:neoterm_repl_php and psysh and php
  • Python: ipython and python
  • R / R Markdown: R
  • Racket: racket
  • Rails: bundle exec rails console
  • Ruby: pry and irb
  • SML: rlwrap sml or sml
  • Scala: sbt console
  • TCL: tclsh

Troubleshooting

Most standard file extensions for the above REPLs are picked up by Neovim/Vim's default filetype plugins. However, there are two exceptions:

  • Julia .jl files, which are detected as filetipe=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

Other useful commands

  • :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.

Dynamic commands

  • :3T {command}: Will send the command to neoterm-3.

useful mappings:

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>

Contributing

Open a pull request to add REPLs and other features to this plugin. ๐Ÿ˜ƒ

Changelog

  • 01/09/2019
    • Use a proper terminal marker for each OS. Unix-like uses ;#neoterm and windows uses &::neoterm. (Same strategy used on FZF) (#246)
  • 20/08/2019
    • Destroy managed neoterm buffer loaded from session
    • Refactor the neoterm target function, the function the retrieves the desired neoterm to act on, to its own autoload function set (neoterm#target#).
    • Only manage neoterm terminals with TermOpen. (#243)
  • 19/08/2019
    • Only use TermOpen when it' available. (#243)
  • 18/08/2019
    • Enable neoterm to manage any terminal buffer. The TermOpen event is being used to associate neovim terminal with neoterm.
    • Remove deprecated g:neoterm_open_in_all_tabs and fix g:neoterm_term_per_tab (#237).
    • Better message when trying to execute a command on an already closed neoterm. Instead of show the error stacktrace just shows the message: "neoterm-X not found (probably already closed)" (#242)
  • 21/06/2019
    • Fix bug with window resizing for non-default mods (#239).
  • 07/06/2019
    • g:neoterm_keep_term_open keeps hidden terminals open even if they are closed without using :Tclose
  • 11/03/2019
    • Make the signcolumn=auto in neoterm buffer.
  • 29/01/2019
    • Improve g:neoterm_open_in_all_tabs documentation.
  • 21/12/2018
    • Add g:neoterm_term_per_tab, a way to send the commands to the term associated to the vim tab.
    • fix :Topen without g:neoterm_default_mod wasn't re-opening neoterm buffer.
  • 17/11/2018
    • add :Tclear!, this will clear the neoterm buffer scrollback (history)
  • 12/11/2018
    • Use chansend instead of jobsend, which was deprecated.
  • 12/11/2018
    • Fix E119: Not enough arguments for function: <SNR>112_repl_result_handler
  • 09/11/2018
    • Yet another work with '%' expandability.
      • '%' will be expanded to the current file path, respect g:neoterm_use_relative_path;
      • '%' will be expanded to '%', not the current file path, useful in Windows.
  • 20/07/2018
    • \% Will not expand the %. (Escaping the %)
  • 03/03/2018
    • DEPRECATE g:neoterm_split_on_tnew - :Tnew now accepts vim mods (:help mods).
    • Introduce g:neoterm_tnew_mod to set a default :Tnew mod (:help mods).
    • Revamp :Topen. Now :[mods][N]Topen accepts vim mods (:h mods) and a target, so if one wants to open the neoterm with id 2 in vertical, one can do :vert 2Topen.
    • Revamp :Tclose. Now :[N]Tclose[!] accepts a target, so one can close any neoterm by its id.
    • Fix a bug with :[N]Ttoggle and also make it accepts the neoterm id.
  • 04/03/2018
    • Revamp :[N]Ttoggle, now it accepts vim mods (:help mods) when the toggle is opening the neoterm.
    • Revamp :[N]T, now it accepts the target, so one can send the command for any neoterm by id, like, to send commands to the neoterm 3, one can do :3T ls.
    • DEPRECATE T[N], Topen[N], Tclose[N], Tclear[N], Tkill[N] - The neoterm id was moved to the beginning of the command, so instead of :T2, for example, one must use :2T.
  • 07/03/2018
    • Do not call :bdelete! if buffer does not exist term#destroy was calling neoterm#close which was causing a cyclic call to :bdelete! <neoterm.buffer_id>.
  • 08/03/2018
    • Add vim's terminal support! ๐ŸŽ‰๐ŸŽ‰๐ŸŽ‰
  • 15/03/2018
    • Fix bug where :[N]T wasn't accepting quoted arguments, like: :T echo "ls".
    • Make handlers/callbacks work in vim. Destroy instance when destroying a terminal.
  • 18/03/2018
    • Deprecate g:neoterm_tnew_mod and g:neoterm_position in favor of g:neoterm_default_mod, which will be used for every new neoterm window.
    • Add the feature of the last active neoterm. When sending a command or navigating among neoterms the last one will be marked as the last active and it'll be used by default in the next commands.

neoterm's People

Contributors

alok avatar ararslan avatar bitboxer avatar dajvido avatar fokoid avatar goto-engineering avatar hiberabyss avatar icholy avatar jgreco avatar jodosha avatar kassio avatar leonardt avatar lis2 avatar majjoha avatar mrichards42 avatar njichev avatar npbee avatar pcaneill avatar randy3k avatar richchurcher avatar rtwo avatar stephanvd avatar stsewd avatar tdy avatar tomasv avatar ukuloskit avatar vhakulinen avatar will avatar wodesuck avatar zegervdv avatar

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.