强大的Vim插件
本文简单介绍自己使用Vim的插件及其安装使用方法
NERDTree(功能:方便查找文件):
1.下载NERD tree
在终端输入
wget http://www.vim.org/scripts/download_script.php?src_id=9870 -O NERDTree.zip
下载NERDTree
2.添加.vim配置
查看~/.vim目录,如果不存在,创建此目录
3.copy NERDTree.zip to ~/.vim
4.unzip NERDTree.zip
5.在vimrc 里面配置用快捷键打开tree代码 map <F2> :NERDTreeToggle<CR>
NERDTree操作介绍:
2.1.全局命令
:NERDTree [ | ]
打开一个Nerdtree,根结点由参数指定,不指定参数就是以当前目录为根结点
:NERDTreeFromBookmark
打开一个Nerdtree,根结点由参数所指定的书签
:NERDTreeToggle [ | ]
在当前Tab中如果Nerdtree已经存在,就切换显示与隐藏;
如果不存在,就相当于执行:NERDTree命令
:NERDTreeMirror
从另一个Tab中共享一个NerdTree过来(在当前Tab的Tree所作的改变也反应到原Tab中)
如果总共只有一个Tree,就直接共享;如果不止一个,就会询问共享哪个
:NERDTreeClose
在当前Tab中关闭Tree
2.2.书签
在NerdTree中,书签用于标记某个感兴趣的文件或目录,比如可以用书签标记所有 Project目录
2.2.1.书签表
如果书签被激活,则显示于树状图的上方
可以双击或用NERDTree-o来激活选中文件
可以用NERDTree-t映射使选中文件用新Tab打开,并跳到新tab页
可以用NERDTree-T映射使选中文件用新Tab打开,但不跳到新Tab页
2.2.2.书签命令
以下命令只在在Nerdtree的buffer中有效
:Bookmark
将选中结点添加到书签列表中,并命名为name(书签名不可包含空格);
如与现有书签重名,则覆盖现有书签。
:BookmarkToRoot
以指定目录书签或文件书签的父目录作为根结点显示NerdTree
:RevealBookmark
如果指定书签已经存在于当前目录树下,打开它的上层结点并选中该书签
:OpenBookmark
打开指定的文件。(参数必须是文件书签)
如果该文件在当前的目录树下,则打开它的上层结点并选中该书签
:ClearBookmarks []
清除指定书签;如未指定参数,则清除所有书签
:ClearAllBookmarks
清除所有书签
:ReadBookmarks
重新读入'NERDTreeBookmarksFile'中的所有书签
2.2.3.无效书签
如果监测到无效书签,脚本就会发布一个错误消息并将无效书签置为不可用;
无效书签将被移到书签文件的最后,在有效书签和无效书签之间有一个空行。
书签文件中的每一行代表一个书签,格式是
如果修正了某个无效书签,则可以重启vim或使用:ReadBookmarks命令重新读入书签信息
2.3.Nerdtree 映射
o.......在已有窗口中打开文件、目录或书签,并跳到该窗口 .....|NERDTree-o|
go......在已有窗口 中打开文件、目录或书签,但不跳到该窗口 .....|NERDTree-go|
t....... 在新Tab中打开选中文件/书签,并跳到新Tab .....|NERDTree-t|
T.......在新Tab中打开选中文件/书签,但不跳到新Tab .....|NERDTree-T|
i.......split 一个新窗口打开选中文件,并跳到该窗口 .....|NERDTree-i|
gi......split一个新窗口打开选中文件,但不跳到该窗口 .....|NERDTree-gi|
s.......vsp一个新窗口打开选中文件,并跳到该窗口 .....|NERDTree-s|
gs......vsp一个新 窗口打开选中文件,但不跳到该窗口 .....|NERDTree-gs|
!.......执行当前文件 .....|NERDTree-!|
O.......递归打开选中 结点下的所有目录 .....|NERDTree-O|
x.......合拢选中结点的父目录 .....|NERDTree-x|
X.......递归 合拢选中结点下的所有目录 .....|NERDTree-X|
e.......Edit the current dif .....|NERDTree-e|
双击......相当于NERDTree-o
中键......对文件相当于NERDTree-i,对目录相当于NERDTree-e
D....... 删除当前书签
P.......跳到根结点
p....... 跳到父结点
K.......跳到当前目录下同级的第一个结点
J.......跳到当前目录下同级的最后一个结点
...跳到当前目录下同级的前一个结点
...跳到当前目录下同级的后一个结点
C.......将选中目录或选中文件的父目录设为根结点
u.......将当前根结点的父目录设为根目录,并变成合拢原根结点
U.......将当前根结点的父目录设为根目录,但保持展开原根结点
r.......递归刷新选中目录
R.......递归刷新根结点
m....... 显示文件系统菜单
cd......将CWD设为选中目录
I....... 切换是否显示隐藏文件
f.......切换是否使用文件过滤器
F.......切换是否显示文件
B.......切换是否显示书签
q.......关闭NerdTree窗口
?.......切换是否显示Quick Help
NERD_commenter.vim (功能:便捷注释代码)
(1) 。 帮助手册查看
帮助NERD_commenter。
(2) 。 功能
源码文档注释。
(3) 。 安装
下载NERD_commenter压缩包,然后把解压的两个文件NERD_commenter.vim和
NERD_commenter.txt分别放到的$ HOME / .vim /插件和的$ HOME / .vim / doc的目录中。
(4) 。 使用方法
(5) 。 使用例子
-
\cl,在可选的注释方式之间切换,比如C/C++ 的块注释/* */和行注释//
-
\cc,注释当前行
-
\c,切换注释/非注释状态
-
\cs,以”性感”的方式注释
-
\cA,在当前行尾添加注释符,并进入Insert模式
-
\cu,取消注释
-
Normal模式下,几乎所有命令前面都可以指定行数
-
Visual模式下执行命令,会对选中的特定区块进行注释/反注释
必须在vimrc里面添加指令 filetype plugin on
下载snippy_bundles.vba snippy_plugin.vba 这两个东西。执行:so%即可 网址:http://www.vim.org/scripts/script.php?script_id=1318
最后还必须到vimrc文件,找到 filetype plugin indent on去掉注释添加filetype plugin on
详见笔记vim补全
4.jsbeautify.vim(js代码美化)
在usr/share/vim/vim73/plugin文件夹里面添加jsbeautify.vim
并在etc/vim目录下修改快捷键
nnoremap <f4> :call g:Jsbeautify() <CR>
let mapleader = "," (为了防止NERD_commenter不能用,可以不用配置)
可以修改opt_indext_size 改变默认缩进个数
5 surround (功能:它允许你对括号、标记、大括号等内的文字进行包裹(wrap))
下载地址 http://www.vim.org/scripts/script.php?script_id=1697
输入模式 normal
It's easiest to explain with examples. Press cs"'
inside
"Hello world!"
to change it to
'Hello world!'
Now press cs'<q>
to change it to
<q>Hello world!</q>
To go full circle, press cst"
to get
"Hello world!"
To remove the delimiters entirely, press ds"
.
Hello world!
Now with the cursor on "Hello", press ysiw]
(iw
is a text object).
[Hello] world!
Let's make that braces and add some space (use }
instead of {
for no space): cs]{
{ Hello } world!
Now wrap the entire line in parentheses with yssb
or yss)
.
({ Hello } world!)
Revert to the original text: ds{ds)
Hello world!
Emphasize hello: ysiw<em>
<em>Hello</em> world!
Finally, let's try out visual mode. Press a capital V (for linewise visual mode) followed by S<p class="important">
.
<p class="important"> <em>Hello</em> world!</p>
This plugin is very powerful for HTML and XML editing, a niche which currently seems underfilled in Vim land. (As opposed to HTML/XML inserting, for which many plugins are available). Adding, changing, and removing pairs of tags simultaneously is a breeze.
The .
command will work with ds
, cs
, and yss
if you install repeat.vim.
6.tagList(方便在类和方法之间切换)
在装taglist之前,可能需要安装 ctags (当把.vim文件放到plugin里面的时候)http://ctags.sourceforge.net/
配置
设置快捷键:
"<F8>打开taglist
nnoremap <silent> <F8> :TlistToggle<CR>
增强Taglist的Javascript语法识别能力
编辑~/.ctags,加入以下代码:
--langdef=Javascript --langmap=Javascript:.js.jsm --regex-JavaScript=/(^|^[^\/*]+[[:blank:]])([A-Za-z0-9._$]+)[[:blank:]]*[:=][[:blank:]]*new[[:blank:]]+Object\(/\2/o,object/ --regex-JavaScript=/(^|^[^\/*]+[[:blank:]])([A-Za-z0-9._$]+)[[:blank:]]*[:=][[:blank:]]*\{/\2/o,object/ --regex-JavaScript=/(^|^[^\/*]+[[:blank:]])(^[^\?][[:blank:]]*)([A-Za-z0-9_]+)[[:blank:]]*[:][[:blank:]]*[A-Za-z0-9._$'"()]+/\3/m,member/ --regex-JavaScript=/(^|^[^\/*]+[[:blank:]])([A-Za-z0-9._$]+)[[:blank:]]*[:=][[:blank:]]*new[[:blank:]]+Array\(/\2/a,array/ --regex-JavaScript=/(^|^[^\/*]+[[:blank:]])([A-Za-z0-9._$]+)[[:blank:]]*[:=][[:blank:]]*\[/\2/a,array/ --regex-JavaScript=/(^|^[^\/*]+[[:blank:]])([^! ]+[^= ]+)[[:blank:]]*=[[:blank:]]*[^""]'[^'']*/\2/s,string/ --regex-JavaScript=/(^|^[^\/*]+[[:blank:]])([A-Za-z0-9._$()]+)[[:blank:]]*[:=][[:blank:]]*function[[:blank:]]*\(/\2/f,function/ --regex-JavaScript=/(^|^[^\/*]+[[:blank:]])function[[:blank:]]+([A-Za-z0-9._$]+)[[:blank:]]*([^)])/\2/f,function/
参考网址:
http://easwy.com/blog/archives/advanced-vim-skills-taglist-plugin/
7.rails.vim(暂不需要使用)
详见rails.vim文档
8 让vim更好的支持javascript的显示
参考github网址:
https://github.com/jelera/vim-javascript-syntax
哥们在网上看到的比较详细的vim插件,有适合的就拿去哈~~
-
编程相关:
-
公共:
相信无人不知其大名,用来提供单个源代码文件的函数列表之类的功能。最近在使用一个针对面向对象语言的类似插件-tagbar.vim,也很不错。
提供快速注释/反注释代码块的功能
添加doxygen注释
提供快速生成代码段的功能
给不同的单词高亮,表明不同的变量时很有用。(特别说明一下,vim.org上有两个Mark.vim,请使用链接中指向的那个,另外一个是有bug的)
自动生成/更新文件的作者信息(本博编写)
一个通用的语法检查插件,支持c,js,等等
用来帮助缩进对齐的插件,需要的时候会很好用
-
c/c++:
提供C++代码的自动补全功能
提供快速切换.h和.cpp文件的功能
-
python:
提供实时检查python代码语法的功能(强烈推荐!)
在vim中查找python文档
-
js:
优化js代码,并不是简单的缩进,而是整个优化
-
html/xml:
使%不仅能够匹配简单的<>(),还能匹配<html></html>之类标签的功能
提供快速编写xml/html的能力,如标签自动闭合等
-
常用工具:
提供展示文件/目录列表的功能,比自带的文件浏览器要好很多
提供在vim中打开终端的功能,非常有用!
提供列出配色列表的功能,就不用一个个手工去敲配色名字了
提供日历的功能,并且可以记笔记
自动检测文件编码,也可以手动选择文件编码。
提供生成数列的功能
用vim来打造个人wiki
很强大的文件查找工具,需要依赖L9
用 :w 写入文件的时候会自动创建目录
快速给单词/句子两边增加符号(包括html标签),缺点是不用用"."来重复命令,repeat.vim可以解决这个问题
用vim来查看、发布、修改、删除博客,有人优化了这个代码:VimRepress
提供outline功能,功能非常强大
提供对齐文字的功能,不同于indent插件,一旦用到就会非常方便
提供命令模式下的补全,可以补全缓冲区中出现过的单词,很好用(另一个选择是cmdline completion)
在Vim中发腾讯微博(本博编写)
-
娱乐:
可以在vim中看糗事百科(本博编写,纯属娱乐~~)
可以在vim中画图,键盘控制。(还有一款插件,sketch也是画图,不过是用鼠标控制)
indent:
提供js代码的智能缩进,仅使用了他的indent功能
提供python的语法缩进,比默认的要好很多(本博修改)
syntax:
提供更好的js语法高亮
提供更好的python语法高亮
提供as代码的语法高亮
提供json的语法高亮
提供实时显示颜色的功能,如#FFFFFF
提供markdown着色功能,顺便也提供了snippet