vim bible

来源:互联网 发布:马恩列斯毛 知乎 编辑:程序博客网 时间:2024/05/16 14:23

PS以下内容都是从互联网和平时收集下来


插件篇:

1. minibuf

下载地址http://www.vim.org/scripts/script.php?script_id=159版本6.3.2安装将下载的 minibufexpl.vim文件丢到 ~/.vim/plugin 文件夹中即可手册在minibufexpl.vim 文件的头部

推荐配置:

let g:miniBufExplMapCTabSwitchBufs=1

可以通过e打开第二个文件,此时vim上方会出现minibuf条,当光标落在minibuf区时,通过<tab><s-tab>可以切换不同的标签,d可以删除标签,

:tabe filename 在新的标签中编辑filename

ctrl + w + s 水平分割

ctrl + w + v 垂直分割

ctrl + q 关闭当前区域

:bn 切换下一个标签

:bp 切换前一个标签

(这里可以通过nmap <F5> :bn<cr>    nmap <F6> :bp<cr>来加速)

:vsp filename 垂直分割屏幕并打开一个新文件

:sp filename 水平分割屏幕并打开一个新文件


2. ctags

首先在目录树最上层生成tag文件,敲 ctags -R 即可

:set tags=xxxxx/tags 导入你的tags文件

把光标移动到symbol上,ctrl + ] 可以跳到所有symbol的引用处,ctrl + t 可以跳回来


3. cscope

在代码根目录敲入 cscope -Rbq 会生成三个文件cscope.in.out, cscope.out, cscope.po.out,在vim里导入.out文件

cs add xx/xx/cscope.out xx/xx

(一般linux发行版的vim脚本都会做这个事情,可以参考/etc/vimrc文件)

cscope最有用的就是两个find命令

cs find g $symbol:查看$symbol 的定义

cs find c $symbol:查看$symbol 调用的地方 

cs find s $symbol:查看所有$symbol 出现的地方

和ctags一样,我建议用map来映射这些命令,以下都是从cscope help里抄来的

nmap <C-[>s :cs find s <C-R>=expand("<cword>")<CR><CR>nmap <C-[>g :cs find g <C-R>=expand("<cword>")<CR><CR>nmap <C-[>c :cs find c <C-R>=expand("<cword>")<CR><CR>

把这三个命令添加到/etc/vimrc中,可以和ctags的 ctrl + ] 配合使用


4. quickfix

用ctags/cscope查找的时候,比如查找所有symbol,这是下方会出现quickfix窗口,:cw可以切换到quickfx

我们在quickfix中,通过:cn :cp 来切换symbol的不同地方,当然也可以通过 nmap <F7> :cn<cr>, nmap <F8> :cp<cr>


命令篇:

1. 移动光标

b,B:往上一个字跳(没啥用)

w,W,e,E:往下一个字跳(没啥用)

u: undo

ctrl + r :redo

0, ^:跳到行首

$:跳到行尾

ctrl + b : pagedown

ctrl + f : pageup

h, j, k, l : 等同于光标上下左右

%:跳到配对的括号上去


2. 插入

a : 插入到光标后面

o : 插入一行到当前行后面,同时移动光标到插入行首

O: 插入一行到当前行前面,同时移动光标到插入行首


3. 分屏

vim -O xx1 xx2 :垂直分屏

vim -o xx1 xx2 :水平分屏


4. tab

set expandtab

set smarttab

set shiftwidth=4

set tabstop=4

这样一个tab就被指定为4个空格,对于写各种脚本方便多了


5. 其他

u : undo

ctrl + r : redo

e : open new file

saveas : 另存为

split  vsplit :水平(垂直)分屏