看到一不错的代码片断,但奈何无论怎么拷贝,粘贴到VS里都是带行号的,300多行的代码手工删除行号与前面的空格可得耗不少时间。。。这时想起了无所不能的VIM,以及它的正则,它的替换功能。解决步骤:

1.将代码贴到VIM

2.替换掉每行首的所有空格及数字

VIM底行模式下

:1,$s/^\s*[0-9]*\s*//g

解释:1为起始行号,315为终止行号,^在正则中代表行首,\s*代表若干个空格,可以没有,[0-9]*代表若干个数字,可以没有,即将^\s*[0-9]*\s*替换为NOTHING。

或者:

:%s/^...//g

1) 在一个新文件中读/etc/passwd中的内容,取出用户名部分

  vi file

  :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd。

  :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。

  :3r /etc/passwd 这是在指定的行号后面读入文件内容。

  另外一种方法删掉文件中所有的空行及以#开始的注释行

  #cat squid.conf.default | grep -v '^$' | grep -v '^#'

  2) 在打开一个文件编辑后才知道登录的用户对该文件没有写权,不能存盘。

  vi file

  :w /tmp/1 既然没法存盘,不想放弃所做的所有修改,先临时存到/tmp/1。

  :20,59w /tmp/1 或者仅仅把第20到59行之间的内容存盘成文件/tmp/1。

  3) 用VI编辑一个文件,但需要删除大段大段的内容。

  vi file

  Ctrl+G 把光标移到需要删除的行的处按ctrl+G显示行号,再到结尾处再按Ctrl+G.

  :23,1045d 假定两次行号为23和1045,则把这几间的内容全删除。 也可以在开始和结束两行中用ma,mb命令标记后用:'a,'bd删除.

  4) 在整个文件或某几行中在行首或行尾加一些字符串

  vi file

  :3,$s/^/some string /

  在文件的第一行至最后一行的行首前插入some string.

  :%s/$/ some string/g 在整个文件每一行的行尾添加 some string.

  :%s/string1/string2/g 在整个文件中替换string1成string2.

  :3,7s/string1/string2/ 仅替换文件中的第三到七行中的string1成string2.

  Note: s为substitute,%表示所有行,g表示global.

  5) 同时编辑两个文件,在两个文件中拷贝剪贴文本

  vi file1 file2

  yy 同时打开两个文件,在文件1的光标所在处拷贝所在行。

  :n 切换到文件2 (n=next)。

  p 在文件2的光标所在处粘贴所拷贝的行。

  :N 切换回文件1。

  6) 替换文件中的路径

  :%s#/usr/bin#/bin#g 把文件中所有路径/usr/bin换成/bin。

利用Vim提供的正则去掉代码每行开头不想要的行号以及vi常见问题和应用技巧的更多相关文章

  1. perl6正则 3: 行开头与结尾与多行开头,多行结尾

    ^ $ 匹配一行的开头或结尾, 可以用 ^ 或 $. > so 'abcde' ~~ /e$/ True > so 'abcdef' ~~ /e$/ False > so 'abcd ...

  2. 转载:如何利用Vim进行Erlang开发

    转自:http://ovalpo.info/how_to_use_vim_for_erlang_dev/ 如何利用Vim进行Erlang开发 by Martin J. Logan on Septemb ...

  3. 【更新WordPress 4.6漏洞利用PoC】PHPMailer曝远程代码执行高危漏洞(CVE-2016-10033)

    [2017.5.4更新] 昨天曝出了两个比较热门的漏洞,一个是CVE-2016-10033,另一个则为CVE-2017-8295.从描述来看,前者是WordPress Core 4.6一个未经授权的R ...

  4. 利用Java提供的Observer接口和Observable类实现观察者模式

    对于观察者模式,其实Java已经为我们提供了已有的接口和类.对于订阅者(Subscribe,观察者)Java为我们提供了一个接口,JDK源码如下: package java.util; public ...

  5. 在vim中 安装php的xdebug和 vdebug插件, 在vim中进行调试php代码

    在vim中 安装php的xdebug和 vdebug插件, 在vim中进行调试php代码 参考: http://www.cnblogs.com/qiantuwuliang/archive/2011/0 ...

  6. git 利用hook 实现服务器自动更新代码

    如何利用git的hook实现提交代码后自动更新? 因为个人开发经常需要提交代码,每次都需要连接服务器去pull代码,重启服务器就显得十分繁琐,因此github提供了一个时间钩子,用户push代码后可以 ...

  7. 利用Python进行异常值分析实例代码

    利用Python进行异常值分析实例代码 异常值是指样本中的个别值,也称为离群点,其数值明显偏离其余的观测值.常用检测方法3σ原则和箱型图.其中,3σ原则只适用服从正态分布的数据.在3σ原则下,异常值被 ...

  8. Python3正则去掉HTML标签

    Python3正则去掉HTML标签 1.引用一段代码 import re html = '<pre class="line mt-10 q-content" accuse=& ...

  9. 逆向进阶,利用 AST 技术还原 JavaScript 混淆代码

    什么是 AST AST(Abstract Syntax Tree),中文抽象语法树,简称语法树(Syntax Tree),是源代码的抽象语法结构的树状表现形式,树上的每个节点都表示源代码中的一种结构. ...

随机推荐

  1. Android studio 使用问题汇总

    使用android studio也有一段时间了,汇总了一下这段时间内遇到一些常见问题 一.字体大小问题 在android studio的使用过程中没有发现类似于Eclipse中的font选项,调节字体 ...

  2. js中callback.call()和callback()的区别

    js中callback.call()和callback()的区别在js中callback.call()和callback() 有什么区别,举个例子:function a(){alert('hello! ...

  3. Django导入外部js、css、图片等巨大的坑

    初学Django,踩过最大的坑只有之一.至今任然不是很明白. 通常我们导入外部js等文件都是 <script src="myScript.js"></script ...

  4. 【SQL*PLUS】常规使用

    登陆SQL*PLUS sqlplus sys/Manager123 as sysdba 创建数据库实例并挂载数据库,此时加载数据库文件,但数据表不能访问. SQL>startup mount; ...

  5. SQL注入-攻入Apple ID钓鱼网站实录

    之前写的一篇利用SQL注入方式攻击钓鱼网站的文章,现在在博客园再分享一下. 下午,朋友发了一条朋友圈,内容大概这样: 大体就是她的iPhone丢了,收到了钓鱼短信,多么熟悉的套路,如下: 还好她比较机 ...

  6. ​'JAVAC' 不是内部或外部命令的解决方法

    ​'JAVAC' 不是内部或外部命令解决方法.. 在cmd里边输入javac就会提示”'JAVAC' 不是内部或外部命令,也不是可运行的程序 或批处理文件..此时原因分析: 一.确定是否安装了jdk ...

  7. PyQt5实现透明电子时钟

    # -*- coding: utf-8 -*- import sys from PyQt5 import QtCore from PyQt5 import QtGui from PyQt5 impor ...

  8. HK2框架的简单自实现kunJ

    kunJ kunJ框架,是基于HK2框架的一个自实现注入框架,功能比较简单,重在探索依赖注入的实现原理. 实现细节 自定义3个注解,Access,Inject,Service 在Service中实现对 ...

  9. Windows下Docker承载ASP.NET Core 应用

    基本配置: Win7 64系统,Docker Toolbox, 主要步骤: [1]发布ASP.NET Core MVC应用,CD到项目根目录,执行dontnet publish [2]新建一个Dock ...

  10. .NET技术基础总结 ----第一章

    . 一..NET定义 很多人常说我是做.NET开发的,但是,NET到底是什么呢?是一个开发工具?还是一个平台?或者是一个软件环境? 其实,我觉得吧,他是一种概念.一种构想吧.微软的产品发布会上,主持人 ...