Ⅰ. 插件描述
:notebook_with_decorative_cover: The interactive scratchpad for hackers.Ⅱ. 基本信息
|
Ⅲ. 安装方法
使用Vundle管理器安装
在你的.vimrc下添加:Plugin 'metakirby5/codi-vim'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall
对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。
使用NeoBundle管理器安装
在你的.vimrc下添加:NeoBundle 'metakirby5/codi-vim'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall
使用VimPlug管理器安装
在你的.vimrc下添加:Plug 'metakirby5/codi-vim'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall
使用Pathogen管理器安装
在终端中运行以下命令:cd ~/.vim/bundle
git clone https://github.com/metakirby5/codi.vim
Ⅳ. 文档说明
The interactive scratchpad for hackers.
_Using Codi as a Python scratchpad through the
shell wrapper_
Codi is an interactive scratchpad for hackers, with a similar interface to
Numi. It opens a pane synchronized to your main buffer
which displays the results of evaluating each line as you type (with NeoVim
or Vim with +job
and +channel
, asynchronously). It's extensible to nearly
any language that provides a REPL (interactive interpreter)!
Languages with built-in support:
Python, JavaScript, CoffeeScript, Haskell, PureScript, Ruby, OCaml, R,
Clojure/ClojureScript, PHP, Lua, C++, Julia, Elm, Elixir, TypeScript, Mathjs
Pull requests
for new language support welcome!
Note: without async support, evaluation will trigger on cursor hold rather
than text change.
For more information, check out the documentation.
Watch a screencast!
Installation
Use your favorite package manager
(vim-plug,
Vundle,
pathogen.vim),
or add this directory to your Vim runtime path.
For example, if you're using vim-plug, add the following line to ~/.vimrc
:
Plug 'metakirby5/codi.vim'
Dependencies
- OS X or Linux (Windows support coming
soon!) - Vim 7.4 (with
+job
and+channel
for asynchronous evaluation) or
NeoVim (still in its infancy - please report bugs!) uname
- If not using NeoVim,
script
(BSD or Linux, man page should say at least
2013)
Each interpreter also depends on its REPL. These are loaded on-demand. For
example, if you only want to use the Python Codi interpreter, you will not
need ghci
.
Default interpreter dependencies:
- Python:
python
- JavaScript:
node
- CoffeeScript:
coffee
- Haskell:
ghci
(be really careful with lazy evaluation!) - PureScript
pulp psci
- Ruby:
irb
- OCaml:
ocaml
- R:
R
- Clojure:
planck
- PHP:
psysh
- Lua:
lua
- C++:
cling
- Julia:
julia
- Elm:
elm
- Elixir:
iex
- TypeScript:
tsun
- Mathjs:
mathjs
Usage
Codi [filetype]
activates Codi for the current buffer, using the provided
filetype or the buffer's filetype.Codi!
deactivates Codi for the current buffer.Codi!! [filetype]
toggles Codi for the current buffer, using the provided
filetype or the buffer's filetype.
Shell wrapper
A nice way to use Codi is through a shell wrapper that you can stick in your~/.bashrc
:
# Codi
# Usage: codi [filetype] [filename]
codi() {
local syntax="${1:-python}"
shift
vim -c \
"let g:startify_disable_at_vimenter = 1 |\
set bt=nofile ls=0 noru nonu nornu |\
hi ColorColumn ctermbg=NONE |\
hi VertSplit ctermbg=NONE |\
hi NonText ctermfg=0 |\
Codi $syntax" "$@"
}
Options
g:codi#interpreters
is a list of user-defined interpreters.
See the documentation for more information.g:codi#aliases
is a list of user-defined interpreter filetype aliases.
See the documentation for more information.
The below options can also be set on a per-interpreter basis viag:codi#interpreters
:
g:codi#autocmd
determines what autocommands trigger updates.
See the documentation for more information.g:codi#width
is the width of the Codi split.g:codi#rightsplit
is whether or not Codi spawns on the right side.g:codi#rightalign
is whether or not to right-align the Codi buffer.g:codi#autoclose
is whether or not to close Codi when the associated
buffer is closed.g:codi#raw
is whether or not to display interpreter results without
alignment formatting (useful for debugging).g:codi#sync
is whether or not to force synchronous execution. No reason to
touch this unless you want to compare async to sync.
Autocommands
CodiEnterPre
,CodiEnterPost
: When a Codi pane enters.CodiUpdatePre
,CodiUpdatePost
: When a Codi pane updates.CodiLeavePre
,CodiLeavePost
: When a Codi pane leaves.
FAQ
Why doesn't X work in Codi, when it works in a normal source file?
- Codi is not meant to be a replacement for actually running your program;
it supports nothing more than what the underlying REPL supports. This is
why Haskell language pragmas don't work and OCaml statements must end with
;;
.- Codi is not meant to be a replacement for actually running your program;
Codi leaves a bunch of old processes running, what's going on?
- The cause of this issue is still unknown, but it happens infrequently. See
:h codi-introduction-warnings
for more information.
- The cause of this issue is still unknown, but it happens infrequently. See
Codi doesn't seem to work on my setup.
- Check
:h codi-introduction-gotchas
.
- Check
Thanks to
- @DanielFGray and
@purag for testing, feedback, and suggestions - @Joaquin-V for helping me discover critical
bugs with vanilla settings - Everyone who has reported an issue or sent in a pull request :)