Using neovim on windows 10 + powershell. vim-jukit plugin installed with lazy. My intention is to have a jupyter notebook-like experience thru (neo)vim
when pressing <leader>os to output split, first the following message appears in the nvim status line:
[vim-jukit] invalid version number encountered:
[]
[7, 3, 0]
Press ENTER or type command to continue
then the following:
PS C:\Users\$USER\repos\jupyter_projs\py_testin
g> ipython3 -i -c "import sys;sys.path.append(\
"C:\\Users\\$USER\\AppData\\Local\\nvim-data\\l
azy\\vim-jukit\\helpers\");import matplotlib.py
plot as plt;from matplotlib_show_wrapper import
show_wrapper;plt.show = show_wrapper(plt.show,
1);plt.show.__annotations__[\"save_dpi\"] = 15
0;from IPython import get_ipython;__shell = get
_ipython();__shell.run_line_magic(\"load_ext\",
\"jukit_run\");__shell.run_line_magic(\"jukit_
init\", \"C:\\Users\\$USER\\repos\\jupyter_proj
s\\py_testing\\py_testing1.1.ipynb 2 --max_size
=20\");"
Python 3.11.3 (tags/v3.11.3:f3909b8, Apr 4 202
3, 23:49:59) [MSC v.1934 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for mo
re information
IPython 8.13.2 -- An enhanced Interactive Pytho
n. Type '?' for help.
Cell In[1], line 1
import sys;sys.path.append(" C:\\Users\\$US
ER\\AppData\\Local\\nvim-data\\lazy\\vim-jukit\
\helpers\);import
^
SyntaxError: unterminated string literal (detec
ted at line 1)
In [1]:
Basically, it looks like the " is not being escaped with the \. the first double quote before import starts the string, and then the double quote before the C: drive is closing the string.
ipython3 -i -c "import sys;sys.path.append(\"C:\\Users\\$USER\\AppData\\Local\\nvim-data\\lazy\\vim-jukit\\helpers\")
I've read that you can't escape double quotes in some cases with cmd but not sure if that is correct or applicable to this.
I've also been digging thru the vim-jukit files and think I've found where the commands passed to ipython are located when calling <leader>os (C:/Users/$USER/AppData/Local/nvim-data/lazy/vim-jukit/autoload/jukit/splits.vim)
I think the pertinent code block in this file is:
if use_ipy
let pyfile_ws_sub = substitute(escape(expand('%:p'), '\'), ' ', '<JUKIT_WS_PH>', 'g')
let store_png = g:jukit_hist_use_ueberzug ? ' --store_png' : ''
let cmd = cmd
\. "from IPython import get_ipython;"
\. "__shell = get_ipython();"
\. '__shell.run_line_magic("load_ext", "jukit_run");'
\. '__shell.run_line_magic("jukit_init", "' . pyfile_ws_sub . ' '
\. g:jukit_in_style . ' --max_size=' . g:jukit_max_size . store_png
\. ueberzug_opt . '");'
if !g:jukit_debug && !g:_jukit_is_windows
let cmd = cmd . '__shell.run_line_magic("clear", "");'
endif
endif
if g:_jukit_is_windows
let cmd = shell_cmd . " -i -c \"" . substitute(cmd, '"', g:_jukit_win_escape_char . '"', 'g') . "\""
return cmd
else
let cmd = shell_cmd . " -i -c '" . cmd . "'"
return cmd
endif
but I'm a bit lost with what's going on here
Is there a way to get the double quote escaped? Or am I looking for the solution in the wrong place?
Thanks
I had PowerShell as default terminal for Vim (
vim.opt.shell = 'powershell.exe'), removing this frominit.luasolved the issue, works fine with default vim terminal.Friedrich's suggestion to check out
shellescape()also looks applicable, but for the time being I'm going back to defaults because it's a simple fix.