Vim的使用

这里不介绍vim的命令的使用,主要是介绍一些插件

首先还是介绍下Vim的配置文件
Linux:       ~/.vimrc
Windows:  C:\Program Files\Vim\_vimrc

vim中的插件
Linux: 通常在~/.vim/{plugin,doc}中
Windows: 位于安装目录下的{plugin,doc}中

1. ctags

ctags主要是用来生成代码函数或变量的定义索引

Vim启动时会自动载入当前目录下tags文件

ctags使用需要记住下面几个命令

$ ctags –R *       生成tags文件
:set tags=*tags   设置tags文件
:tag func          跳转到指定函数标签func 
:tags              显示标签栈 
:ts(tagslist) 
:tp(tagspreview) 
:tn(tagsnext) 
Ctrl+]             跳到光标所在函数或者结构体的定义处 
Ctrl+T             返回查找或跳转

ctags配置

""""""""""""""""""""""""""""""
" Ctags
""""""""""""""""""""""""""""""
set tags=tags;
set autochdir   " 让vim首先在当前目录里寻找tags文件,如果没有找到tags文件,就到父目录中查找,一直向上递归 *不建议*
nmap <F5> <Esc>:!ctags -R *<CR>  " 映射快捷键 F9 –> 在当前目录下生成tags文件 

HELP: Ctags中文手册

2. cscope

cscope可以生成函数或变量的定义及被调用信息,并通过命令查找它们
Windows版本的cscope: cscope-win32 

cscope命令(cs为cscope的缩写)

$ cscope –Rbq                    生成cscope数据库(cscope.in.out  cscope.out  cscope.po.out)
:cs add cscope.out 添加cscope数据库
:cs find c|d|e|f|g|i|s|t symbol  查找sysbol

关于cs find (cscope_maps.vim有定义快捷键)

0/s     查找本符号(可以跳过注释)
1/g     查找本定义
2/d     查找本函数调用的函数
3/c     查找调用本函数的函数
4/t     查找本字符串
6/e     查找本egrep模式
7/f     查找本文件
8/i     查找包含本文件的文件

cscope在Vim中的参考配置: cscope_maps.vim

tip: cscope在产生索引文件时,只搜索后缀名为.c, .h的文件(对于C Language),
我们可以用下面的命令来加入后缀为.DEF的C文件

find . -name "*.h" -o -name "*.c" -o -name "*.DEF" > cscope.files
cscope -bq -i cscope.files

HELP: Cscope的使用(领略Vim + Cscope的强大魅力)

3. taglist

taglist需配合ctags一起使用,以分割窗口形式显示当前的代码结构概览

taglist常用命令

Tlist                  打开/关闭标签列表窗口
TlistOpen              打开并将输入焦点至于标签列表窗口
TlistClose             关闭标签列表窗口
TlistToggle            切换标签列表窗口状态(打开←→关闭)
ctl-w+w / ctl-w+[←,→]  窗口切换

在taglist窗口快捷键:

<CR>          跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o             在一个新打开的窗口中显示光标下tag
<Space>       显示光标下tag的原型定义
u             更新taglist窗口中的tag
s             更改排序方式,在按名字排序和按出现顺序排序间切换
x             taglist窗口放大和缩小,方便查看较长的tag
+             打开一个折叠,同zo
-             将tag折叠起来,同zc
*             打开所有的折叠,同zR
=             将所有tag折叠起来,同zM
[[            跳到前一个文件
]]            跳到后一个文件
q             关闭taglist窗口
<F1>          显示帮助 

taglist配置

""""""""""""""""""""""""""""""
" Taglist
""""""""""""""""""""""""""""""
if MySys() == "windows"
    let Tlist_Ctags_Cmd = 'ctags'
elseif MySys() == "linux"
    let Tlist_Ctags_Cmd = '/usr/bin/ctags'
endif
let Tlist_Show_One_File = 1             " 只显示当前文件的tag
let Tlist_Exit_OnlyWindow = 1           " 如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1          " 在右侧窗口中显示taglist窗口 *不建议*
let Tlist_Auto_Open=1                   " 启动vim自动打开taglist     *不建议*

nnoremap <silent> <F3> :TlistToggle<CR>

HELP: vi/vim使用进阶: 使用taglist插件

4. NERDTree

NERDTree可以在Vim运行时显示目录和文件结构(其文件比较多,都需要放进去)

NERDTree命令

:NERDTree [<start-directory>]        从指定目录或当前目录作为根节点打开NERDTree
:NERDTreeToggle [<start-directory>]  在打开和关闭NERDTree间切换
:NERDTreeMirror                      从另一个Tab中共享一个NerdTree
:NERDTreeClose                       关闭NERDTree间切换         
:NERDTreeFind                        在目录树种查找当前文件   

NERDTree常用的快捷键

o 打开关闭文件或者目录
t 在标签页中打开
T 在后台标签页中打开
! 执行此文件
p 到上层目录
P 到根目录
K 到同目录第一个节点
J 到同目录最后一个节点
u 打开上层目录
m 显示文件系统菜单(添加、删除、移动操作)
? 帮助
q 关闭

NERDTree配置

""""""""""""""""""""""""""""""
" NERDTree
""""""""""""""""""""""""""""""
let NERDTreeWinPos = "right" " *不推荐*
let NERDTreeWinSize = 31     " *不推荐*
nmap <F4> <ESC>:NERDTreeToggle<CR>" 

:help NERDTree

5. MiniBufExplorer

MiniBufExplorer用来快速浏览和操作Buffer
对于多源文件编辑非常有用

MiniBufExplorer命令([MBE]表示MBE可省略):

:MBEToggle     打开/关闭MiniBufExplorer
:[MBE]bn       跳转至下一个buf
:[MBE]bp       跳转至前一个buf
:[MBE]b<n>     跳转至第N个buf
:[MBE]b<tab>   自动补齐
:[MBE]bd [N*]  删除第*个buf

MiniBufExplorer配置

""""""""""""""""""""""""""""""
" MiniBufExplorer
""""""""""""""""""""""""""""""
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
let g:miniBufExplMoreThanOne=0
nmap <F6> <ESC>:MBEToggle<CR>" 

:help minibufexpl (NOT WORK)

6. WinManager

WinManager是一个界面管理插件

WinManager命令

:WMToggle        打开/关闭WinManager

WinManager配置

"""""""""""""""""""""""""""""""
"" winManager setting
"""""""""""""""""""""""""""""""
let g:NERDTree_title="[NERDTree]"
let g:winManagerWindowLayout="NERDTree|TagList"
let g:winManagerWidth = 30 " 设置winmanager的宽度,默认为25
let g:AutoOpenWinManager = 1 " 在进入vim时自动打开winmanager
nmap <silent> <F9> :WMToggle<cr>

TIP: 将WinManager和集成时会有一些问题,解决方案参考 <将Vim改造为强大的IDE>,个人觉得显示出来的还是很不好看,不如不使用

7. 其他插件

@1 A: .c和.h文件间快速切换

命令:

:A     在新Buffer中切换到c/h文件
:AS    横向分割窗口并打开c/h文件
:AV    纵向分割窗口并打开c/h文件
:AT    新建一个标签页并打开c/h文件

配置:

nmap <silent> <F7> :A<CR>

@2 grep: 查找 (该插件需要grep命令行支持)

命令:

:Grep [<grep_options>] [<search_pattern> [<file_name(s)>]]   /* 注意G大写 */

配置:

nnoremap <silent> <F8> :Grep<CR>

@3 bufexplorer: 可以打开历史文件列表以达到快速切换文件的目的(与MiniBufExplorer相似)

命令:

\be  or  :BufExplorer                 打开历史文件列表
\bs  or  :BufExplorerHorizontalSplit  水平新建历史文件列表窗口
\bv  or  :BufExplorerVerticalSplit    垂直新建历史文件列表

@4 Project:  对代码项目进行简单的集中管理

好像没什么用,就是一个文件管理器
使用可参考: <VIM之Project项目管理工具>

@5 OmniCppComplete: C/C++语言时自动补全,依赖于ctags,个人觉得比较鸡肋

需要ctags打开三个选项

--c++-kinds=+p --fields=+iaS --extra=+q

配置:

set nocp
filetype plugin on
set completeopt=menu
set cindent

@6 c.vim: 我们可以称之为C程序员插件

具体可以参考 <VIM: C程序员插件C.vim>

8. 语法高亮

用Vim打开C源代码可以发现仅仅对关键字进行了高亮,而函数和变量等未高亮

下面是网上流传高亮函数的办法(加入到syntax/c.vim中)

" highlight Functions
syn match cFuntions display "[a-zA-Z_]\{-1,}\s\{-0,}(\{1}"ms=s,me=e-1
hi def link cFuntions Title

std_c是一个标准C语法脚本,只是配色不怎么好看,以待后续

9. Sharmer

Sharmer: 我的配置及插件记录

 

其他科参考文档: 

<Vim中文帮助文档>

<网友Vim配置文件>

<vi/vim使用进阶: 剑不离手 – quickfix>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值