vi/vim使用

//转自http://www.luochunhui.com大罗(Giko)技术空间

文件打开

命令行打开文件:

luochunhui.com$ vim file

在vim中打开另一个文件:

:e foo.c

然后回到打开的上一个文件:

:e #

打开下一个文件使用n.n的用法和q相似。n是关闭当前并打开下一个,q是退出vim。他们也都可以加q或!修饰。:

:n
:wn
:n!

查看在这本次vim中,已经打开了哪些文件了。

:ls
  1 %a   "test.c"                      line 1
  2      "array.c"                      line 0

根据这个结果,可以回到任何一个文件

:e #2

彻底的关闭文件,参数可以是ls看到的ID,或者是文件名:

:bd 2
:bd array.c

光标移动

移到文件尾部,使用两个”[",

]]

移到文件头部,使用两个"]",

[[

移到某一行:

:28

从某一行往下移N行

:28 3  #将定位到31行

移到{,[,(, #ifdef等配对符号的的另一端

%

显示控制

显示换行,tab等不可见字符。 VIM将会把换行显示为$, tag显示为^I.

:se list

显示行号

:se nu

隐藏行号:

:se nonu

输入控制

将tab设置为4个空格的宽度(默认为8)。

:se ts=4

在输入时将tab自动替换为N个空格

:se expandtab

将文件中原有的tab也替换为空格。

:retab

让vim帮你自动格式化缩进,在命令模式下输入(不输入":")

gg=G

查找及替换

查找所有的tab。

/\t

将\t替换为四个空格

:%s/\t/    /g

再狠一点,在全部打开的文件中继续替换:

:bufdo %s/\t/    /g

找单词, 这个语句将会找到int word, 但不会找alongword

/\

再方便一点,定位到下一个单词,他和当前光标所在处的单词相同:

*

变为反向找:

?
n

变为正向找:

/
n

make

调用make:

:make

默认调用的:make操作是make,不带任何参数

修改make, 空格需要使用\ \进行转义。

:set makeprg=make\ \-b

在make失败后,敲任意键后将自动定位到出错的行。
查看make错误,不加参数将显示出错的后5行。 可加上!输出所有错误行:

:clist
:clist!

另外两个, 显示第一行,或最后一行错误。如果加参数,则显示第N行

:cfirst [N]
:clast [N]

定位到下一个编译错误行:

:cn

ctags

生成ctags文件,在命令行执行命令后,将在当前目录生成一个tags文件

luochunhui.com$ ctags -l -i -s -t -v -d -p .

vi中使用本tags文件

:tag ./tags

定位到指定函数,再tn定位到下一个:

:ta /myfunc
:tn

跟踪到光标所在处的函数,类似eclipse中的F3功能

按键: ctrl + ]

返回刚才:

按键: ctrl + t

],t两个操作为堆栈式,不管你进入了多少ctrl+],你都可以通过ctrl+t原路返回。

csope

cscope是比ctags更为强大的源码导航工具,比如,他可以导向到库代码文件

luochunhui.com$ cscope -Rbq

将生成: cscope.out 及几个不用理会的中将文件
在vi中加载:

:cs add ./cscope.out

查找函数定义

:cs f g myfunc

查找函数在何处被调用。找下一条匹配规则与ctags相同:

:cs f c myfunc
:nt

查找函数也可以使用tag语法:

:cstag /myfunc

跟踪头文件:

:cs f f stdio.h

你可以简单的输入:cs查看其所有支持的规则

:cs

貌似cs没有ctrl+]这样的快捷键,是个遗憾。不过可完全可以同时加载ctags和cscope两种导航工具。达到这个需求。

自动完成

在vim的输入状态下,输入前几个字符后,可以按Ctrl + P,或者ctrl + N,打开自动完成的下拉菜单。
比如,

输入print,按ctrl+p,将提示可选择printing, printf, prints函数。

语法高亮

打开/关闭语法高亮

:sy on/off

保存你的设置

一般的显示设置等等,都是只在当前打开的vim中生效的,如果你需要使以后打开的vim都使用一些配置,你可以把他们写入~/.vimrc文件. 比如我的~/.vimrc文件,很多行。。将默认显示行数,默认加载本路径下的cs文件等等都做了自动设置。并将其保存在dropbox中。这样在其他机器上,我随时可以复制这个文件,将vim设置为自己习惯的模式。

:se nu
:cs add ./cscope.out
:se ts=4
:set expandtab

你可能感兴趣的:(eclipse,list,vim,工具,tags,printing)