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 :水平(垂直)分屏