菜鸟vimer成长记——第4.1章、通用插件
简介
关于插件的分类,此系列只会简单的区分为通用插件和编程插件。通用插件的意思是,不基于任何编程语言都可以使用的插件。编程插件,是针对于编程习惯,或者说是针对于某种语言的插件。
计划中,是先把基本常用的插件先整理出来。后期如果有遇到更适合的插件也会添加进来。
下面的插件,如果没有特别说明都是基于Vundle管理的。这些插件都可以在github上搜到,一般是最受欢迎的那个,所以就不一一说明了。
有些插件的快捷键设置会统一在最后的配置文件体现,就不一一描述。
开始界面
vim-startify
vim-startify是一个更改开始界面的插件,使用了之后启动vim就不会再看到版本信息的界面,而是一些快捷方式,如最近打开的文件,自己设置的bookmark,还有session等等,并且可以快速打开,非常的实用。
使用方式
如果直接vim不指定文件名,startify全显示一个小巧但精致的窗口。如果已经在编程文件,可以通过:Startify命令调出来这个窗口。
普通的打开文件方式。此时通过j
,k
来移动,确认要打开的时候按键。
更快的打开文件方式。列表上有数字,直接按对应的数字就可以打开。
更强的打开文件方式。可以通过操作,支持更丰富的窗口打开方式。先移动并按下面的操作方式,最后再统一按
- b 在同一个窗口打开
- s 水平分屏
- v 垂直分屏
- t 打开新的标签页
其他命令
- e 创建一个新的缓冲
- q 退出
更多细节,可以参见:h Startify。
配色
配色下完后,还需要把插件的color拷贝到指定的color目录(比如windows下,目录是$VIM/vimfiles/colors)。这里推荐两个:molokai、solarized
。大家自行下载。
窗口
几个区域的解释
1. nerdtree窗口,浏览文件。
2. 文件编辑区。
3. tagbar窗口。
4. ariline窗口。文件状态。
nerdtree
是一个用于浏览文件系统的树形资源管理外挂,它可以让你像使用Windows档案总管一样在VIM中浏览文件系统并且打开文件或目录。内挂是谁呢:E,有兴趣的大神也可以去瞅一瞅。
使用方式
#移动到文件窗口,一般是放置在左侧:ctrl+W+h。如果你是放右侧那就使用ctrl+w+l,也可以使用ctrl+W+w切换。
ctrl + w + h 光标 focus 左侧树形目录
#打开文件。有加g和没加g的区别是:加g,光标还在文件目录上;没加g,光标会跳到新窗口或者标签
o 在已有窗口中打开文件、目录或书签,并跳到该窗口
go 在已有窗口 中打开文件、目录或书签,但不跳到该窗口
t 在新 Tab 中打开选中文件/书签,并跳到新 Tab
T 在新 Tab 中打开选中文件/书签,但不跳到新 Tab
i split 一个新窗口打开选中文件,并跳到该窗口
gi split 一个新窗口打开选中文件,但不跳到该窗口
s vsplit 一个新窗口打开选中文件,并跳到该窗口
gs vsplit 一个新 窗口打开选中文件,但不跳到该窗口
#展示收缩文件
O(大写o)递归打开选中 结点下的所有目录
x 合拢选中结点的父目录
X 递归 合拢选中结点下的所有目录
#编程当前文件
e Edit the current dif
D 删除当前书签
#在文件目录间移动
P 跳到根结点
p 跳到父结点
K 跳到当前目录下同级的第一个结点
J 跳到当前目录下同级的最后一个结点
k 跳到当前目录下同级的前一个结点
j 跳到当前目录下同级的后一个结点
#切换根目录,即显示文件目录
C 将选中目录或选中文件的父目录设为根结点
u 将当前根结点的父目录设为根目录,并变成合拢原根结点
U 将当前根结点的父目录设为根目录,但保持展开原根结点
#刷新文件目录
r 递归刷新选中目录
R 递归刷新根结点
#快速切换工作目录
cd 将 CWD 设为选中目录
#退出
q 关闭 NerdTree 窗口
vim-airline
这是一款状态栏增强插件,可以让你的Vim状态栏非常的美观,同时包括了buffer显示条扩展smart tab line以及集成了一些插件。
安装完不需要我们做什么就可以使用了。
我比较懒,所以暂时没有使用它的其他插件和配置。大家有兴趣可以看官网。
Tagbar
和TagList差不多。为什么不使用TagList。因为貌似不更新了。而且Tagbar对面向对象的语言支持更友好些。
查找
ctrlp
是对文件进行模糊的查找,如果你的project目录结构复杂,或者你正在阅读一个较大的项目的话,那么ctrlp可以帮你快速的定位到你想要文件而不必在终端不断的cd、ls。
使用方式
开启搜索:ctrl+p
开户搜索后的操作如下
- F5 刷新
- Ctrl+F|Ctrl+B 切换模式。
搜索缓冲区的文件,标记是“buffers”
搜索最近打开的文件,标记是“mru files”
搜索文件,标记是“files”
- Ctrl+D 切换只搜索文件名还是搜索路径
搜索的时候包括路径
搜索的时候只搜索文件,此时有一个“by fname”的标识
- Ctrl+r 切换搜索模式。普通搜索和正则搜索
正则搜索,此时有一个“regex”的标记,可以使用正则匹配。
- Ctrl+x 在当前窗口水平分屏打开文件
- Ctrl+v 同上, 垂直分屏
- Ctrl+o 打开文件,具体方式可以选择。
- Ctrl+n|Ctrl+p 搜索的历史记录
- Ctrl+z 标记多个文件,然后可以使用Ctrl+o打开它们
上面有各种各样的模式。可以混合着使用,感觉太给力了。
EasyGrep
暂时没有找到比较好的文本搜索。如果有找到再同步更新。不过有总比没有强。
Vim是内置支持Grep的,Vim7.3更是更新了Grep的引擎,在Vim内Grep的速度更快了。但是Vim中的Grep一样不容易掌握,还好有很多简化Grep的插件可以用,包括grep的变种ack,这其中使用起来最方便的,最人性化的要数EasyGrep了。
- 可视化的配置界面,可以让你很方便设置搜索路径,配备模式,递归模式等等。
- 可以直接搜索当前光标下的单词,你不用再手动输入命令了。
- 可以全局查找并替换,这在代码重构的时候特别有用,虽然这是IDE的基本功能,但是在Vim下我还没有看到那个插件做到EasyGrep这么好。用户可以选择是否替换当前匹配项,发现做错了,一个命令就可以取消所有的替换。
使用方法
下面的""指的是键。大家如果有兴趣也可以自行修改。在.vimrc里添加let mapleader=','
,然后就可以使用','当作键了。
- \vv 在文件中搜索当前光标下的单词, :Grep word将搜索"word", 如果加叹号:Grep !word表示全词匹配的方式搜索, Grep也可以带参数, 比如:Grep -ir word, r表示递归目录. i表示不区分大小写.
- \vV 全词匹配搜索, 同:Grep !word;
- \va 与vv相似, 搜索结果append在上次搜索结果之后;
- \vA 与vV相似, 搜索结果append在上次搜索结果之后;
- \vr 替换;
- \vo 打开选项菜单;可以选择匹配。里面有很多选项,比较重要的是r(递归),i(忽略大小写)
有待解决的问题
还有几个问题不是很舒服,还在找解决办法
- 怎么像ctrlp那样舒服的打开窗口
- 怎么一次性还原所有替换过的文本
- 怎么更快捷的切换查找目录
自动提示
supertab
SuperTab使键入Tab键时具有上下文提示及补全功能
AutoComplPop
装完,啥也不需要做。输入2个以上的字符后就会有提示了。不需要像以前那样还得按键才有提示。结合上面的supertab,这酸爽~~~。当然原来的自动补全的操作还是可以继续使用的。比如Ctrl+X,Ctrl+L等。
娱乐
vim-matrix-screensaver
安装后输入:Matrix。然后就enjoy。
配置文件
对应的.vimrc的配置
"===>>>插件配置
"开始页面
Bundle 'mhinz/vim-startify'
"窗口
Bundle 'scrooloose/nerdtree'
Bundle 'bling/vim-airline'
Bundle 'majutsushi/tagbar'
"配色
Bundle 'tomasr/molokai'
Bundle 'altercation/vim-colors-solarized'
"查找文件
Bundle 'kien/ctrlp.vim'
"查找文本
Bundle 'vim-scripts/EasyGrep'
"自动提示
Bundle 'vim-scripts/AutoComplPop'
Bundle 'ervandew/supertab'
"娱乐
Bundle 'uguu-org/vim-matrix-screensaver'
"===>>>插件设置配置
"===>>>Startify配置
" 设置栏目排序。成对出现,一个标题,一个栏目名。
let g:startify_list_order = [
\ [' These are my bookmarks:'],
\ 'bookmarks',
\ [' My most recently used files'],
\ 'files',
\ [' My most recently used files in the current directory:'],
\ 'dir',
\ [' These are my session和s:'],
\ 'sessions',
\]
"设置书签,一般都设置常用文件。像这里设置的是配置文件,因为我喜欢经常倒腾这些东西。也可以设置wiki文件页面。
let g:startify_bookmarks = [
\ '$VIM/_vimrc'
\]
" 起始页显示的列表长度
let g:startify_files_number = 5
" 个性化头部信息定义。如果想定义尾部可以使用startify_custom_footer
let g:startify_custom_header = [
\ ' ________ __ __ ',
\ ' __ /\_____ \/\ \\ \ ',
\ ' __ __ /\_\ ___ ___ \/___//''/''\ \ \\ \ ',
\ ' /\ \/\ \\/\ \ /'' __` __`\ /'' /'' \ \ \\ \_ ',
\ ' \ \ \_/ |\ \ \/\ \/\ \/\ \ /'' /''__ \ \__ ,__\',
\ ' \ \___/ \ \_\ \_\ \_\ \_\ /\_/ /\_\ \/_/\_\_/ ',
\ ' \/__/ \/_/\/_/\/_/\/_/ \// \/_/ \/_/ ',
\ ' ',
\ ' Zhuang Junxiang ',
\ ' ',
\ ' 1.01 ^ 365 = 37.78 ',
\ ' 0.99 ^ 365 = 0.02 ',
\ '',
\ '',
\ ]
" 设置快捷键
map <F2> :Startify<CR>
"===>>>NerdTree配置
" 设置快捷键
map <F3> :NERDTreeMirror<CR>
map <F3> :NERDTreeToggle<CR>
"===>>>Tagbar配置
" 设置快捷键
nmap <F7> :TagbarToggle<CR>
为什么不装winmanager和minibufexpl。因为个人习惯一般喜欢让编辑的窗口充满,所以不太愿意切分,如果有需要的时候才调用出来。minibufexpl,一般不会有同时开多个buffer的使用习惯。大家,如果感兴趣可以安装一下。
菜鸟vimer成长记——第4.1章、通用插件的更多相关文章
- 菜鸟vimer成长记——第2.4章、cmd-line模式
cmd-line模式又有3个类型:Ex 命令(ex commands).查找模式(Search patterns).Filter 命令(Filter commands).本文主要重点的是Ex 命令和S ...
- 菜鸟vimer成长记——第2.1章、normal模式
目的 掌握normal模式下常用操作的语法和概念,这些操作对应的应用场景以及实用技巧. 通过normal模式举一反三掌握cmd-line和visual的常用文本操作. 简介 文本操作的理想状态为:一个 ...
- 菜鸟vimer成长记——第4.2章、编程插件
简介 这部分的插件是与编程相关的插件.主要涉及两大块:所有编程语言通用的插件,以及各个语言独有的插件.插件的数量和合理性,这可能是一个不断累积和修正的过程. 个人感觉,现在比较适合sh,html,ma ...
- 菜鸟vimer成长记——第4.0章、Vim插件管理利器-Vundle
定义 Vundle是vim bunler和简称,它是一个vim插件管理器. Vim本身缺乏对插件的有效管理,安装插件并配置.vimrc文件非常不便.gmarik受到Ruby的bunler的启发,开发了 ...
- 菜鸟vimer成长记——第2.3章、insert模式
大部分的Vim 命令都在非插入模式中执行,不过有些功能在插入模式中会更好实现些. 如果没有输入当前文件不存在的新文本的需求时,建议通过其他模式来操作完成. 目的 掌握inser模式下常用操作的语法和概 ...
- 菜鸟vimer成长记——第2.2章、visual模式
vi是没有可视模式的.然而大多数编辑软件都都是有可视模式.所以我猜测vim是几乎迫于无奈才有了visual模式. 个人建议,能不用就不用.这样能直接在头脑里处理好文本,锻炼文本处理能力,同时能转变过来 ...
- 菜鸟vimer成长记——第2.0章、模式初探
首先,其他的文本编辑器只有一种模式,就是插入模式.而vim一下子颠覆了我们的世界观——有好多模式.这个是思维上的切换,很难也很重要!!! 其次,Vim 提供一个区分模式的用户界面.也就是说在不同的模式 ...
- 菜鸟vimer成长记——目录
菜鸟vimer成长记——第0章.我眼中的vim学习 菜鸟vimer成长记——第1章.统一概念 菜鸟vimer成长记——第2.0章.模式初探 菜鸟vimer成长记——第2.1章.normal模式 菜鸟v ...
- 菜鸟vimer成长记——第0章、我眼中的vim学习
这是一系统总结vim的学习文章,记录我自己学习vim的过程和感悟.与此同时也想分享出来给大家,欢迎大家互相讨论和学习. 在这里假设你们对vim已经有了一些基本的认识或者说已经使用过几个月的vim.该系 ...
随机推荐
- 全部读取------------ 一次性全部读取的.read() VS 一行一行的for迭代
全部读取 f = open("喜洋洋",mode= "r",encoding= "utf-8") 方法一: 一次性全部读取f = o ...
- 跟我一起阅读Java源代码之HashMap(三)
上一节我们讲到了如何用散列和链表实现HashMap,其中有一个疑问今天已经有些答案了,为什么要用链表而不是数组 链表的作用有如下两点好处 1. remove操作时效率高,只维护指针的变化即可,无需进行 ...
- spring中MessageSource的配置使用方法1[转]
本文转载仅供自己学习收录,不做任何商业用途,如有需要请访问文章原地址:http://blog.csdn.net/qyf_5445/article/details/8124306 Spring定义了访问 ...
- CSS盒子模型之CSS3可伸缩框属性(Flexible Box)
CSS盒子模型(下) 一.CSS3可伸缩框(Flexible Box) 可伸缩框属性(Flexible Box)是css3新添加的盒子模型属性,有人称之为弹性盒模型,它的出现打破了我们经常使用的浮动布 ...
- ubuntu修改用户环境变量解决音乐播放器Rhythmbox乱码问题
先打开主文件夹 cd /home/user #user是你的用户名 然后编辑用户环境 sudo gedit .profile在打开的文件中添加: export GST_ID3_TAG_ENCODING ...
- Hive学习之路 (二十)Hive 执行过程实例分析
一.Hive 执行过程概述 1.概述 (1) Hive 将 HQL 转换成一组操作符(Operator),比如 GroupByOperator, JoinOperator 等 (2)操作符 Opera ...
- HBase学习之路 (十)HBase表的设计原则
建表高级属性 下面几个 shell 命令在 hbase 操作中可以起到很大的作用,且主要体现在建表的过程中,看 下面几个 create 属性 1. BLOOMFILTER 默认是 NONE 是否使用布 ...
- nginx学习要点记录
IO多路复用: 1.轻量 2.cpu亲和性:把CPU核心和nginx工作进程绑定,把每个worker进程固定在一个CPU上执行,减少切换cpu的cache miss,获得更好的性能 3.IO多路复用e ...
- 跳转到appstore下载app的链接 记录一下
这是链接: https://itunes.apple.com/cn/app/da-dou-dou-lao-shi/id1395835036?mt=8 其中值得一提的是mt参数是啥意思 见下图:
- P1414 又是毕业季II
题目描述 彩排了一次,老师不太满意.当然啦,取每位同学的号数来找最大公约数显然不太合理.于是老师给每位同学评了一个能力值.于是现在问题变为,从n个学生中挑出k个人使得他们的默契程度(即能力值的最大公约 ...