本系列文章包括3篇,主要分享我在后端开发过程中使用终端的一些经验和心得,分享fish shell使用,使用tmux终端复用管理会话、窗口,以及vim插件使用,让vim变成强大的IDE。通过阅读本系列文章,你也可以打造一个高效易用的终端,能很大的提高工作的效率,让手指飞起来,让命令行飞起来。
本系列的3篇文章包括:
本系列文章使用的fish配置文件,tmux配置文件和vim插件都上传到了github, cool-terminal-conf.
本文为第三篇,vim插件使用教程。
依赖
id-utils
id-utils包含了一系列实用工具,用于生成和查询符号,exvim使用id-utils生成符号索引,用于搜索。
|
|
exuberant-ctags
ctags主要是为源代码产生标签文件,从而实现代码的定义的跟踪跳转
|
|
exVim
exVim将vim打造成一个友好编程环境的项目,exVim引入vim中(.exvim)项目文件的概念。通过Vim编辑此项目文件(.exvim),将调用exVim插件。这样,您可以应用不同的Vim设置,插件设置,甚至可以根据不同项目的需要加载插件。通常,它使Vim成为世界上最好的IDE!
入门
|
|
生成的.exvim工程,窗口左边为 project window,右边为 edit window,edit window可以配置目录过滤规则(folder_filter_mode),过滤目录(folder_filter),过滤文件(file_filter)等,在project window执行<leader>R命令生成目录树(<leader>R指的是按下’\‘,紧接着按下’R’,vim操作都是大小写敏感),然后执行 :Up
更新工程。
生成的工程结构如下图:
本节涉及的使用命令有
|
|
工程窗口
光标的移动与vim相同,使用 h j k l
分别对应光标的 左移 上移 下移 右移
,同时exvim提供 ctrl-j
和 ctrl-k
用于文件夹之间的光标移动
将光标移动到文件上,按下enter
将打开文件
将光标移动到文件夹上,安装enter
将折叠/展开目录,同时exvim也提供了 zo
和 zc
分别用于目录的折叠和展开
在目录下使用o
新建一行,输入文件名,enter
编辑文件后:w
保存,将新建一个文件
将光标移动到目录上,按下O
,将在该目录下新建一个文件夹,exvim提示你输入文件夹名
Tips: 想快速定位到当前正在编辑的文件,按下 <leader>fc
将会回到project window并将光标定位到正在编辑的文件,如果不小心关闭了project window这招也很实用。
搜索
vim使用 /gd
即可搜索改单词。
同时exvim提供全局搜索,使用ex-gsearch进行文本搜索,支持两种方式:
<leader>gg
:搜索光标下的单词:GS <word>
:搜索和包含 的文本 :GSW <word>
:搜索完整的
搜索完成后将在全局搜索窗口
显示搜索结果,如下图所示
过滤搜索结果
上图是我们全局搜索session的结果,包含session, Seesion, new_session等包含session文本的结果,那如何对搜索结果进行进一步过滤呢,比如过滤出Session的结果。具体操作:在搜索结果窗口搜索 /\<Session\>
,该命令表示搜索完整的Session单词,然后按下<leader>r
对搜索结果进行过滤,这样,搜索窗口就只包含匹配
问题: 当我们使用 :GS 搜索文本 tcp::socket时,发现没有输出结果,而我们确定代码中肯定包含 tcp::socket 文本,这是因为ex-gsearch仅支持 : , 空格
的关键字无法搜索到。解决办法就只能分两步:首先搜索一个单词,然后在搜索结果窗口中过滤搜索结果,将完整的 搜索词 过滤出来
符号列表
前面我们使用:Up
命令,exvim使用ctag, id-utils等插件生成标签符号,ex-symbols提供几种方法在符号窗口列出符号
|
|
下图为光标在TCPConnection下,
其他插件
ctrlp
ctrlp用于快速打开文件,按下ctrl-p
,然后输入要匹配的文件名,ctrl-j ctrl-k
上下移动光标,选择要打开的文件
TabBar
TabBar插件使vim打开的文件在顶部以tab的形式展示,如下图所示
我修改了一些快捷方式:
|
|
a.vim
a.vim主要用于头文件和源文件之间的快速跳转,比如正在编辑tcp.h,按下 :A
即可快速打开 tcp.cpp
NERDTree
NERDTree用于文件浏览,在展示当前目录下的所有文件,快捷方式我设置的为 ctrl-n
总结
上面列出的插件是我使用vim过程中使用最频繁的,掌握了大大的提高开发效率,当然还有些其他的插件,如indentLine, undotree等,读者可以根据实际使用中慢慢掌握,vim学习难度比较高,但是掌握后,开发效率能很大的提升。