Vim技巧与插件使用

实战技巧:精进Vim的使用      http://blog.csdn.net/hitlion2008/article/details/6884694
简明Vim练级攻略                      http://www.csdn.net/article/2011-09-08/304226 

=======================================================

一、        Ctags用法:

1.    源码目录建立tag:ctags –R

打开vim,运行命令:set tags=/source/tags

2.    <C-]>从函数调用处跳到定义处

<C-t>从定义处跳回到调用处

 

二、        Taglist用法:

1.      手册::help taglist.txt

2.      Taglist窗口快捷键:

<CR> 跳转到光标下的标签定义处

o(小写) 打开一个新窗口,跳转到光标下的标记定义处

P(大写) 跳转到前一个(Ctrl-W_p)窗口中的标记处

p(小写) 在文件窗口中显示标记的定义且保持光标处在taglist窗口中

t 新建一tab窗口,打开文件并跳转到标记处,如文件已在某一tab被打

开,则只跳转.

Ctrl-t 新建一tab窗口,打开文件并跳转到标记处

<Space> 显示当前光标下的标记的原型(prototype)

u 更新taglist 窗口中的标记

s 标记排序(按名字还是按标记在文件中出现的自然顺序<从上至下> )

d 删除光标下的标记

x 放大或缩小 taglist 窗口

+ 展开一个折叠(fold)

- 收缩一个折叠

* 展开所有折叠

= 收缩所有折叠

[[ 跳转到上一个文件的开头

<Backspace> 跳转到上一个文件的开头

]] 跳转到下一个文件的开头

<Tab> 跳转到下一个文件的开头

 

三、        WinManager:

文件浏览器和窗口管理器整合Taglist和netrw.

用法:

1.      手册::help winmanager

2.      打开::WMToggle

3.      关闭::WMClose

4.      窗口之间切换光标: ctrl+w

 

四、            cscope用法:

1.      帮助 :h cs  / help if_cscop.txt

2.      建立cscope数据库:在项目根目录下运行 cscope –Rbq

3.      把生成的cscope文件导入到vim中来

:cs add /source /cscope.out  /source

4.    "cscope find"的用法:  

:cs find c|d|e|f|g|i|s|t name

0 或 s

查找本 C 符号(可以跳过注释)

1 或 g

查找本定义

2 或 d

查找本函数调用的函数

3 或 c

查找调用本函数的函数

4 或 t

查找本字符串

6 或 e

查找本 egrep 模式

7 或 f

查找本文件

8 或 i

查找包含本文件的文件

5.       cscope –R进入图形化界面

ctrl+d 退出

tab 在结果与搜索菜单之间移动

ctrl+p 前一项(对搜索结果和菜单项都适用)

ctrl+n 后一项(对搜索结果和菜单项都适用)

 

打开一个C源码程序,把光标移到一个C标识符上, 按 CTRL-\ s

( 先ctrl-\ ,再按s 键 ,速度不能太慢) ,如果有结果显示,可用快捷键移动:

下翻:    空格/d/j   (屏幕/页/行)

上翻:    b/u/k     (同上)

6.      Cscope 默认只支持C, lex, 和 yacc 文件 (.c, .h, .l, .y) ,如果还要它索引其它类型的怎么办?

在当前目录创建一个名为cscope.files 的文件,把要cscope索引的文件都写入该文件.此时可以通过cscope -bR 重建cscope索引数据库.

             

五、            a.vim插件在h/c之间跳转:

:A

在新Buffer中切换到c/h文件

:AS

横向分割窗口并打开c/h文件

:AV

纵向分割窗口并打开c/h文件

:AT

新建一个标签页并打开c/h文件

 

六、            自动补全omni-completion:

1.      帮助: :help new-omni-completion

2.      配置:

filetype plugin indent on

   set completeopt=longest,menu

3.      使用

"Ctrl+X Ctrl+O", 会弹出一个下列菜单, 显示所有匹配的标签,

快捷键可以用:

Ctrl+P

向前切换成员

Ctrl+N

向后切换成员

Ctrl+E

表示退出下拉窗口, 并退回到原来录入的文字

Ctrl+Y

表示退出下拉窗口, 并接受当前选项

       4. vim中的其他补全方式还有:

Ctrl+X Ctrl+L

整行补全

Ctrl+X Ctrl+N

根据当前文件里关键字补全

Ctrl+X Ctrl+K

根据字典补全

Ctrl+X Ctrl+T

根据同义词字典补全

Ctrl+X Ctrl+I

根据头文件内关键字补全

Ctrl+X Ctrl+]

根据标签补全

Ctrl+X Ctrl+F

补全文件名

Ctrl+X Ctrl+D

补全宏定义

Ctrl+X Ctrl+V

补全vim命令

Ctrl+X Ctrl+U

用户自定义补全方式

Ctrl+X Ctrl+S

拼写建议

=====================================================================================================

""""  自定义,追加到标准vimrc之后  """""  
" Favourate
set number
set nobackup
colorscheme desert
set hlsearch
set autoindent  "自动缩进
set cindent  "C语言风格缩进
set tabstop=4
set softtabstop=4
set shiftwidth=4
set noswapfile 
set showmatch "高亮匹配括号
set binary  "可读二进制文件
set wrap   "自动换行
set linebreak "整词换行
set cursorline "高亮当前行
"set cursorcolumn
"set history=1000
"set encoding=utf-8

" Taglist
let Tlist_Show_One_File = 1
let Tlist_Exit_OnlyWindow = 1
let Tlist_Ctags_Cmd="C:\\HOME\\bin\\ctags"
"set tags+=tags
"set tags+=~/vimfiles/tags/libc.tags
"set tags+=~/vimfiles/tags/susv2.tags
"set tags+=~/vimfiles/tags/glib.tags
"set tags+=~/vimfiles/tags/cpp.tags

set completeopt=longest,menu   " 智能补全

" cscope
if has("cscope")
 set cscopequickfix=s-,c-,d-,i-,t-,e-
endif

" WinManager
let g:winManagerWindowLayout='FileExplorer|TagList'
"nmap wm :WMToggle<cr>

" OmniCppComplete
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_MayCompleteDot = 1
let OmniCpp_MayCompleteArrow = 1
let OmniCpp_MayCompleteScope = 1
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]

" SuperTab
"let g:SuperTabRetainCompletionType=2
"let g:SuperTabDefaultCompletionType="<C-X><C-O>"

" Csupport  
"map  <silent> <F9>    <Esc>:cprevious<CR> 
"map  <silent> <F10>    <Esc>:cnext<CR>

" Chinese help
if  version >= 603
 set helplang=cn
endif


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值