Giter Club home page Giter Club logo

vim-slime's Introduction

vim-slime

Grab some text and "send" it to a GNU Screen / tmux session.

VIM ---(text)---> screen / tmux

Presumably, your screen contains something interesting like, say, a Clojure REPL. But if it can receive typed text, it can receive it from vim-slime.

The reason you're doing this? Because you want the benefits of a REPL and the benefits of using Vim (familiar environment, syntax highlighting, persistence ...).

Read the blog post.

Installation

I recommend installing pathogen.vim, and then simply copy and paste:

cd ~/.vim/bundle
git clone git://github.com/jpalardy/vim-slime.git

If you like it the hard way, copy plugin/slime.vim from this repo into ~/.vim/plugin.

Configuration (GNU Screen)

By default, GNU Screen is assumed, you don't have to do anything. If you want to be explicit, you can add this line to your .vimrc:

let g:slime_target = "screen"

Because Screen doesn't accept input from STDIN, a file is used to pipe data between Vim and Screen. By default this file is set to $HOME/.slime_paste. The name of the file used can be configured through a variable:

let g:slime_paste_file = "$HOME/.slime_paste"

This file is not erased by the plugin and will always contain the last thing you sent over. If this is a problem, I recommend you switch to tmux.

When you invoke vim-slime for the first time (see below), you will be prompted for more configuration.

screen session name

This is what you put in the -S flag, or one of the line of "screen -ls".

screen window name

This is the window number or name, zero-based.

Configuration (tmux)

Tmux is not the default, to use it you will have to add this line to your .vimrc:

let g:slime_target = "tmux"

When you invoke vim-slime for the first time (see below), you will be prompted for more configuration.

tmux socket name

This is what you put in the -L flag, it will be "default" if you didn't put anything.

tmux target pane

":" means current window, current pane (a reasonable default)
":i" means the ith window, current pane
":i.j" means the ith window, jth pane
"h:i.j" means the tmux session where h is the session identifier (either session name or number), the ith window and the jth pane 

By default STDIN is used to pass the text to tmux. If you experience issues with this you may be able to work around them by configuring slime to use a file instead:

let g:slime_paste_file = "$HOME/.slime_paste"

This file is not erased by the plugin and will always contain the last thing you sent over. If this behavior is undesired one alternative is to use a temporary file:

let g:slime_paste_file = tempname()

Key Bindings

By default, the current paragraph will be sent. This is equivalent to typing vip. If you (visually) select text, that will be sent over:

C-c, C-c  --- the same as slime

You can just hold Ctrl and double-tap c.

There will be a few questions, as to where you want to send your text, and the answers will be remembered. If you need to reconfigure:

C-c, v    --- mnemonic: "variables"

vim-slime's People

Contributors

0 avatar caio avatar esamattis avatar jpalardy avatar kevinjqiu avatar ktamas avatar oracal avatar peterrincker avatar rgrinberg avatar rwstauner avatar tonyskn avatar twe4ked avatar

Watchers

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