以前都用alias来干,最近被推荐FuzzyFinder,试试吧:
http://enews.url.com.tw/ossf/56275
操作Vim时,通常都在Terminal底下作用,无法像一般的GUI
应用程式可以以树状目录来浏览档案。The NERD Tree
是一将档案目录以文字模式方式绘制出来的Plugin。让使用者可以不必跳出Vim
编辑器而可进行档案目录的浏览、开启等动作。新版的NERD Tree
还另外支援了书签(Bookmark)功能,使用者可将路径节点存成书签,以便下次载入时
直接回到该路径上。
※ 安装
将下载回来的zip档解压缩之后,使用rsync将目录同步复制到~/.vim底下。
复制完,NERD_tree.vim档案应该要在~/.vim/plugin/里头。※ 使用
:NERDTree [path|bookmark]
可直接以NERD Tree 开启一路径,或一书签。
:NERDTreeToggle [path|bookmark] 同上,但若NERD Tree已经被开启,则会自动关闭开NERDTree 。
通常可自己在.vimrc 内map 到<leader>e 的快捷键:
nmap <leader>e :NERDTreeToggle<CR>
如此,按下\e 即可将NERD Tree 开启或关闭。
:NERDTreeMirror
此指令用于分享一个已经存在的NERD Tree Buffer,
假设于一分页中已经开启了NERD Tree ,那么可在另外一个分页中
将前一分页的NERD Tree Buffer同步开启于目前分页。:NERDTreeFind 开启NERD Tree并且找寻目前编辑的档案。 若找到目前档案则会自动将游标位置放至于该档案节点上。
※ NERDTree 浏览操作
如同操作一般的Vim 文字档案一样,所有的motion 指令都可使用。
于资料夹节点上:
o -展开资料夹节点
Cj -跳至下一节点
Ck -跳至上一节点于档案节点:
o -开启档案
<Tab> -开于水平分割视窗
t -开于分页
T -开于分页(背景)其他详细资讯可参考:help NERDTree.txt
◎ Taglist
Taglist plugin可使用ctags来产生程式码的变数、函数、类别、标头档等等资讯的索引。
并且可以左边开启分割视窗,将这些资讯分类别显示出来,也可在Taglist Buffer内直接
跳跃至该项目定义的位置。
※ 安装
同NERDTree 安装方式,安装完,taglist.vim 应该要在~/.vim/plugin/ 内。
同时你需要启用filetype 功能,请在~/.vimrc 内加上:
filetype on
来启用filetype 的机制。
另外系统需要安装ctags :
于Debian, Ubuntu 平台,可使用apt-get 安装ctags 套件:
$ sudo apt-get install ctags
于Mac 底下可使用MacPorts 安装ctags 套件:
$ sudo port install ctags
※ 使用
:TlistToggle
对目前档案使用ctags 产生标签档(tag file),并且开启/关闭TagList 视窗。
:TlistAddFiles {file(s)} [file(s) ...]
加入其他档案的索引到目前的TagList 视窗。
:TlistAddFilesRecursive {directory} [ {pattern} ]
同上,不过可对一目录底下的所有档案做索引。
:TlistSessionSave {filename}
可将目前TagList 的资讯存到一特定档案内,以便于下次开启Vim 时载入回来。
:TlistSessionLoad {filename}
将Session 档案载入回来。
:TlistUpdate
更新Tag 资讯
详细资讯请参考:help taglist.txt
◎ SnipMate
为模仿TextMate一自动补完程式码的功能而实做的plugin。在SnipMate之前为
SnippetsEmu ,但有Place Holder以及和Autocomplpop互相冲突的问题,SnipMate则
改进了这项问题,并且同名称的Place Holder可以同步内容,也可反向跳跃至上一个Place
Holder。
※ 安装
同上plugin 安装方法,将对应的Runtime 路径里头的档案复制到~/.vim/ 内。
另外要注意的是,需要在~/.vimrc 内启用filetype plugin:
filetype on
filetype plugin on※ 使用
Snipmate为不同类型的档案提供了多种程式码样板,在编辑程式时,可以由特定的关键字来延展
该程式码样板。举例来说,编辑一C 程式:
$ vim test.c
进入insert mode ,输入"for" ,接着按下<Tab>键,此时"for"会被延展成完整的for回圈
片段,游标会跳至第一个place holder ,输入文字后,可按下< Tab>跳至下一个place holder。Snippet的样板可在~/.vim/snippets内找到,该样板档案名称是以档案类型作为区别,例如:
c.snippets , java.snippets , javascript.snippets你也可以延伸自订自己的Snippet 样板,举例来说,为C 程式码撰写样板,可写:
c-ext.snippets
c-cairo.snippets
c-x11.snippets那么在编辑C 程式码时,这些Snippet 都会被自动载入。
FuzzyFinder plugin提供了一个快速搜寻档案、Buffer、书签、指令、标签的一个介面。
搜寻时,可以即时预览搜寻结果,并且支援wildcard的模糊搜寻
※ 安装
同上plugin 安装方法,将对应的Runtime 路径里头的档案复制到~/.vim/ 内。
※ 使用
FuzzyFinder 提供下列命令:
FufBuffer - Buffer mode (fuf-buffer-mode)
FufFile - File mode (fuf-file-mode)
FufDir - Directory mode (fuf-dir-mode)
FufMruFile - MRU-File mode (fuf-mrufile-mode)
FufMruCmd - MRU- Command mode (fuf-mrucmd-mode)
FufBookmark - Bookmark mode (fuf-bookmark-mode)
FufTag - Tag mode (fuf-tag-mode)
FufTaggedFile - Tagged-File mode (fuf-taggedfile-mode)
FufJumpList - Jump-List mode (fuf-jumplist-mode)
FufChangeList - Change-List mode (fuf-changelist-mode)
FufQuickfix - Quickfix mode (fuf-quickfix-mode)
FufLine - Line mode (fuf-line-mode)
FufHelp - Help mode (fuf-help -mode)你可将常用命令map 至快捷键,例如:
nnoremap <leader>ff :FufFile<CR>
nnorempa <leader>fb :FufBuffer<CR>
...以此类推。
呼叫FuzzyFinder 搜寻视窗之后,操作方式如下:
Ctrl-n , Ctrl-p上下选择项目
Ctrl-j开启该档案到水平分割视窗
Ctrl-k开启该档案到垂直分割视窗
Ctrl-l开启档案至新分页Ctrl-\ Ctrl-\ 切换搜寻模式( fuzzy matching 或partial matching )
AutoComplPop Plugin为一可自动侦测目前程式码的语境,自动呼叫相关对应的补齐函式(Completion Function)
而省去手动触发补齐功能的Plugin。
安装之后,AutoComplPop就会自动启用,输入片段程式码即可见效。
需要注意的是,Vim的版本需要在7.2才有支援。
安装方式同以上Plugin 。
大多数补齐函式,需要另外扫描外部档案以获得补齐资讯,耗费的时间依情况而定,但大多数补齐资讯都
大同小异,因此NeoComplCache Plugin针对特定的样式(Pattern)所回传的补齐资讯做了快取,
以增加补齐速度。
安装方式同以上Plugin 。
◎ Fakeclip
为了解决于Terminal以及GUI之间复制贴上的问题,FakeClip
利用了虚拟的暂存器来解决多种平台上Termianl复制文字至剪贴簿的问题。
同时支援:
Cygwin
Mac OS X
X Window System (使用xclip)
Vim缺乏一个良好的Buffer管理介面,只能利用简单的:buffers , :[n]buf ,
[n]bufwipe , [n]bufdo指令来做操作。
BufExplorer提供了一个介面将所有Buffer的资讯整理出来,你也可透过该介面
唤回、删除该Buffer。
安装方式同以上Plugin。
Surround plugin 可针对包含在文字外的括号、引号、XML 标签等等做快速的修改。
举例来说:
于下字串内,按下cs"' 时
"Hello world!"
可改为:
'Hello world!'
此时若按下cs'<q>
则可改为
<q>Hello world!</q>
Surround plugin 也支援Visual Mode ,选择后,可使用大写S 对该区块修改包围的文字
安装方式同以上Plugin。
GSession.vim是一处理Vim Session Plugin 。一般建立Session可使用
:mksession [filename]指令,来将目前所有的分页、开启的档案状态储存起来,在下次
载入Vim时可以将状态唤回。但缺点就在Session File会被存在工作目录内,
GSession可自动将Session File集中放置在~/.vim/session内,并且可以是匿名Session
,也就是,你不需要花时间想Session的名称。 存Session之后,在同一个路径开启Vim时便会自己载入Session,省去输入指令再去载入的时间。
若要储存为命名的Session ,载入时,也同时支援自动补齐,不需自己记住当时所存的Session 名称。
安装方式同以上Plugin。
※ 使用
<leader>ss 建立匿名global session file
<leader>sS 建立匿名local session file
<leader>se 删除目前的session file
<leader>sE 删除所有的session file
<leader>sn 建立命名的global session file
<leader>sl 建立命名的local session file
附录:
以上plugin皆可使用Vimana来安装。
Vimana为一可以侦测vim.org上plugin档案,来自动安装plugin档案之模组。
安装Vimana : 使用cpan来安装Vimana,若是初次使用cpan,只需要采用预设的cpan设定即可。
$ sudo cpan Vimana
搜寻plugin :
$ vimana s [keyword]
安装plugin :
$ vimana i [plugin name]
◎作者简介
Cornelius,目前在AIINK(爱印网),以Perl语言开发的Jifty web framework从事网站开发相关工作。于CPAN - Perl模组典藏网维护多个Perl模组,参与Jifty, SD等Perl相关开放原始码专案。主要以Vim做为开发工具,着有cpan.vim , perl-completion.vim , perldoc.vim等多个vim相关Plugin。 Github Twitter Plurk Blog Google group