Vim的使用
来源:互联网 发布:js 不等于空字符串 编辑:程序博客网 时间:2024/06/05 17:34
这里不介绍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.filescscope -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窗口中的tags 更改排序方式,在按名字排序和按出现顺序排序间切换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'endiflet Tlist_Show_One_File = 1 " 只显示当前文件的taglet Tlist_Exit_OnlyWindow = 1 " 如果taglist窗口是最后一个窗口,则退出vimlet 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.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }
MiniBufExplorer配置
""""""""""""""""""""""""""""""" MiniBufExplorer""""""""""""""""""""""""""""""let g:miniBufExplMapWindowNavVim = 1let g:miniBufExplMapWindowNavArrows = 1let g:miniBufExplMapCTabSwitchBufs = 1let g:miniBufExplModSelTarget = 1let g:miniBufExplMoreThanOne=0nmap <F6> <ESC>:MBEToggle<CR>".csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }
:help minibufexpl (NOT WORK)
6. WinManager
WinManager是一个界面管理插件
WinManager命令
:WMToggle 打开/关闭WinManager.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }
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文件
.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }配置:
nmap <silent> <F7> :A<CR>.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }
@2 grep: 查找 (该插件需要grep命令行支持)
命令:
:Grep [<grep_options>] [<search_pattern> [<file_name(s)>]] /* 注意G大写 */.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }
配置:
nnoremap <silent> <F8> :Grep<CR>
@3 bufexplorer: 可以打开历史文件列表以达到快速切换文件的目的(与MiniBufExplorer相似)
命令:
\be or :BufExplorer 打开历史文件列表\bs or :BufExplorerHorizontalSplit 水平新建历史文件列表窗口\bv or :BufExplorerVerticalSplit 垂直新建历史文件列表.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }
@4 Project: 对代码项目进行简单的集中管理
好像没什么用,就是一个文件管理器
使用可参考: <VIM之Project项目管理工具>
@5 OmniCppComplete: C/C++语言时自动补全,依赖于ctags,个人觉得比较鸡肋
需要ctags打开三个选项
--c++-kinds=+p --fields=+iaS --extra=+q
配置:
set nocpfiletype plugin onset completeopt=menuset cindent.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }
@6 c.vim: 我们可以称之为C程序员插件
具体可以参考 <VIM: C程序员插件C.vim>
8. 语法高亮
用Vim打开C源代码可以发现仅仅对关键字进行了高亮,而函数和变量等未高亮
下面是网上流传高亮函数的办法(加入到syntax/c.vim中)
" highlight Functionssyn match cFuntions display "[a-zA-Z_]\{-1,}\s\{-0,}(\{1}"ms=s,me=e-1hi def link cFuntions Title
.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }std_c是一个标准C语法脚本,只是配色不怎么好看,以待后续
9. Sharmer
Sharmer: 我的配置及插件记录
其他科参考文档:
<Vim中文帮助文档>
<网友Vim配置文件>
<vi/vim使用进阶: 剑不离手 – quickfix>
- vim的使用
- vim的使用
- vim的初级使用
- vim的使用
- 高效率的使用VIM
- vim+cscope的使用
- VIM的使用
- vim+cscope的使用
- vim taglist的使用
- Vim中退格键的使用
- vim+cscope的使用
- vim的使用 - 笔记
- vim 的使用
- 高效率的使用VIM
- vim的使用技巧
- vim的使用
- 高效率的使用VIM
- vim的使用技巧
- UVa 10719 - Quotient Polynomial
- 现在的我很幸福
- MySQL引擎
- SGU 102 prime水题
- Linux socket编程介绍
- Vim的使用
- Github的使用
- 简述xml
- WPF学习笔记:ComboBox的数据绑定
- 交叉编译directfb - Cross compile directfb
- freelancer 语源
- jackson处理json对象
- Spring MVC 学习笔记 json格式的输入和输出
- shell整理