the use of ctag in vim

vim-ctag的使用

clip_image002

ctags

clip_image003

首先需要安装ctags,可以使用apt-getyum或者源码安装。

Ctags是一个用于从程序源代码树产生索引文件(或tag文件),从而便于文本编辑器来实现快速定位的实用工具。在产生的tag文件中,每一个tag的入口指向了一个编程语言的对象。这个对象可以是变量定义、函数、类或其他的物件。

Ctags是开放源代码的程序。支持下列的编程语言:汇编,AWK, ASP, BETA, Bourne/Korn/Zsh Shell, C, C++, COBOL, Eiffel, Fortran, Java, Lisp, Lua, Make, Pascal, Perl, PHP, Python, REXX, Ruby, S-Lang, Scheme, Tcl, Vim, and YACC

支持Ctags产生的tag文件的编辑器以及编辑器插件包括:VimVileLemmy,等等。

步骤

进入需要创建索引文件的文件夹,执行ctags *.c即可将所有的c源文件创建索引文件tags

       可以通过cat tags来查看一下tags的内容。

      

导航到function的方法:

l  可以使用:ta function直接跳转到function

l  当光标为function上时,使用CTRL+]也可以直接跳转到function

 

返回原来的使用它CTRL+T即可。

 

Ta跳转也支持正则表达式,比如:ta /^get就会搜索以get开始的函数。

 

Ctagsvim命令及描述

:ts

显示tag list

:tn

跳到list中的下一个

:tp

跳到list中的上一个

:tf

跳到list中的第一个

:tl

跳到list中的最后一个

clip_image005

 

 

 

也可以通过taglis插件实现如下效果,直接媲美IDE,哈哈。

具体参考:http://guoshaoguang.com/blog/2011/11/09/%e7%8e%a9%e8%bd%acvim%e4%b9%8bubuntu%e4%b8%8b%e5%88%9b%e5%bb%bavimtaglistcscopectags%e7%bb%84%e5%90%88%e7%bc%96%e8%be%91%e5%99%a8/

clip_image007

vim–additional features

vim-额外特性

重复命令

clip_image002

l  @@:重复上一个执行宏;

l  n以相同的方向重复上一个搜索命令;

l  N:以相反的方向重复上一个搜索命令;

l  . :重复上一个编辑命令;

l  @:重复上一个命令行

撤销和重做

clip_image003

l  u:可以撤销上次的操作;

l  Nu:可以撤销前N次的操作;

l  U:撤销当前行的所有修改;

l  :red或者CTRL+R:可以撤销还原;

打开光标下的文件

clip_image004

l  gf :在光标位于一个文件名上时,如果该文件就在当前目录,就可以打开该文件,但是会覆盖原来的文件;

l  CTRL+W f:可以打开一个新的窗口;

l  CTRL+W gf:可以打开一个新的窗口,此时会以tab的方式打开;

 

当然,就算没有绝对路径,vim也可以打开一些文件,比如c头文件和perl模块。

打开多个文件

使用vim file1 file2 file3….可以打开多个文件,但是同一时刻只能显示一个文件。

在一个session中,还可以使用:e anotherFile打开另一个文件。

在多个文件中,可以使用CTRL+^来切换,或者使用:next :previous来切换。

文件加密

Hacking for password

vim中使用:X然后输入密码就可是设置每次打开文件都要输入设置的密码,同时可以使用:set key=来取消密码。

保存会话

clip_image006

如果在编辑当前文件的时候,想编辑另外一个文件,可以使用:mksession来保存当前对话,等回来的时候,重新使用vim –S Session.vim即可打开原来保存的会话,这个会话会保存buffer、窗口大小、自定义选项、文件夹、当前目录等。

vim中执行shell命令

使用方式为:!cmd即可。

比如在修改源码的时候,我比较喜欢使用:!date这样就可以快速注释修改的时间了。

记录和使用宏

记录和使用宏

该技巧使用一个例子来解释在Vim中如何执行记录和使用宏。

前面几步用于在vim中记录和使用宏。

n  第一步:键入q开始记录宏,后面跟小写字符是宏的名称。

n  第二步:在Vim编辑器中执行任何类型的编辑操作,它们将会被记录。

n  第三步:按下q停止记录宏。

n  第四步:通过按下@后面跟宏名称来使用记录的宏。

n  第五步:为了多次重复宏,按下:NN@宏名,NN为重复次数。

       这个例子说明如何执行相同的记录,使用不同的输入。例如:使用不同的参数来执行相同的命令。

       1 打开change-password.sql,它只有一些名称。

$ vim change-password.sql

Annette

Warren

Anthony

Preston

Kelly

Taylor

Stiller

Dennis

Schwartz

2 开始记录和保存它在寄存器a

qa

l   q表示开始记录宏;

l   a表示存储记录到寄存器a

当你输入qa时,它会在屏幕的底部显示消息“recording”。

3 进入插入模式并且输入ALTER USER

I “ALTER USER ”

放置光标在第一行的任意位置,然后按下I(大写的i),它会进入到这一行的第一个字符处,输入ALTER<space>USER<space>

4 拷贝下一个词(例如,名称)

<ESC>w yw

l  按下<ESC>,然后按下w到相爱一个词(名称)

l   yw,拷贝当前的词(名称)

5 移动到结束并且输入IDENTIFIED BY

<ESC> A “ INDENTIFIED BY `”

l   按下ESCA移动光标到行的结尾,然后输入空格

l   输入IDENTIFIED BY ‘

6 粘贴拷贝的名称

<ESC> p

按下ESC,然后输入p粘贴名称,它是在第四步中拷贝的。

7 在结尾完成引号

<ESC> A’

按下ESC,然后输入A移动到行尾,输入

8 跳转到下一行并且停止宏记录

<ESC> j q

l   j 移动到下一行

l   q 停止记录宏

注意:显示在屏幕底部的记录消息现在消失,在这个阶段,文件change-password.sql将如下所示:

9 在相关的行上使用参数重复  

8@a

l   现在通过输入8@a重复这8步操作;

l   @a重复宏a一次

l   8@a重复宏a  8次,自动完成剩下的行。

Light weight editors in Linux especially in Ubuntu

Linux系统下(主要是Ubuntu)的轻量级编辑器。

1. gedit

gedit无需多言,Linux各个发行版默认都有的编辑器,类似于Windows的记事本,不过可以根据代码类型着色,这点可比记事本牛逼多了,不过我一直没有搜索到如何配置gedit才能让他显示行号和改变tab4个空格,所以不是迫不得已不会用gedit编辑正式文件。

clip_image002

2. Vim

Vim的强大就不用多说了,非常熟练Vim的话所有的工作都可以使用Vim去完成,不过个人感觉Vim在编辑html模板的时候不是最合适的。

下载/安装:apt-get install vim

clip_image004

3. Komode Edit

老实说相对于本文中其他几个编辑器Komode Edit绝对算不上轻量级,其在Linux下的源码包就有50Mb+,不过大概半年前在给办公机上安装了这个编辑器之后就一直在用这个编辑器,在Windows下用惯了EditPlusNotepad++这些编辑器的应该会非常习惯Komode Edit,风格类似于Zend Studio,不过不像Zend Studio那么庞大,并且比较适合PHPPythonJavaScript等多种语言。

Komode Edit也是一个跨平台的编辑器,官方有Win/Mac/Linux版本的下载,此外,Komode IDE算是Komode Edit的升级版,需要付费的大型IDE,也可以选来一试。

下载/安装:http://www.activestate.com/komodo-edit

clip_image006

4. UltraEdit

UltraEdit是这里面两个商业编辑器之一,不过付费的毕竟是付费,并且UltraEdit发展时间比较长了,用户数量也比较多,所以UltraEdit基本上类似于一个标准的IDE了,如果不是付费的,我肯定就会用UltraEdit而不是Komodo Edit了。

下载/安装:http://www.ultraedit.com/downloads/uex.html

clip_image008

5. Geany

Geany同样也是一个类似Komode Edit的编辑器,同样适用于PHPCC++PythonRuby等多种语言,并且Geany的体积和消耗相比会更小,会更稳定。目前我在一个开发虚拟机里面使用,感觉不错。

下载/安装:Ubuntu软件中心中搜索Geany安装或者使用sudo apt-get install geany安装。

clip_image009

6. Bluefish

Bluefish同样来自于Ubuntu软件中心,不过他的功能相对较少,只适合一般的网页编辑。

下载/安装:Ubuntu软件中心中搜索Geany安装。

clip_image011

7. Sublime Text

最后一个神器就是Sublime Text 2,一个基本上可以称得上是IDE的编辑器,最先看到是在前公司的前端工程师的Mac上,看官方的介绍感觉又是一款类似于Vim的神器,但是比Vim界面更好看,功能更全面,非常适合PHPPythonJavaScript这些Web开发。

下载/安装:http://www.sublimetext.com

clip_image013

 

a few good editors for programming

比较好的几个编辑器

         先说一下,偶最爱的始终是VIM

包括了Notepad++EmacsUltraEditTextMateVim TextPad,有点标题党的感觉,什么最好的,准确定义应该 LifeHacker 的读者们使用最多的文本编辑器吧,况且,用户的习惯、职业、兴趣都大不相同,所以各有所爱了。俺还是喜欢 Notepad,大不了 Word 呗。BTW,有些是要$的,至于怎么免费,嘿嘿,自己想办法咯。

Notepad++(Windows)

clip_image002

Notepad++ 是很多Windows用户寻找的比记事本更优秀的文本编辑器。它拥有很多丰富先进的特性,例如语法高亮显示,代码折叠和宏,但不同于大多数其他的基于GUI的文本编辑器功能,Notepad++是完全自由而且开放源代码。它和其他的编辑器相比可能并非性感如起飞的蝙蝠。但它完全定制,因此只受限于您的时间和想象力。作为一个编辑器,它的强大是不言而喻的。



Emacs (适合所有平台)

clip_image004

高级程序员的主要文本编辑器。在Emacs(编辑宏)最受欢迎的是内置宏和清大的键盘命令,使编辑的文本文件,尤其是代码很好高兴。常说:您可能不会完全明白Emacs的,直到您话一些时间去了解它。该程序已经被移植到几乎所有的平台,并有多个发行版,其中最流行的可能是GNU EmacsXEmacs,它们都是免费、跨平台和开放源码。

UltraEdit (Windows)

clip_image005

共享软件UltraEdit$49.95)用户感觉很友好的编辑器,只吃语法高亮显示,代码折叠宏和和同类软件相比拥有大量的可用功能。UltraEdit是一个很好的WEB开发平台,提供很多高级特性用来构建HTML,PHPJavaScript和更多其它的网络编程语言。

TextMate (Mac OS X)

clip_image006

强大而且更具吸引力,TextMate ($63)出现在视野中仅仅几年时间而且因有吸引力的界面、功能强大的宏、以及可下载和可编辑的束,迅速的获得了狂热的追捧。Windows用户要是喜欢TextMate可以试一下E Text Editor(一个类似于TextMate且支持TextMate宏束的文本编辑器)。

Vim(所有平台)

clip_image007

类似于EmacsVim(一个六岁的孩童),是因为它的键盘宏而广受欢迎,是高级程序员的一个强大工具。也类似于EmacsVim也有不同的口味,除了原来的,还有Windows平台的gVim gVim PortableMac平台的MacVim,如果你认为你可能的兴趣在Vim中已经提供,但尚未准备好一步一步深入这款功能强大而又有点不易用的编辑器,

Pspadwindows

clip_image008

PSPad功能非常强大,UltraEditEditplusEmEditor能做的(比如多文件编辑、支持工程、语法高亮、HEX编辑,内置FTP功能),PSPad也能做到,甚至做得更好!PSPad里集成了许多非常实用的工具

EditPlus

clip_image009

EditPlus(文字编辑器)汉化版一套功能强大,可取代记事本的文字编辑器,EditPlus拥有无限制的撤消与重做、英文拼字检查、自动换行、列数标记、搜寻取代、同时编辑多文件、全屏幕浏览功能。而它还有一个好用的功能,就是它有监视剪贴板的功能,能够同步于剪贴板自动将文字粘贴进 EditPlus 的编辑窗口中,让你省去粘贴的步骤。另外它也是一个非常好

  工作界面

用的HTML编辑器,它除了支持颜色标记、HTML 标记,同时支持CC++PerlJava,另外,它还内建完整的HTML & CSS1 指令功能,对于习惯用记事本编辑网页的朋友,它可帮你节省一半以上的网页制作时间,若你有安装IE3.0 以上版本,它还会结合IE浏览器于 EditPlus 窗口中,让你可以直接预览编辑好的网页(若没安装IE,也可指定浏览器路径)。因此,它是一个相当棒又多用途多状态的编辑软件。