Vim 笔记

Vim 基本操作
  • “一个光标的故(gu)事”(方向(xiang)键不是最好的选择) ⇒ The Vim Way

  • 先阅读 vimtutor,根据提示进行操作(zuo)练习 ⇒ 先尝(chang)试(shi)“生存(cun)下来”

8-)

  • 常用(yong)模式:normal, lastline, visual, insert, … ⇒ 熟练(lian)在(zai)它们(men)中切换

  • 字词句段(duan)篇 ⇒ word/string/paragraph/blockwise ⇒ 尝(chang)试在它们之间移动、选定、编(bian)辑

  • 搜索式移(yi)动 ⇒ F/f,T/t,/,?,……

-

:!:

查(cha)看(kan)当前(qian)词语的 man 手册(ce)页 ⇒ Shift-k

-

:!:

查看当前词(ci)语(yu)的定义处(局(ju)部变(bian)量) ⇒ gd

  • 跳(tiao)转到文件 ⇒ gf

  • 块(blockwise)操(cao)作 ⇒ v/c/d/y + a/i + {/[/(/“/‘

  • 窗口间的移动 ⇒ \+ h/i/j/k/

学会(hui)使用帮(bang)助

Vim 中键入(ru):

:help xxx

即可(ke)获得(de)关于 xxx 的帮(bang)助。xxx 可(ke)以(yi)是选项、命令(ling)、甚(shen)至(zhi)快捷键(jian)组合。

Folding

在 Vim 中输(shu)入:

:set fdm=syntax

即表(biao)示以 syntax 的方式折叠代码(即设定(ding) FoldingMethod)。

  • Folding 的方法(fa)有(you) syntax、marker、indent、manual 等几种。

  • 在折叠(die)处按 z-o 可以展开(kai)一层折叠(die),z-O 展开(kai)此处所(suo)有层次的折叠(die)。z-c/C 则相反。

  • 展开当前文(wen)件所有的(de)折叠可(ke)以用 z-R,折叠则(ze)用 z-M。

QuickFix

摘抄一段 QuickFix 的帮(bang)助文(wen)件:

Vim has a special mode to speedup the edit-compile-edit cycle.  This is
inspired by the quickfix option of the Manx's Aztec C compiler on the Amiga.
The idea is to save the error messages from the compiler in a file and use Vim
to jump to the errors one by one.  You can examine each problem and fix it,
without having to remember all the error messages.

也就是(shi)说,QuickFix 原来(lai)是(shi)用(yong)在处理编译(yi)出错的信(xin)息(xi)上的。其实通过(guo)配置,它(ta)也能用(yong)于 cscope 的查询和跳转。

Vim 内置支(zhi)持 make 指令,你可以输入

:make

来调用 make 命令在 Vim 当(dang)前工作目录下编译,其(qi)出(chu)错信息就会出(chu)现在 QuickFix 窗口中(zhong)。

QuickFix 有些常用指(zhi)令:

:copen
:cclose
:cnext
:cprev

分(fen)别是(shi)打开(kai)/关闭 QuickFix 窗(chuang)口,下(xia)一个和上一个错误/警(jing)告。其它命令可以(yi)查看(kan)其帮助文件。

Macro

TODO

Split Screen

TODO

C/C++

ctags 和(he) cscope 是 Linux 下(xia)比(bi)较常用(yong)的(de) C/C++代码(ma)分析(xi)器(qi),配合(he) Vim 使用(yong)有不(bu)错的(de)效果。

  • ctags

Open C++ file with extra stl_tags:

  • cscope

可以参考(kao):

那些 ctags 和 cscope 能(neng)做和不能(neng)做的事情

ctags 和 cscope 只(zhi)能(neng)找(zhao)到(dao)匹配(pei)的(de)(de)字符串,但(dan)是(shi)对于(yu) C++里(li)面复杂的(de)(de)语义,如(ru)函(han)数(shu)重(zhong)载(zai)之(zhi)类的(de)(de)却无能(neng)为力(li)。跳转(zhuan)的(de)(de)时候(hou)可(ke)能(neng)会跳转(zhuan)错误(wu)或(huo)者给出一(yi)堆重(zhong)名(ming)的(de)(de)函(han)数(shu)以(yi)供选择,代(dai)码补(bu)全的(de)(de)时候(hou)也一(yi)样。要做到(dao)跳转(zhuan)/补(bu)全的(de)(de)正(zheng)确(que),现有(you)的(de)(de) C++的(de)(de) IDE(集成开发环境(jing))中(zhong),Eclipse、QtCreator、KDevelop 等都是(shi)用自带(dai)的(de)(de)分(fen)析器解析后再做跳转(zhuan)的(de)(de)。现在(zai)有(you)人开始(shi)尝试在(zai) Emacs 上(shang)用 gcc 前端分(fen)析代(dai)码,求得(de)精确(que)的(de)(de)补(bu)全,不过我还(hai)没找(zhao)到(dao) Vim 上(shang)比(bi) ctags 和 cscope 更(geng)好(hao)用的(de)(de)东(dong)西。这么说吧,ctags 和 cscope 这些(xie)轻量的(de)(de)分(fen)析器配(pei)合(he) Vim 这种快(kuai)速(su)的(de)(de)编(bian)辑器还(hai)是(shi)比(bi)较搭(da)配(pei)的(de)(de)。或(huo)者你可(ke)以(yi)试着(zhe)用一(yi)下下面提到(dao)的(de)(de) Eclim,后端就是(shi)个 Eclipse……

然后呢,请务必记住——

活用 QuickFix 和(he) TagSelect!

  • 代码补全

Vim 自(zi)身带(dai)有不少补(bu)全功能,可以在 Vim 中搜索关于“compl”的帮(bang)助

在此,我推荐 C++开发者安(an)装(zhuang) omnicppcomplete 插件,所有用户安(an)装(zhuang) neocomplcache 插件。

  • Eclim:以 Vim 作为前端,操作 Eclipse 后端,打开和编辑 Eclipse 工程。
番外篇:正则表达式

Vim 的强大也体现在(zai)其搜索/替换的时候,能够使用强大的正(zheng)则表达(da)式这一点上。参见

Vim 与 Linux 下的 C/C++开发

  • Vim 只是一个编辑器

  • 用好 Linux 这个最大的(de) IDE ⇒ The Unix Way

各种小工具的配合(he)让开发工作(zuo)变得简单

  • 用 vim 编辑 ⇒ 用 gcc 编译 ⇒ 用 gdb 调试

Vim 插件列表

多看上(shang)各个插件的介绍(shao)页面和帮助手(shou)册(ce)

注意插件冲突(tu)和(he)快捷(jie)键冲突(tu)

  • a.vim

  • conque 1.1.vba * DoxygenToolkit.vim * doxygen * grep.vim * mark * matchit * neocomplcache * NERD commenter

  • omnicppcomplet

  • pathogen.vim

  • showfunc.vim

  • snipMate

  • tabbar.vim

  • taghighlight

  • taglist

  • txtbrowser

  • vcscommand

  • winmanager

  • zencoding

  • ……

Vim 配色方案

- tango2:

:-) 可以与终端配色一致 / :-(

深色背(bei)景下的紫色比(bi)较惨淡

- eclipse:

:-) gvim 下配色接近 eclipse / :-(

终端下配(pei)色不(bu)好协调

- solarized:

:-) 暖色调,可以调节背景,有配套的终端配色 / :-(

部(bu)分(fen)颜(yan)色与(yu) highlight 插件配合后比(bi)较刺眼

- desert

- wombat

- vc

- kate

- ……

Vim 资源列表

我的 Vim 配置文件:包括.vimrc/.gvimrc/.vim/myVim,注意前面有“.”的是隐藏文件。配置文件里面已经补上了注释。

更新时间: