{"id":13898291,"url":"https://github.com/esamattis/slimux","last_synced_at":"2025-07-11T04:06:43.011Z","repository":{"id":3008652,"uuid":"4027604","full_name":"esamattis/slimux","owner":"esamattis","description":"SLIME inspired tmux integration plugin for Vim","archived":false,"fork":false,"pushed_at":"2020-10-19T15:02:43.000Z","size":90,"stargazers_count":221,"open_issues_count":30,"forks_count":52,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-05-20T12:08:11.335Z","etag":null,"topics":["tmux","vim"],"latest_commit_sha":null,"homepage":"http://esa-matti.suuronen.org/blog/2012/04/19/slimux-tmux-plugin-for-vim/","language":"Vim script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/esamattis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-04-14T20:38:24.000Z","updated_at":"2025-05-16T00:10:07.000Z","dependencies_parsed_at":"2022-08-29T17:01:07.469Z","dependency_job_id":null,"html_url":"https://github.com/esamattis/slimux","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/esamattis/slimux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esamattis%2Fslimux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esamattis%2Fslimux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esamattis%2Fslimux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esamattis%2Fslimux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/esamattis","download_url":"https://codeload.github.com/esamattis/slimux/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esamattis%2Fslimux/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264726769,"owners_count":23654494,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["tmux","vim"],"created_at":"2024-08-06T18:04:12.819Z","updated_at":"2025-07-11T04:06:42.988Z","avatar_url":"https://github.com/esamattis.png","language":"Vim script","funding_links":[],"categories":["Vim Script"],"sub_categories":[],"readme":"NOTE: This repository is not actively maintained anymore. You have an active fork\nplease add a comment to [this issue](https://github.com/esamattis/slimux/issues/86)\nso others can find it, thanks!\n\n\n# Slimux\n\nThis is a SLIME inspired tmux integration plugin for Vim. It makes it easy to interact\nwith different tmux panes directly from Vim. It has two styles for interacting\nwith panes. REPL and Shell styles.\n\nREPL commands are designed to work with various Read Eval Print Loops such as\n`python`, `irb` (Ruby), `node` (Javascript), `coffee` (CoffeeScript) etc.\nThis is loosely modelled after [SLIME for Emacs][SLIME]. Shell commands are designed\nto work with normal shells such as `bash`. These are useful for running tests for\nexample.\n\nMain difference between these is pane configuration visibility. Each buffer has\nown configuration for REPL, but for Shell there is only one global\nconfiguration. The configuration is prompted from user when the commands are\nused for the first time. The configuration happens interactively. You will see\nlist of available tmux panes and you can choose one by hitting enter on top of\none.\n\nAlso REPL commands can have custom pre, post and escape hooks. These allows\ninteraction with some more complex REPLs such as the CoffeeScript REPL.\n\nThis plugin borrows ideas and some code from [vim-slime][].\n\n\nBlog post\n\nhttp://esa-matti.suuronen.org/blog/2012/04/19/slimux-tmux-plugin-for-vim/\n\nAscii.io screencast\n\nhttps://asciinema.org/a/409\n\n\n## Installation\n\nUse [pathogen][] and put files to\n`$HOME/.vim/bundle/slimux/`\n\nSlimux requires fairly recent tmux version. Be sure you have 1.5.x or later.\n\n## REPL Commands\n\n### SlimuxREPLSendLine\n\nSend current line to the configured pane.\n\n### SlimuxREPLSendSelection\n\nSend last visually selected text to the configured pane.\n\n### SlimuxREPLSendBuffer\n\nSend current buffer to the configured pane.\n\n### SlimuxREPLConfigure\n\nPrompt pane configuration for the current buffer.\n\n\n## Shell Commands\n\n### SlimuxShellPrompt\n\nPrompt for a shell command and send it to the configured tmux pane.\n\n### SlimuxShellLast\n\nRerun last shell command(prompts for a shell command if none was run before).\n\n### SlimuxShellRun\n\nSpecify a shell command to run directly, without the prompt:\n\n    :SlimuxShellRun rspec spec/foo_spec.rb\n\nSuitable for mapping and other automation.\n\nNote that you need to escape strings intended for the shell.\nE.g. to list files with actual asterisks in their name:\n\n    :SlimuxShellRun ls *\\**\n\n### SlimuxShellConfigure [pane-id]\n\nSelect the tmux pane to which shell commands will be sent. If executed without a parameter it prompts global pane configuration for the shell commands. If called with parameter it selects the pane without user interaction, which will aid multi-pane workflows. Parameter is the tmux pane identifier in \\d:\\d:\\d form and completed automatically with cline completion.\n\n\n## Sending Keys\n\n### SlimuxSendKeysPrompt\n\nPrompt for a key sequence using the 'tmux send-keys' syntax and send it to\na configured tmux pane.\nE.g. Lets say you want to stop the webserver currently running in a\nshell(ctrl+c) and restart it(assuming the command to start is 'make run-server'):\n\n    :SlimuxSendKeysPrompt\n    KEYS\u003eC-C 'make run-server' Enter\n    \nor run previous command with\n\n    KEYS\u003eUp Enter\n\nIn short, some strings such as 'C-C' or 'Enter' have special meanings,\nwhile others are sent as a sequence of character keys(in the above example, 'make run-server')\n\n### SlimuxSendKeysLast\n\nResends the last key sequence sent(prompts for a sequence if none was sent before).\n\n### SlimuxSendKeysConfigure\n\nPrompt global pane configuration to send the key sequence.\n\n\n## Keyboard Shortcuts\n\nSlimux does not force any shortcuts on your Vim, but here's something you can\nput to your `.vimrc`\n\n    map \u003cLeader\u003es :SlimuxREPLSendLine\u003cCR\u003e\n    vmap \u003cLeader\u003es :SlimuxREPLSendSelection\u003cCR\u003e\n    map \u003cLeader\u003eb :SlimuxREPLSendBuffer\u003cCR\u003e\n    map \u003cLeader\u003ea :SlimuxShellLast\u003cCR\u003e\n    map \u003cLeader\u003ek :SlimuxSendKeysLast\u003cCR\u003e\n\nOr if you like something more Emacs Slime style try something like this:\n\n    map \u003cC-c\u003e\u003cC-c\u003e :SlimuxREPLSendLine\u003cCR\u003e\n    vmap \u003cC-c\u003e\u003cC-c\u003e :SlimuxREPLSendSelection\u003cCR\u003e\n\nYou may also add shortcuts to other commands too.\n\nFor Scheme/Racket Slimux has few extra bindings. Enable them with\n\n    let g:slimux_scheme_keybindings=1\n    let g:slimux_racket_keybindings=1\n\nFor more information refer to the [scheme plugin header](https://github.com/epeli/slimux/blob/master/ftplugin/scheme.vim).\n\n\n## Adding support for new languages\n\nUsually new there is no need to do anything. For example Ruby and Node.js REPLs\nworks just fine out of box, but for some languages you have to do some preprocessing\nbefore the code can be sent. There are three hooks you can specify for\neach language.\n\nCustom escaping function\n\n    function SlimuxEscape_\u003cfiletype\u003e(text)\n        return a:text\n    endfunction\n\nPre send hook\n\n    function SlimuxPre_\u003cfiletype\u003e(target_pane)\n    endfunction\n\nPost send hook\n\n    function SlimuxPost_\u003cfiletype\u003e(target_pane)\n    endfunction\n\nJust add these to ftplugin directory contained within this plugin (and sent a pull request on Github!).\nYou can use [Python][] and [CoffeeScript][] hooks as examples.\n\n## Options\n\n- `g:slimux_tmux_path = /path/to/your/tmux` sets the path to the\n  preferred tmux binary, if not specified, defaults to getting tmux\n  command from path using `system('command -v tmux')`.\n\n- `g:slimux_select_from_current_window = 1` select panes only from current\n  window. Defaults to `0` to select panes from all tmux panes.\n\n- `g:slimux_pane_format` customize the formatting of the panes, see the FORMATS section in `man tmux`.  \n  The string \"`#{pane_id}: `\" is always prepended to the format so Slimux can identify the selected pane.\n\n\n## Other Vim Slime plugins\n\nBefore I created this plugin I tried several others, but non of them satisfied me. They where too\ncomplicated or just didn't support the languages I needed. So if Slimux isn't your cup of tea,\nmaybe one of these is:\n\n  * \u003chttps://github.com/jpalardy/vim-slime\u003e\n  * \u003chttps://github.com/benmills/vimux\u003e\n  * \u003chttps://github.com/kikijump/tslime.vim\u003e\n  * \u003chttps://github.com/jgdavey/vim-turbux\u003e\n  * \u003chttp://www.vim.org/scripts/script.php?script_id=2531\u003e\n  * \u003chttps://github.com/ervandew/screen\u003e\n  * \u003chttps://github.com/mhinz/vim-tmuxify\u003e\n\n\n\n[tmux]: http://tmux.sourceforge.net/\n[pathogen]: https://github.com/tpope/vim-pathogen\n[vim-slime]: https://github.com/jpalardy/vim-slime\n[SLIME]: http://common-lisp.net/project/slime/\n\n[Python]: https://github.com/epeli/slimux/blob/master/ftplugin/python.vim\n[CoffeeScript]: https://github.com/epeli/slimux/blob/master/ftplugin/coffee.vim\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesamattis%2Fslimux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fesamattis%2Fslimux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesamattis%2Fslimux/lists"}