Ⅰ. 插件描述
fireplace.vim: Clojure REPL supportⅡ. 基本信息
|
Ⅲ. 安装方法
使用Vundle管理器安装
在你的.vimrc下添加:Plugin 'christoph-frick/vim-fireplace-enchanted'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall
对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。
使用NeoBundle管理器安装
在你的.vimrc下添加:NeoBundle 'christoph-frick/vim-fireplace-enchanted'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall
使用VimPlug管理器安装
在你的.vimrc下添加:Plug 'christoph-frick/vim-fireplace-enchanted'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall
使用Pathogen管理器安装
在终端中运行以下命令:cd ~/.vim/bundle
git clone https://github.com/christoph-frick/vim-fireplace
Ⅳ. 文档说明
# fireplace.vim
There's a REPL in fireplace, but you probably wouldn't have noticed if I hadn't
told you. Such is the way with fireplace.vim. By the way, this plugin is for
Clojure.
Installation
First, set up [cider-nrepl][]. (If you skip this step, fireplace.vim will
make do with eval, which mostly works.) Next, fireplace.vim doesn't provide
indenting or syntax highlighting, so you'll want [a set of Clojure runtime
files](https://github.com/guns/vim-clojure-static) if you're on a version of
Vim earlier than 7.4. You might also want [salve.vim][] for assorted
static project support.
If you don't have a preferred installation method, I recommend
installing pathogen.vim, and
then simply copy and paste:
cd ~/.vim/bundle
git clone git://github.com/tpope/vim-fireplace.git
Once help tags have been generated, you can view the manual with:help fireplace.
Features
This list isn't exhaustive; see the :help for details.
Transparent setup
Fireplace.vim talks to nREPL. With Leiningen, it connects automatically using
the .nrepl-port file created when you run lein repl. If you are starting
nREPL some other way, run :Connect and enter the host and port. You can
connect to multiple instances of nREPL for different projects, and it will use
the right one automatically. ClojureScript support is just as seamless with
[Piggieback][].
The only external dependency is that you have either a Vim with Python support
compiled in, or python in your path.
Oh, and if you don't have an nREPL connection, installing [salve.vim][]
lets it fall back to using java clojure.main for some of the basics, using a
class path based on your Leiningen config. It's a bit slow, but a two-second
delay is vastly preferable to being forced out of my flow for a single
command, in my book.
Not quite a REPL
You know that one plugin that provides a REPL in a split window and works
absolutely flawlessly, never breaking just because you did something innocuous
like backspace through part of the prompt? No? Such a shame, you really
would have liked it.
I've taken a different approach in fireplace.vim. cq (Think "Clojure
Quasi-REPL") is the prefix for a set of commands that bring up a *command-line
window* — the same thing you get when you hit q: — but set up for Clojure
code.
cqq prepopulates the command-line window with the expression under the
cqcgives you a blank line in insert mode.
Evaluating from the buffer
Standard stuff here. :Eval evaluates a range (:%Eval gets the whole
file), :Require requires a namespace with :reload (:Require! does:reload-all), either the current buffer or a given argument. :RunTests
kicks off (clojure.test/run-tests) and loads the results into the quickfix
list.
There's a cp operator that evaluates a given motion (cpp for the
innermost form under the cursor). cm and c1m are similar, but they only
run clojure.walk/macroexpand-all and macroexpand-1 instead of evaluating
the form entirely.
Any failed evaluation loads the stack trace into the location list, which
can be easily accessed with :lopen.
Navigating and Comprehending
I was brand new to Clojure when I started this plugin, so stuff that helped me
understand code was a top priority.
:Source,:Doc, and:FindDoc, which map to the underlying
clojure.replmacro (with tab complete, of course).Kis mapped to look up the symbol under the cursor withdoc.[dis mapped to look up the symbol under the cursor withsource.[<C-D>jumps to the definition of a symbol (even if it's inside a jar
file).gf, everybody's favorite "go to file" command, works on namespaces.
Where possible, I favor enhancing built-ins over inventing a bunch of<Leader> maps.
Omnicomplete
Because why not? It works in the quasi-REPL too.
FAQ
Why does it take so long for Vim to startup?
That's either [classpath.vim][] or [salve.vim][].
Self-Promotion
Like fireplace.vim? Follow the repository on
GitHub and vote for it on
vim.org. And if
you're feeling especially charitable, follow tpope on
Twitter and
GitHub.
License
Copyright © Tim Pope. Distributed under the same terms as Vim itself.
See :help license.