A plugin for editing Pluto notebooks with Vim.
Currently, a couple of different versions of the plugin are being developed.
- A minimalistic helper plugin to edit .jl notebook files, which is supposed to interact with Pluto indirectly (main branch)
- A plugin which turns your Vim into a front-end of Pluto, interacting with Pluto directly (dev branch)
- Vim 8 / NeoVim 0.5 or newer
- Deno
- denops.vim
- Install Deno (see https://deno.land/#installation)
- Install denops.vim and vim-pluto with your package manager
ex. vim-plug
Plug 'vim-denops/denops.vim'
Plug 'hasundue/vim-pluto'
vim-pluto does not provide any default key mappings. You have to do it manually.
Example:
nnoremap <silent> <LocalLeader>O :call pluto#insert_cell_above()<CR>
nnoremap <silent> <LocalLeader>o :call pluto#insert_cell_below()<CR>
nnoremap <silent> <LocalLeader>yy :call pluto#yank_cell()<CR>
nnoremap <silent> <LocalLeader>dd :call pluto#delete_cell()<CR>
nnoremap <silent> <LocalLeader>P :call pluto#paste_cell_above()<CR>
nnoremap <silent> <LocalLeader>p :call pluto#paste_cell_below()<CR>
nnoremap <silent> <LocalLeader>t :call pluto#toggle_code()<CR>
Launch Pluto server with auto_reload_from_file = true.
Example:
import Pluto
Pluto.run(auto_reload_from_file = true)
Enable autoread function of Vim.
Example:
set autoread
autocmd FocusGained,BufEnter,CursorHold,CursorHoldI * if mode() != 'c' | checktime | endif
autocmd FileChangedShellPost * echohl WarningMsg | echo "File changed on disk. Buffer reloaded." | echohl None
Edit a notebook (.jl file) in Vim while opening the notebook in Pluto web UI.
- pluto#insert_cell_above()
- pluto#insert_cell_below()
Insert an empty cell above/below the cell under the cursor and start editing it.
- pluto#yank_cell()
- pluto#delete_cell()
Yank/cut cell under the cursor and put it into the register reserved for the plugin.
- pluto#paste_cell_above()
- pluto#paste_cell_below()
Paste a cell in the register above/below the cell under the cursor.
- pluto#show_code()
- pluto#hide_code()
- pluto#toggle_code()
Change visibility of code in the cell under the cursor.
Changes are not reflected in Web UI until a reload of the notebook because Pluto lacks of the implementation, unfortunately.