用vim-NERDTree-Taglist写Scala

1.用pathogen管理插件,全部使用pathogen默认的设置方式。手动下载vim-scala、NERDTree、Taglist、easytags(支持Taglist自动更新的插件)丢到~/.vim/bundle下,或者也可以配置updat_bundles文件。

2.安装Exuberant Ctags。现在的电脑是Macbook,用brew管理软件,brew install ctags

3.设置Taglist支持Scala。vim ~/.vim/bundle/taglist/plugin/taglist.vim添加下面的内容。在yacc language下面加

let s:tlist_def_scala_settings = 'scala;t:trait;c:class;T:type;' .
                      \ 'm:method;C:constant;l:local;p:package;o:object'
4.增加文件~/.ctags,内容如下。vim-scala的plugin下已经包含该内容了(部分不同),但是操作中,不增加~/.ctags及下面的内容,Taglist不生效。原因不详。。


--langdef=scala
--langmap=scala:.scala

--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*class[ \t]+([a-zA-Z0-9_]+)/\4/c,classes/
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*object[ \t]+([a-zA-Z0-9_]+)/\4/o,objects/
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*((abstract|final|sealed|implicit|lazy)[ \t ]*)*case class[ \t ]+([a-zA-Z0-9_]+)/\6/C,case classes/
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*case object[ \t]+([a-zA-Z0-9_]+)/\4/O,case objects/
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*trait[ \t]+([a-zA-Z0-9_]+)/\4/t,traits/
--regex-scala=/^[ \t]*type[ \t]+([a-zA-Z0-9_]+)/\1/T,types/
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy|override|private[^ ]*(\[[a-z]*\])*|protected)[ \t]*)*def[ \t]+([a-zA-Z0-9_]+)/\4/m,methods/
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy|override|private[^ ]*|protected)[ \t]*)*val[ \t]+([a-zA-Z0-9_]+)/\3/V,values/
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy|override|private[^ ]*|protected)[ \t]*)*var[ \t]+([a-zA-Z0-9_]+)/\3/v,variables/
--regex-scala=/^[ \t]*package[ \t]+([a-zA-Z0-9_.]+)/\1/p,packages/

5.配置下~/.vimrc。我的~/.vimrc内容不多,下面只列出和此次配置相关的。


filetype plugin on
filetype indent on
syntax enable
let mapleader = ","
let g:mapleader = ","

"NERDTREE, Tlist窗口之间切换
nnoremap <C-h> <C-w>h
nnoremap <C-l> <C-w>l

"快速保存,按下逗号再按w就保存了
nmap <leader>w :w!<cr>

"Taglist
autocmd BufWritePost *.* :TlistUpdate "配合easytag,每次保存后都会自动更新Taglist
map <leader>tt :TlistToggle<CR> "按下逗号然后按两次tt就可以打开/关闭Taglist
let Tlist_Use_Right_Window = 1
let Tlist_Exit_OnlyWindow = 1

"NERDTree
let g:NERDTreeWinPos = "right"
map <leader>nn :NERDTreeToggle<cr> "按下逗号然后按两次nn就可以打开/关闭NERDTree

6.TODO,手动ctags生成大工程tags时还有问题。看spark源码还暂时用eclipse

7.参考的资料出处没记录下来,向所有作者致敬。丑图一张



你可能感兴趣的:(用vim-NERDTree-Taglist写Scala)