something: 重构、正则、vim -- clwu
项目需要做一个db table 操作的小工具。
从phpMyAdmin上拷贝了一些代码过来修改,但我有没有足够的时间把所有拷贝过来的代码都重构修改和测试完,于是希望后面接手的同事在需要修改这些代码时能感知得到,
就希望在每个函数上添加一个throw 抛出一个异常。
方法:用到vim的搜索、替换。
搜索用到如下正则,定位到要修改的函数。
/\(^\s*\(\(public\|private\|protected\).*\)\?\<function \([^{]*\n*\)*{\s*\n\)\(\(\s*\n\)*\(\s*\)\)
替换
:%s//\1\7throw new Exception("clwu@2016-06-21 还没有重构到这块代码,不保证其能正常工作");\r\r\5
----------------- ps -----------------
大多数IDE也都有一个【重构】的菜单,做类似的事情,但更高级一点功能就只能用vim、sed 之类的工具了,如找出所有的文件把Mongo重命名为MongoDb(IDE也可以做到,这里只是举例说明一下sed)
find . -type f -name "*.php" -exec grep -l --color -Hn -w Mongo {} \; | xargs sed -i -e 's/Mongo/MongoDb/g'
something: 重构、正则、vim -- clwu的更多相关文章
- 程序员的编辑器——VIM
from:http://blog.chinaunix.net/uid-11278770-id-148579.html Chinaunix首页 | 论坛 | 认证专区 | 博客 登录 | 注册 ...
- 学习使用Vim(二)——User Manuals, Getting Started
Vim的用户手册主要包含以下三个部分: Getting Started; Editing Effectively; Tuning Vim; 分别代表基本编辑技巧,更优化 ...
- vim 正则替换
http://www.cppblog.com/kefeng/archive/2010/10/20/130574.html Vim中的正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操作. ...
- 利用Vim提供的正则去掉代码每行开头不想要的行号以及vi常见问题和应用技巧
看到一不错的代码片断,但奈何无论怎么拷贝,粘贴到VS里都是带行号的,300多行的代码手工删除行号与前面的空格可得耗不少时间...这时想起了无所不能的VIM,以及它的正则,它的替换功能.解决步骤: 1. ...
- vim 正则替换功能
最近使用vim的正则替换功能,非常强大 一个文件: ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, 现在需要删除逗号前面的内容,那么在vim敲入命令: :%s/.*,//g 得到的结果是: ...
- Vim中如何使用正则进行搜索
#set magic这句的作用在于将vim的正则打开. 这样就可以搜索了. 至于正则的相关的内容.在此抄一份.以免于下次自己还要去百度. 符号 匹配 . (dot) 任意单一字符 \d 任意一位数字 ...
- VIM 正则表达式详解及与 perl 正则的区别
转载自:http://www.xuebuyuan.com/806332.html:个人进行了一些修正和添加. 下面我们对 VIM 正则表达式进行介绍并会显示指出其与 Perl 正则的不同之处. 字符集 ...
- VIM 用正则表达式,非贪婪匹配,匹配竖杠,竖线, 匹配中文,中文正则,倒数第二列, 匹配任意一个字符 :
VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下: ...
- vim 正则非贪婪模式
比如多匹配使用 .* 效果自然是贪婪模式,JS 的非贪婪很简单,是 .*? 即可,而 vim 不同,语法是 .\{-},注意 \ 转义.
随机推荐
- [HDOJ2512]一卡通大冒险(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512 给一个数n,问1~n这n个数内的划分.设dp(i,j)为i划分为j个集合时有多少个. 初始化条件 ...
- NET垃圾回收机制【Copy By Internet】
尽管在.NET framework下我们并不需要担心内存管理和垃圾回收(Garbage Collection),但是我们还是应该了解它们,以优化我们的应用程序.同时,还需要具备一些基础的内存管理工作机 ...
- js之客户端检测
1 能力检测判断是否有某个属性或方法,例:在低版本中的opera浏览器中,window下有个opera属性 if (window.opera) { alert("opera"); ...
- Codeforces 505 A Mr. Kitayuta's Gift【暴力】
题意:给出一个字符串,可以向该字符串的任意位置插入一个字母使其变成回文串 因为字符串的长度小于10,枚举插入的字母,和要插入的位置,再判断是否已经满足回文串 #include<iostream& ...
- 事件对象event和计时器
事件对象:event 属性: srcElement事件源对象 keyCode 键盘按键Ascii码 window方法: 定时器: 1)setTimeout();//n毫秒后执行一次 2)setInte ...
- Java 直线、多段线画板 PaintJFrame (整理)
package demo; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; impor ...
- (六) 语言模型 Language Madel 与 word2vec
语言模型简介(Language Model) 简单的说,语言模型 (Language Model) 是用来计算一个句子出现概率的模型,假设句子 ,其中 代表句子中的第 个词语,则语句 W 以该顺 ...
- 查询mysql数据库表的信息(表大小、数据大小、索引大小)
select * from information_schema.TABLES where information_schema.TABLES.TABLE_SCHEMA='databasename' ...
- 【解题报告】POJ-1108 Split Windows
原题地址:http://poj.org/problem?id=1108 ============================== 题目大意: 一棵树表示一个窗口,它的叶子节点都是大写字母,非叶子节 ...
- ubuntu切换root
sudo passwd root这个命令是给root用户设定密码.然后su root切换到root用户.