vim调试PHP工具vdebug的使用

vdebug是一款vim下的代码调试工具,支持多种语言如PHP, Python, Perl, Ruby

如果你是使用Vundle管理vim插件,安装vdebug非常简单,只需要在vim添加一行配置

Plugin ‘vim-vdebug/vdebug’

然后在vim中输入命令:PluginInstall自动安装,成功后就可以调试了。

调试命令:

F10  添加/删除断点

F5开始调试

F2 逐行调试

F4 跳到断点

F6 结束调试

详细文档请访问

https://github.com/vim-vdebug/vdebug

如果是PHP,调试前需要安装PHP的调试扩展Xdebug

 

Vimsplain一款用来解释vim命令的工具

通过vimgolf可以练习vim操作,vimgolf网站给出了一系列文本操作的练习实例,同时列出了用户的操作步骤,

这个步骤是一长串vim命令,对于初学者来说往往看的眼花缭乱一头雾水,

比如:

pafcu的开源的这款Vimsplain正是为解决这个问题的,

通过它可以拆分并解释上面的命令:


安装和使用非常简单

代码仓库 git@github.com:pafcu/Vimsplain.git

使用

commands 为vim命令序列

vimgolf一个练习vim操作的高尔夫球场

www.vimgolf.com 提供了一个练习vim的场所,通过安装vimgolf,拉取练习实例,将原始文件编辑为目标文件,然后上传发布自己的操作步骤,同时,也可以借鉴其他人的操作。在这里,vim高手如云,各种奇葩技巧一定会让你大开眼界。

使用vimgolf需要先安装Ruby和Gem,然后得有twitter账号,用来登陆vimgolf,否则没有办法获取key。

然后执行下面的命令,[challenge ID]是网站首页列出得训练编号,随便选择一个训练项目,在页面右侧就可以看到challenge ID

以下是challenge ID为56fb2e75ccffcc0009026473的练习过程:

vim编辑器宏的使用

如果把vim编辑器的各种操作比喻为武侠小说中的功夫,那么可以称得上是葵花宝典,两者最大的特点都是,通过宏可以将一组操作指令以自动化的方式重复执行指定的次数,从而提高编辑效率。如果能够合理利用,这种批处理的方式在实际的编码过程中非常有用。

下面介绍宏的基本使用方法:

0)  定义宏

命令格式    q<letter><commands>q

q    标明开始录制宏;

<letter>输入一个a到z的字母,设置将宏存储在哪个暂存器;

<commands>输入要执行的操作;

q   标明 结束录制宏;

举例:qa0gUwjjq    定义个一个名称为a的宏,它的指令集是0gUwjj,这个操作会使隔行的字母全部转换为大写字母。

vim宏定义

1) 查看宏

命令格式    :reg <letter>

举例:要查看刚才定义的宏a,输入:reg a就可以查看宏a的命令序列。

查看定义的宏
查看定义的宏

2)执行宏

命令格式    <number>@<letter>

<number> 调用宏的次数;

@ 开始执行宏;

<letter> 要执行的宏名称;

举例:在命令模式下直接输入 5@a 将刚才录制的宏a重复执行5次。

调用已经定义的宏
调用已经定义的宏

3)保存宏

宏默认会临时保存到.viminfo文件,此文件一般位于目录~【家目录】如果指定的暂存器内容未被覆盖,即便退出vim, 下次打开也依然可以调用。

如果想永久保存录制的宏,可以将宏的定义添加到~/.vimrc配置文件中。

例如将刚才录制的宏永久保存,编辑.vimrc文件,添加下面的行

let @a=’0gUwjj’

这样任何时候使用@a就可以调用宏了。( 编辑模式下依次按键Ctrl-R Ctrl-R a可以快速输入暂存器里面的内容)

vim宏保存

4)编辑宏

如果录制的宏需要做一些临时修改, 在当前文件中,输入

:let @a=’

再依次按键 Ctrl-R Ctrl-R a自动补全宏指令集

:let @a=’0gUwjj

做出对应的修改,然后补全最后面的单引号即可

:let @a=’03xgUwjj’

这样之前的宏就修改为,先删除行首3个字符,在转化大小写

调用宏依然使用@a命令

此时可以输入:reg a 发现宏的内容已经被修改了

5)宏应用简单示例

宏实现了编辑操作的模式接口,只要自己能抽象出操作的共同指令集,就可以实现快捷强大的编辑操作,从而提高工作效率。

a) 给多个行末尾添加分号

let @a=’0A;^[j0′

b) 多行注释代码

let @a=’0i#^[j’

c) 删除不规则长度的字符串

let @a=’0t)hdi’j0′