十個必用的 Vim Plugin
操作 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 到e 的快捷鍵:
nmape :NERDTreeToggle
如此,按下 \e 即可將 NERD Tree 開啟或關閉。
:NERDTreeMirror
此指令用於分享一個已經存在的 NERD Tree Buffer,
假設於一分頁中已經開啟了 NERD Tree ,那麼可在另外一個分頁中
將前一分頁的 NERD Tree Buffer 同步開啟於目前分頁。:NERDTreeFind
開啟 NERD Tree 並且找尋目前編輯的檔案。
若找到目前檔案則會自動將游標位置放至於該檔案節點上。※ NERDTree 瀏覽操作
如同操作一般的 Vim 文字檔案一樣,所有的 motion 指令都可使用。
於資料夾節點上:
o - 展開資料夾節點
C-j - 跳至下一節點
C-k - 跳至上一節點於檔案節點:
o - 開啟檔案
- 開於水平分割視窗
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" ,接著按下 鍵,此時 "for" 會被延展成完整的 for 迴圈
片段,游標會跳至第一個 place holder ,輸入文字後,可按下 跳至下一個 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 ff :FufFile
nnorempa fb :FufBuffer
...以此類推。
呼叫 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'
則可改為
Hello world!
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。
※ 使用
ss 建立匿名 global session file
sS 建立匿名 local session file
se 刪除目前的 session file
sE 刪除所有的 session file
sn 建立命名的 global session file
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
十個必用的 Vim Plugin的更多相关文章
- Good Vim plugin for python [Vim python mode]
Here I got a very neat plugin for vim which is awesome indeed. It's from youtube years before. So le ...
- vim plugin 原理
vim 个性化设置与功能扩展均通过 script 来实现,这种 script 又叫 plugin.plugin 是 vim 的核心与精髓. 最常用的配置文件 vimrc,也是一种 plugin.换句话 ...
- Linux系列教程(十)——Linux文本编辑器vim
通过前面几篇博客我们终于结束了Linux常用命令的介绍,Linux常用命令主要包括以下: ①.Linux文件和目录处理命令 ②.Linux链接命令和权限管理命令 ③.Linux文件搜索命令 ④.Lin ...
- 精选Spring Boot三十五道必知必会知识点
Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家.本文精选了三十五个常见的Spring Boot知识点,祝你一臂之力! 问题一 Spr ...
- visual studio code 的必装推荐插件plugin, vscode, vsc
An Old Hope Theme (theme, 推荐,且推荐它的 classic theme,安装后在颜色选项里选择,该插件的定制见文末) Cobalt2 (theme) Drac ...
- gvim work notes.. a few days' work on 64bit vim and plugin compilations
(a 600MB+ sized c/c++ compiler which is capable of hi-light and JB styled completion!! and of-course ...
- (原創) Gvim 個人習慣常用設定 (vim)
不定期更新這篇,因為查詢到好用的設定或者插件就會更新自己的設定. "set nocompatible let $LANG='zh_TW.UTF-8' set langmenu=zh_tw.u ...
- 多语言编程必备的十大 Vim 插件
原文地址:http://www.linuxeden.com/a/58769 使用这 10 个 Vim 插件,可以让你在写代码或运维时,感觉更棒. 我使用 Vim 文本编辑器大约 20 年了.有一段时间 ...
- 【转】所需即所获:像 IDE 一样使用 vim
转自: https://github.com/yangyangwithgnu/use_vim_as_ide 所需即所获:像 IDE 一样使用 vim yangyangwithgnu@yeah.net ...
随机推荐
- 【Hadoop】HA 场景下访问 HDFS JAVA API Client
客户端需要指定ns名称,节点配置,ConfiguredFailoverProxyProvider等信息. 代码示例: package cn.itacst.hadoop.hdfs; import jav ...
- Java反射机制的基本概念与使用
本篇文章分为以下几个部分: 1.认识反射 2.反射的源头(Class类) 3.利用反射操作构造方法 4.利用反射调用类中的方法 5.反射中的invoke方法 6.利用反射调用类中的属性 反射在我们普通 ...
- springmvc+shiro认证框架配置
1,在web.xml中配置fiter,如下所示 <!-- shiro的filter --> <!-- shiro过虑器,DelegatingFilterProxy通过代理模式将spr ...
- 概率dp - UVA 11021 Tribles
Tribles Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33059 Mean: 有k个细 ...
- 举例说明:Hadoop vs. NoSql vs. Sql vs. NewSql
转自:http://blog.jobbole.com/86269/ 尽管层次数据库如今在大型机上依然被广泛使用,但关系数据库(RDBMS)(SQL)已经占领了数据库市场,并且表现的相当优异.我们存 ...
- HBase源码学习系列
转自:http://www.cnblogs.com/cenyuhai/tag/hbase%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97/ (mark) hbase源码系列(十 ...
- 【C语言】求旋转数组的最小数字,输入一个递增排序的数组的一个旋转,输出其最小元素
//求旋转数组的最小数字,输入一个递增排序的数组的一个旋转,输出其最小元素 #include <stdio.h> #include <string.h> int find_mi ...
- 【Openwrt】刷
设定你的电脑ip 为192.168.1.100 网线一头连接lan口,另外一头连接电脑.WAN口不能插线. 按住路由器的qss 键,开启路由器的电,灯灭掉,等6秒左右灯会再次闪几下就松开,用googl ...
- awk sed grep 详解
Linux的文本处理工具浅谈 awk [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列 ...
- C# 图片识别技术(支持21种语言,提取图片中的文字)
图片识别的技术到几天已经很成熟了,只是相关的资料很少,为了方便在此汇总一下(C#实现),方便需要的朋友查阅,也给自己做个记号. 图片识别的用途:很多人用它去破解网站的验证码,用于达到自动刷票或者是批量 ...