Seamlessly run Python code in IPython from Vim

Related tags

CLI Tools python vim repl
Overview

ipython-cell

Seamlessly run Python code from Vim in IPython, including executing individual code cells similar to Jupyter notebooks and MATLAB. This plugin also supports other languages and REPLs such as Julia.

ipython-cell is especially suited for data exploration and visualization using Python. You can for example define a code cell that loads your input data, and another code cell to visualize the data. This plugin allows you to change and re-run the visualization part of your code without having to reload the data each time.

The major difference between ipython-cell and other plugins (such as vim-slime and nvim-ipy) is that this plugin has 'non-verbose' commands that do not show the code that is run. This makes it easier to read the output in IPython. Additionally, ipython-cell provides some convenience commands to jump between cells and to work with IPython, see Commands below.

Demo

Demo animation

Requirements

ipython-cell requires Vim or Neovim to be compiled with Python 2 or Python 3 support (+python or +python3 when running vim --version). If both Python versions are found, the plugin will prefer Python 3.

ipython-cell depends on vim-slime to send the code to IPython, see Installation instructions below.

Additionally, the 'non-verbose' cell execution feature requires Tkinter to be installed and either +clipboard support in Vim (see vim --version), or an external clipboard program to be installed. There is also a verbose version of the cell execution feature that does not require Tkinter or clipboard support, see Usage.

Installation

It is easiest to install ipython-cell using a plugin manager (I personally recommend vim-plug). See respective plugin manager's documentation for more information about how to install plugins.

vim-plug

Plug 'jpalardy/vim-slime', { 'for': 'python' }
Plug 'hanschen/vim-ipython-cell', { 'for': 'python' }

Vundle

Plugin 'jpalardy/vim-slime'
Plugin 'hanschen/vim-ipython-cell'

NeoBundle

NeoBundle 'jpalardy/vim-slime', { 'on_ft': 'python' }
NeoBundle 'hanschen/vim-ipython-cell', { 'on_ft': 'python' }

Dein

call dein#add('jpalardy/vim-slime', { 'on_ft': 'python' })
call dein#add('hanschen/vim-ipython-cell', { 'on_ft': 'python' })

Pathogen

cd ~/.vim/bundle
git clone https://github.com/hanschen/vim-ipython-cell.git

Usage

ipython-cell sends code from Vim to IPython using vim-slime. For this to work, IPython has to be running in a terminal multiplexer like GNU Screen or tmux, or in a Vim or Neovim terminal. I personally use tmux, but you will find screen installed on most *nix systems.

It is recommended that you familiarize yourself with vim-slime first before using ipython-cell. Once you understand vim-slime, using ipython-cell will be a breeze.

ipython-cell does not define any key mappings by default, but comes with the commands listed below, which I recommend that you bind to key combinations of your likings. The Example Vim Configuration shows some examples of how this can be done.

Note that the 'non-verbose' cell execution feature copies your code to the system clipboard. You may want to avoid using this feature if your code contains sensitive data.

Commands

Command Description
:IPythonCellExecuteCell Execute the current code cell in IPython1,2
:IPythonCellExecuteCellJump Execute the current code cell in IPython, and jump to the next cell1,2
:IPythonCellExecuteCellVerbose Print and execute the current code cell in IPython3
:IPythonCellExecuteCellVerboseJump Print and execute the current code cell in IPython, and jump to the next cell3
:IPythonCellRun Run the whole script in IPython1
:IPythonCellRunTime Run the whole script in IPython and time the execution
:IPythonCellClear Clear IPython screen
:IPythonCellClose Close all figure windows
:IPythonCellPrevCell Jump to the previous cell header
:IPythonCellNextCell Jump to the next cell header
:IPythonCellPrevCommand Run previous command
:IPythonCellRestart Restart IPython

1 Can be configured for other REPLs.
2 Non-verbose version, requires Tkinter and +clipboard support or a clipboard program.
3 Verbose version, works without Tkinter and clipboard support.

Custom commands

You may want to send other commands to IPython, such as %debug and exit. vim-slime makes it easy to send arbitrary text to IPython from Vim using the SlimeSend1 command, for example

:SlimeSend1 %debug

You can then bind these commands to key mappings, see Example Vim Configuration below.

Defining code cells

Code cells are defined by either special text in the code or Vim marks, depending on if g:ipython_cell_delimit_cells_by is set to 'tags' or 'marks', respectively. The default is to use tags.

The examples below show how code cell boundaries work.

Code cells defined using tags

Use # %%, #%%, # , or ## to define cell boundaries.

                                   _
import numpy as np                  | cell 1
                                   _|
# %% Setup                          | cell 2
                                    |
numbers = np.arange(10)             |
                                   _|
# %% Print numbers                  | cell 3
                                    |
for n in numbers:                   |
    print(n)                        |
                                   _|
    # %% Odd or even                | cell 4
                                    |
    if n % 2 == 0:                  |
        print("Even")               |
    else:                           |
        print("Odd")                |
                                   _|
# %% Print sum                      | cell 5
                                    |
total = numbers.sum()               |
print("Sum: {}".format(total))      |
print("Done.")                     _|

Note that code cells can be defined inside statements such as for loops. IPython's %paste will automatically dedent the code before execution. However, if the code cell is defined inside e.g. a for loop, the code cell will not iterate over the loop.

In the example above, executing cell 4 after cell 3 will only print Odd once because IPython will execute the following code:

for n in numbers:
    print(n)

for cell 3, followed by

if n % 2 == 0:
    print("Even")
else:
    print("Odd")

for cell 4. The for statement is no longer included for cell 4.

You must therefore be careful when defining code cells inside statements.

Code cells defined using marks

Use Vim marks (see :help mark) to define cell boundaries. Here marks are depicted as letters in the left-most column.

                                   _
  | import numpy as np              | cell 1
  |                                _| 
a | numbers = np.arange(10)         | cell 2
  |                                 |
  |                                _|
b | for n in numbers:               | cell 3
  |     print(n)                   _|
c |     if n % 2 == 0:              | cell 4
  |         print("Even")           |
  |     else:                       |
  |         print("Odd")            |
  |                                _|
d | total = numbers.sum()           | cell 5
  | print("Sum: {}".format(total)) _|

See note in the previous section about defining code cells inside statements (such as cell 4 inside the for loop in the example above).

Configuration

Option Description
g:ipython_cell_delimit_cells_by Specify if cells should be delimited by 'tags' or 'marks'. Default: 'tags'
g:ipython_cell_tag If cells are delimited by tags, specify the format of the tags. Can be a string or a list of strings to specify multiple formats. Default: ['# %%', '#%%', '# ', '##']
g:ipython_cell_regex If 1, tags specified by g:ipython_cell_tag are interpreted as Python regex patterns, otherwise they are interpreted as literal strings. Default: 0
g:ipython_cell_valid_marks If cells are delimited by marks, specify which marks to use. Default: 'abcdefghijklmnopqrstuvqxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
g:ipython_cell_cell_command Command to run for executing cells. Default: '%paste -q'
g:ipython_cell_run_command Command to run for executing scripts. Default: '%run {options} "{filepath}"1
g:ipython_cell_prefer_external_copy Set to 1 to prefer using an external program to copy to system clipboard rather than relying on Vim/Neovim yank. Default: 0
g:ipython_cell_highlight_cells Set to 0 to disable highlighting of cell headers defined using tags. Default: 1
g:ipython_cell_highlight_cells_ft A list of filetypes for which cell headers will be highlighted if g:ipython_cell_highlight_cells is enabled. Default: ['python']
g:ipython_cell_send_cell_headers If cells are delimited by tags, separately send the cell header before the cell contents. Default: 0

1 {options} will be replaced by the command options, such as -t for IPythonRunTime. {filepath} will be replaced by the path of the current buffer.

Example Vim configuration

Here's an example of how to configure your .vimrc to use this plugin. Adapt it to suit your needs.

" Load plugins using vim-plug
call plug#begin('~/.vim/plugged')
Plug 'jpalardy/vim-slime', { 'for': 'python' }
Plug 'hanschen/vim-ipython-cell', { 'for': 'python' }
call plug#end()

"------------------------------------------------------------------------------
" slime configuration 
"------------------------------------------------------------------------------
" always use tmux
let g:slime_target = 'tmux'

" fix paste issues in ipython
let g:slime_python_ipython = 1

" always send text to the top-right pane in the current tmux tab without asking
let g:slime_default_config = {
            \ 'socket_name': get(split($TMUX, ','), 0),
            \ 'target_pane': '{top-right}' }
let g:slime_dont_ask_default = 1

"------------------------------------------------------------------------------
" ipython-cell configuration
"------------------------------------------------------------------------------
" Keyboard mappings.  is \ (backslash) by default

" map s to start IPython
nnoremap s :SlimeSend1 ipython --matplotlib

" map r to run script
nnoremap r :IPythonCellRun

" map R to run script and time the execution
nnoremap R :IPythonCellRunTime

" map c to execute the current cell
nnoremap c :IPythonCellExecuteCell

" map C to execute the current cell and jump to the next cell
nnoremap C :IPythonCellExecuteCellJump

" map l to clear IPython screen
nnoremap l :IPythonCellClear

" map x to close all Matplotlib figure windows
nnoremap x :IPythonCellClose

" map [c and ]c to jump to the previous and next cell header
nnoremap [c :IPythonCellPrevCell
nnoremap ]c :IPythonCellNextCell

" map h to send the current line or current selection to IPython
nmap h SlimeLineSend
xmap h SlimeRegionSend

" map p to run the previous command
nnoremap p :IPythonCellPrevCommand

" map Q to restart ipython
nnoremap Q :IPythonCellRestart

" map d to start debug mode
nnoremap d :SlimeSend1 %debug

" map q to exit debug mode or IPython
nnoremap q :SlimeSend1 exit

Note that the mappings as defined here work only in normal mode (see :help mapping in Vim for more information).

Moreover, these mappings will be defined for all file types, not just Python files. If you want to define these mappings for only Python files, you can put the mappings in ~/.vim/after/ftplugin/python.vim for Vim (or ~/.config/nvim/after/ftplugin/python.vim for Neovim).

MATLAB-like key bindings

If you come from the MATLAB world, you may want e.g. F5 to save and run the script regardless if you are in insert or normal mode, F6 to execute the current cell, and F7 to execute the current cell and jump to the next cell:

" map  to save and run script
nnoremap  :w:IPythonCellRun
inoremap  :w:IPythonCellRun

" map  to evaluate current cell without saving
nnoremap  :IPythonCellExecuteCell
inoremap  :IPythonCellExecuteCell

" map  to evaluate current cell and jump to next cell without saving
nnoremap  :IPythonCellExecuteCellJump
inoremap  :IPythonCellExecuteCellJump

Use the percent format

If you use the percent format for cells and don't want e.g. # %% [markdown] to be interpreted as a cell header, you can use regex:

let g:ipython_cell_regex = 1
let g:ipython_cell_tag = '# %%( [^[].*)?'

Other REPLs

ipython-cell can also be configured to support other languages and REPLs. For example, to make IPythonCellRun and IPythonCellExecuteCell work with Julia, add the following to your .vimrc:

let g:ipython_cell_run_command = 'include("{filepath}")'
let g:ipython_cell_cell_command = 'include_string(Main, clipboard())'

Change highlight for code cell headers

To change the colors of cell headers, add something like the following to your .vimrc:

augroup ipython_cell_highlight
    autocmd!
    autocmd ColorScheme * highlight IPythonCell ctermbg=238 guifg=darkgrey guibg=#444d56
augroup END

More tips

For more configuration and usage tips, see the wiki.

Supported clipboard programs

If your Vim installation does not have +clipboard support, some features of ipython-cell will attempt to use one of the following clipboard programs:

  • Linux: xclip (preferred) or xsel.
  • macOS: pbcopy (installed by default).
  • Windows: not supported.

FAQ

I have installed the plugin but get 'Not an editor command'. Why?

If the error persists after restarting Vim/Neovim, make sure that your editor has support for Python by running the following commands in the editor:

:echo has('python')
:echo has('python3')

At least one of the commands should return 1. If they both return 0, you need to set up your editor with Python support. In the case of Neovim, that means installing the pynvim Python module, see documentation.

The IPythonCellExecuteCell and IPythonCellExecuteCellJump commands do not work, but other commands such as IPythonCellRun work. Why?

First, make sure you have Tkinter installed (otherwise you will get an error message) and a supported clipboard program. Also make sure your DISPLAY variable is correct, see next question. If you cannot install the requirements but still want to use the cell execution feature, you can try the verbose versions IPythonCellExecuteCellVerbose and IPythonCellExecuteCellVerboseJump.

IPythonCellExecuteCell and IPythonCellExecuteCellJump do not execute the correct code cell, or I get an error about 'can't open display', 'could not open display', 'could not connect to display', or something similar, what do I do?

Make sure your DISPLAY environment variable is correct, especially after re-attaching a screen or tmux session. In tmux you can update the DISPLAY variable with the following command:

eval $(tmux showenv -s DISPLAY)

Should I use tags or marks to define cells?

This depends on personal preference. Tags are similar to %% in MATLAB and # %% in e.g. Jupyter Notebooks and Spyder. They become a part of your code and can also be shared with others, making them ideal if you want more persistent cells. Marks, on the other hand, are more transient and can be changed without triggering changes in your code, which can be nice if you change your cells often and your code is under version control.

How do I show the marks in the left-most column?

Use the vim-signature plugin: https://github.com/kshenoy/vim-signature

How to send only the current line or selected lines to IPython?

Use the features provided by vim-slime, see the Example Vim Configuration for an example. The default mapping C-c C-c (hold down Ctrl and tap the C key twice) will send the current paragraph or the selected lines to IPython. See :help slime for more information, in particular the documentation about SlimeRegionSend and SlimeLineSend.

Why do I get "name 'plt' is not defined" when I try to close figures?

ipython-cell assumes that you have imported matplotlib.pyplot as plt in IPython. If you prefer to import matplotlib.pyplot differently, you can achieve the same thing using vim-slime, for example by adding the following to your .vimrc:

nnoremap x :SlimeSend1 matplotlib.pyplot.close('all')

How can I send other commands to IPython, e.g. '%who'?

You can easily send arbitrary commands to IPython using the :SlimeSend1 command provided by vim-slime, e.g. :SlimeSend1 %who, and map these commands to key combinations.

Why does this plugin not work inside a virtual environment?

If you use Neovim, make sure you have the neovim Python package installed.

The IPythonCellExecuteCell command does not work, it seems to run the wrong cell.

Try to add the following to your configuration file:

let g:ipython_cell_prefer_external_copy = 1

Make sure you have a supported clipboard program installed.

Why isn't this plugin specific to Python by default? In other words, why do I have to add all this extra stuff to make this plugin Python-specific?

This plugin was created with Python and IPython in mind, but I don't want to restrict the plugin to Python by design. Instead, I have included examples of how to use plugin managers to specify that the plugin should be loaded only for Python files and how to create Python-specific mappings. If someone wants to use this plugin for other filetypes, they can easily do so.

Why is this plugin written in Python instead of pure Vimscript?

Because I feel more comfortable with Python and don't have the motivation to learn Vimscript for this plugin. If someone implements a pure Vimscript version, I would be happy to consider to merge it.

Related plugins

  • tslime_ipython - Similar to ipython-cell but with some small differences. For example, tslime_ipython pastes the whole code that's sent to IPython to the input line, while ipython-cell uses IPython's %paste -q command to make the execution less verbose.
  • vim-ipython - Advanced two-way integration between Vim and IPython. I never got it to work as I want, i.e., don't show the code that's executed but show the output from the code, which is why I created this simpler plugin.
  • nvim-ipy - Similar to vim-ipython, but refactored for Neovim and has some basic support for cells.
  • vim-tmux-navigator - Seamless navigation between Vim splits and tmux panes.
  • vim-signature - Display marks in the left-hand column.

Thanks

ipython-cell was heavily inspired by tslime_ipython. The code logic to determine which Python version to use was taken from YouCompleteMe.

Comments
  • [feature request] Replace __file__ with the path to the vim buffer

    [feature request] Replace __file__ with the path to the vim buffer

    What do you think about replacing __file__ with the path to the vim buffer? I often find myself wishing this would "just work" instead of giving name '__file__' not defined.

    I guess the proper way would be to parse the Python into an AST and figure out that it's really the variable __file__ and not some text inside a string, use the proper quotes if __file__ is in an f-string, etc. But for now, I have the following in ipython_cell.py:69:

    f = vim.eval("expand('%:p')")
    cell = cell.replace('__file__', f'"{f}"')
    

    PS: I love this plugin. I use it almost every day.

    opened by MarcelRobitaille 6
  • Add insert cell above and insert cell below commands

    Add insert cell above and insert cell below commands

    I added 2 commands: IPythonCellInsertAbove and IPythonCellInsertBelow insert a new cell above/below current cell.

    The cell tag inserted can be specified via g:ipython_cell_insert_tag (defaults to g:ipython_cell_tag[0]).

    Please take a look, and thanks for the amazing extension.

    insert_comamnds

    opened by mattbui 6
  • Adding EditLine and EditRegion commands

    Adding EditLine and EditRegion commands

    I've added two commands that allow the user to edit the sent code before executing it. Here's a short demo:

    vim-edit-region

    This could be useful for adapting code that can not be executed in its original form, e.g. by deleting self. within class methods that reference attributes, so that they can be provided in IPython.

    opened by gerazov 6
  • Disabling cell highlighting for Markdown headings

    Disabling cell highlighting for Markdown headings

    The cell highlighter messes with markdown headings due to the ### cell type. This could be regulated by limiting cell recognition to Python files, but since the plugin can be used for other programming languages it makes sense to limit it to not highlight markdown.

    This can be done in the init.vim so maybe it can be noted in the documentation:

      autocmd FileType markdown,mkd,md let g:ipython_cell_highlight_cells = 0
    

    Or maybe it could be built in by default in the plugin?

    opened by gerazov 6
  • Allow configuration of 'restart' function

    Allow configuration of 'restart' function

    Hi! I've encountered a problem with your plugin that IPythonCellRestart just terminates IPython session instead of restarting it. This is because executing the previous shell command with Ctrl-P doesn't work for all shells. For me, it might be not working due to using Vi mode instead of Emacs in the shell cmdline.

    IMO, it is a common practice that users customize their shells and Jupyter Notebook configurations, but do not change settings of IPython, a console app. If there is no a general solution (that accounts for different shells), it may be a good decision to allow a user to specify the command they use to get the previous shell command.

    NOTE: I did not align the markdown table I edited in README, since it would lead to displaying meaningless changes in git diff.

    opened by lukoshkin 5
  • Mangled Indentation with `IPythonCellExecuteCellVerboseJump`

    Mangled Indentation with `IPythonCellExecuteCellVerboseJump`

    The following snippet produces a syntax error even though the code is valid. This is to say, neither ipython nor python complain about the syntax if run as is. However, if I let vim-ipython paste the snippet into an interactive ipython session using IPythonCellExecuteCellVerboseJump, it fails to execute the cell correctly and instead prints SyntaxError: 'return' outside function for the last return. Unfortunately, I was unable to strip down the reproducing example further. If I remove any line in the cell, it starts to work again. Likewise, the error does not reproduce if I use plain cpaste in ipython.

     # %%
    def timeit(stmt, setup=lambda: None, number=None):
        import timeit
    
        setup()
        t = timeit.timeit(stmt, number=number) / number
        return Timed(time=t, number=number)
    
    
    def _matern_kernel(distance, scale, cutoff, dof):
        from jax.scipy.special import gammaln
    
        reg_dist = jnp.sqrt(2 * dof) * distance / cutoff
        return scale**2 * 2**(1 - dof) / jnp.exp(
            gammaln(dof)
        ) * (reg_dist)**dof * mod_bessel2(dof, reg_dist)
    
    
    def matern_kernel(distance, scale, cutoff, dof):
        from jax.scipy.special import gammaln
    
        reg_dist = jnp.sqrt(2 * dof) * distance / cutoff
        dof, reg_dist = jnp.broadcast_arrays(dof, reg_dist)
    
        # Never produce NaNs (https://github.com/google/jax/issues/1052)
        corr = 2**(1 - dof)
        return scale**2 * corr
    
    
    scale, cutoff, dof = 1., 80., 3 / 2
    # %%
    

    My slime config is as follows:

    " This line should not be removed as it ensures that various options are
    " properly set to work with the Vim-related packages.
    runtime! archlinux.vim
    " Move around code blocks in e.g. Julia
    runtime macros/matchit.vim
    
    call plug#begin('~/.vim/plugged')
    Plug 'jpalardy/vim-slime', { 'branch': 'main', 'for': 'python' }
    Plug 'hanschen/vim-ipython-cell', { 'for': 'python' }
    call plug#end()
    
    let g:slime_target = "tmux"
    if exists('$TMUX')
    	" By default the last active pane is chosen within the window
    	let g:slime_default_config = {"socket_name": get(split($TMUX, ','), 0), "target_pane": "repl-0:"}
    else
    	let g:slime_default_config = {"socket_name": "default", "target_pane": "repl-0:"}
    endif
    let g:slime_dont_ask_default = 1
    let g:slime_paste_file = "$HOME/.cache/slime_paste"
    let g:slime_no_mappings = 1
    
    opened by Edenhofer 5
  • Open terminal and run ipython (function)

    Open terminal and run ipython (function)

    Hello! I made a very basic function that opens a new terminal in a vertical split runs ipython, and connects the two splits via slime in order to use the vim-ipython-cell.

    -- Open interactive IPython
    function IPythonOpen()
          vim.cmd("vnew|call termopen('ipython3')") -- open a new terminal in vertical split and run ipython
          vim.g.repl_job_id = vim.g.slime_last_channel -- take the jobid
          vim.cmd(":file ipython.py") -- name the new buffer
          vim.cmd(":wincmd p") -- move to previous window
    end
    

    I wonder what other people are using to connect their script with the REPL, and whether such a function can be integrated into the plugin vim-ipython-cell, so the user can call :IPythonOpen() and have a REPL ready for use with the other commands IPythonExecuteCell etc.

    Thanks in advance!

    opened by argapost 5
  • paste into ipython console precedes copy of the current cell

    paste into ipython console precedes copy of the current cell

    Hi and thank you for this awesome plugin!

    I have installed in my local machine nvim + vim-slime + vim-ipython-cell and everything works properly. When I move my setup to a remote machine via ssh, where I don't have root access so I install everything locally, I get the following bug:

    When I execute a cell, vim-ipython-cell first pastes whatever is in the clipboard to the python console and after that it copies the code within the cell. So instead of executing the current cell, I execute the previous cell and so on.

    It's like the copying and the pasting are running asynchronously and the paste into ipython console finishes before the copy of the cell.

    If you have any ideas about what might be wrong, I will be grateful.

    Thank you in advance.

    (P.S I have installed xclip from source locally)

    opened by argapost 5
  • Error: Can't open display: (null)

    Error: Can't open display: (null)

    I can get your plugin to run the whole script, restart the ipython shell, clear the ipython screen, etc. but I cannot get it to run just a cell, with either "marks" or "tags".

    In vim I get the following error:

    Error: Can't open display: (null)

    and in the ipython shell I get:

    %paste -q
    File "<ipython-input-6-5f93bd8b4c58>", line 1
        "------------------------------------------------------------------------------
                                                                                                ^
    SyntaxError: EOL while scanning string literal
    

    I tried changing this setting to both 0 and 1 let g:slime_python_ipython = 1

    I just had a simple test script: (top is mark a, bottom is mark b)

    x = 5
    print(x)
    print('top')
    
    print('bottom')
    
    

    I'm using the most recent version of vim, tmux and ipython on MacOS. Thanks!

    opened by g3g3n3 5
  • Option to use `cpaste` and actually pasting the cell into the REPL instead `paste`

    Option to use `cpaste` and actually pasting the cell into the REPL instead `paste`

    While paste is nice and simple, it only works if ipython can correctly read the clipboard. This for example is not possible if the ipython session is on a remote machine. Using cpaste and actually pasting the content of the current cell makes the process more explicit and works across devices. An option to enable this behavior would allow for the best of both worlds.

    Since I work on various remote machines quite a lot I would greatly appreciate such a feature.

    opened by Edenhofer 4
  • Highlight IPython cells

    Highlight IPython cells

    It's useful if cells are highlighted in the code. This would augment the plugin nicely :+1:

    I was thinking maybe with automatically setting marks or horizontal lines, but I'm not sure if this can be done.

    What I came up with is:

    highlight MyGroup ctermbg=238 guifg=darkgrey guibg=#444d56
    match MyGroup /^# %%.*/
    

    Of course going with a color from your colorscheme should be better or else here's a nice color picker Vim Color Scheme Editor :slightly_smiling_face:

    Also this could be toggled as in vim-interestingwords

    opened by gerazov 4
  • iPython 8.2.0 not compatible with vim-ipython-cell

    iPython 8.2.0 not compatible with vim-ipython-cell

    I believe this issue: https://github.com/ipython/ipython/issues/13622, is preventing vim-ipython-cell to work with ipython==8.2.0.

    Due to issues with '%paste -q' and '%cpaste -q'.

    It works in ipython==8.1.1, so recommend using this version until it is fixed in ipython==8.2.0.

    opened by spencer-tb 6
Owner
Hans Chen
Hans Chen
Freaky fast fuzzy Denite/CtrlP matcher for vim/neovim

Freaky fast fuzzy Denite/CtrlP matcher for vim/neovim This is a matcher plugin for denite.nvim and CtrlP.

Raghu 113 Sep 29, 2022
CLI Web-CAT interface for people who use VIM.

CLI Web-CAT CLI Web-CAT interface. Installation git clone https://github.com/phuang1024/cliwebcat cd cliwebcat python setup.py bdist_wheel sdist cd di

Patrick 4 Apr 11, 2022
Alacritty terminal used with Bash, Tmux, Vim, Mutt, Lynx, etc. and the many different additions added to each configuration file

Alacritty terminal used with Bash, Tmux, Vim, Mutt, Lynx, etc. and the many different additions added to each configuration file

Carter 19 Aug 24, 2022
Personal and work vim 8 configuration with submodules

vimfiles Windows Vim 8 configuration files based on the recommendations of Ruslan Osipov, Keep Your vimrc file clean and The musings of bluz71. :help

null 1 Aug 27, 2022
Vsm - A manager for the under-utilized mksession command in vim

Vim Session Manager A manager for the under-utilized `mksession` command in vim

Matt Williams 3 Oct 12, 2022
vimBrain is a brainfuck-based vim-inspired esoteric programming language.

vimBrain vimBrain is a brainfuck-based vim-inspired esoteric programming language. vimBrainPy Currently, the only interpreter available is written in

SalahDin Ahmed 3 May 8, 2022
A Python script for finding a food-truck based on latitude and longitude coordinates that you can run in your shell

Food Truck Finder Project Description This repository contains a Python script for finding a food-truck based on latitude and longitude coordinates th

null 1 Jan 22, 2022
Shortcut-Maker - It is a tool that can be set to run any tool with a single command

Shortcut-Maker It is a tool that can be set to run any tool with a single command Coded by Dave Smith(Owner of Sl Cyber Warriors) Command list ?? pkg

Dave Smith 10 Sep 14, 2022
Run an FFmpeg command and see the percentage progress and ETA.

Run an FFmpeg command and see the percentage progress and ETA.

null 25 Dec 22, 2022
Pymongo based CLI client, to run operation on existing databases and collections

Mongodb-Operations-Console Pymongo based CLI client, to run operation on existing databases and collections Program developed by Gustavo Wydler Azuaga

Gus 1 Dec 1, 2021
Ipylivebash - Run shell script in Jupyter with live output

ipylivebash ipylivebash is a library to run shell script in Jupyter with live ou

Ben Lau 6 Aug 27, 2022
A command line tool to query source code from your current Python env

wxc wxc (pronounced "which") allows you to inspect source code in your Python environment from the command line. It is based on the inspect module fro

Clément Robert 13 Nov 8, 2022
A command-line tool to flash python code to Codey Rocky without having to use the online mblock5 IDE.

What? A command-line tool to flash python code to Codey Rocky without having to use the online mblock5 IDE. Description This is a very low-effort proj

null 1 Dec 29, 2021
Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections.

code-connect Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections. Motivation VS Code supports opening

Christian Volkmann 56 Nov 19, 2022
A terminal UI dashboard to monitor requests for code review across Github and Gitlab repositories.

A terminal UI dashboard to monitor requests for code review across Github and Gitlab repositories.

Kyle Harrison 150 Dec 14, 2022
Magma is a NeoVim plugin for running code interactively with Jupyter.

Magma Magma is a NeoVim plugin for running code interactively with Jupyter. Requirements NeoVim 0.5+ Python 3.8+ Required Python packages: pynvim (for

Daniel Csillag 372 Dec 26, 2022
Easy-to-use terminal program that can compile your code.

Description Easy-to-use terminal program that can compile your code. Installition 1. Cloning repository $ git clone https://github.com/DarkJoij/Compil

DarkJoij 1 Oct 21, 2021
Fun project to generate The Matrix Code effect on you terminal.

Fun project to generate The Matrix Code effect on you terminal.

Henrique Bastos 11 Jul 13, 2022
A CLI Application to detect plagiarism in Source Code Files.

Plag Description A CLI Application to detect plagiarism in Source Code Files. Features Compare source code files for plagiarism. Extract code features

default=dev 2 Nov 10, 2022