Ⅰ. 插件描述
Nim language plugin for vimⅡ. 基本信息
|
Ⅲ. 安装方法
使用Vundle管理器安装
在你的.vimrc下添加:Plugin 'zah/nimrod-vim'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall
对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。
使用NeoBundle管理器安装
在你的.vimrc下添加:NeoBundle 'zah/nimrod-vim'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall
使用VimPlug管理器安装
在你的.vimrc下添加:Plug 'zah/nimrod-vim'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall
使用Pathogen管理器安装
在终端中运行以下命令:cd ~/.vim/bundle
git clone https://github.com/zah/nim.vim
Ⅳ. 文档说明
# Nim language support for Vim
This provides Nim language support for Vim:
- Syntax highlighting
- Auto-indent
- Build/jump to errors within Vim
- Project navigation and Jump to Definition (cgats or compiler-assisted
idetools).
The source of this script comes mainly from
http://www.vim.org/scripts/script.php?script_id=2632, which comes from a
modified python.vim (http://www.vim.org/scripts/script.php?script_id=790).
Installation
Installing nim.vim
is easy but first you need to have either pathogen plugin or vundle
- If you already have one working then skip to the final step.
It is also recommened that you use the syntastic plugin for best results.
Pathogen
Step 1: Install pathogen.vim
First I'll show you how to install tpope's
pathogen.vim so that it's easy to
install nimrod.vim
. Do this in your Terminal so that you get thepathogen.vim
file and the directories it needs:
mkdir -p ~/.vim/autoload ~/.vim/bundle; \
curl -so ~/.vim/autoload/pathogen.vim \
https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim
Next you need to add this to your ~/.vimrc
:
call pathogen#infect()
Step 2: Install nimrod.vim as a pathogen bundle
You now have pathogen installed and can put nimrod.vim
into ~/.vim/bundle
like this:
cd ~/.vim/bundle
git clone git://github.com/zah/nim.vim.git
You may also want to install synastic by calling
git clone https://github.com/scrooloose/syntastic.git
Vundle
Vundle is a more automatic way to install vim plugins that works by cloning
the git reposotory.
Step 1: Install Vundle
Add the vundle script to your vim:
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
Modify your ~/.vimrc to get vundle running, lightly adapted from Vundle's readme
set nocompatible " be iMproved, required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" alternatively, pass a path where Vundle should install bundles
"let path = '~/some/path/here'
"call vundle#rc(path)
" let Vundle manage Vundle, required
Bundle 'gmarik/vundle'
filetype plugin indent on " required
Step 2: Install nim.vim
On the line after Bundle 'gmarik/vundle'
, add Bundle 'zah/nim.vim'
. You may also want
to add Bundle 'scrooloose/syntastic'
. Save ~/.vimrc
and restart vim. Execute :BundleInstall
and wait for nim.vim to be installed.
Final Step
Next you need to add this to your ~/.vimrc
:
fun! JumpToDef()
if exists("*GotoDefinition_" . &filetype)
call GotoDefinition_{&filetype}()
else
exe "norm! \<C-]>"
endif
endf
" Jump to tag
nn <M-g> :call JumpToDef()<cr>
ino <M-g> <esc>:call JumpToDef()<cr>i
The JumpToDef
function hooks the nim.vim
plugin to invoke the nim
compiler with the appropriate idetools command. Pressing meta+g will then jump
to the definition of the word your cursor is on. This uses the nim compiler
instead of ctags, so it works on any nimrod file which is compilable without
requiring you to maintain a database file.
Other recomended Vim plugins
- https://github.com/scrooloose/syntastic (copied bits from its readme)
- https://github.com/Shougo/neocomplcache
If something goes wrong
Since you are using vim, on source code which might have syntax problems,
invoking an external tool which may have its own share of bugs, sometimes stuff
just doesn't work as expected. In these situations if you want to debug the
issue you can type :e log://nim
and a buffer will open with the log of
the plugin's invocations and nim's idetool answers.
This can give you a hint of where the problem is and allow you to easily
reproduce on the commandline the idetool parameters the vim plugin is
generating so you can prepare a test case for either this plugin or the nimrod
compiler.