看到一不错的代码片断,但奈何无论怎么拷贝,粘贴到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. 学习笔记TF049:TensorFlow 模型存储加载、队列线程、加载数据、自定义操作

    生成检查点文件(chekpoint file),扩展名.ckpt,tf.train.Saver对象调用Saver.save()生成.包含权重和其他程序定义变量,不包含图结构.另一程序使用,需要重新创建 ...

  2. win10 + Debian9.1双系统安装笔记

    今天去163镜像上下载了"linuxmint-18.2-cinnamon-64bit.iso"和win10安装了双系统,感觉比在桌面方面十分不错,下面mark一下自己安装过程中的总 ...

  3. 【Spring 核心】AOP 面向切面编程

    一.什么是面向切面编程? 二.通过切点来选择连接点 三.使用注解创建切面 四.在XML中声明切面 五.注入AspectJ切面

  4. DesignPatternPrinciple(设计模式原则)二

    设计模式六大原则(5):迪米特法则 定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大. 解决方案:尽量降低类与类之 ...

  5. centos下搭建多项目svn服务器

    svn是多人协作开发中的利器,是一个开放源代码的版本控制系统. 相比与git,他的操作更加简单,windows下有优秀的图形界面,并且支持的文件类型比较多. 本文讲述如何在linux下搭建一个svn服 ...

  6. 前后端分离(手)-- 使用mock.js(好样的)

    ## 前言: 本篇博文昨天七夕写的,一天下来被虐得体无完肤,苦逼的单身狗只能学习,对!我爱学习,关掉朋友圈,并写了一篇博文发泄发泄.这次写mock.js的使用,能使前后端分离,分离,分离,重要的是说三 ...

  7. open文件操作之mode模式剖析

    Python可以使用open函数来实现文件的打开,关闭,读写操作: Python3中的open函数定义为: open(file, mode='r', buffering=None, encoding= ...

  8. MySQL(十一)之触发器

    上一篇介绍的是比较简单的视图,其实用起来是相对比较简单的,以后有什么更多的关于视图的用法,到时候在自己补充.接下来让我们一起了解一下触发器的使用! 一.触发器概述 1.1.什么是触发器 触发器(Tri ...

  9. spring事务详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt122 Spring事务机制主要包括声明式事务和编程式事务,此处侧重讲解声明式 ...

  10. Linux-mknod命令(9)

    mknod命令用于创建字符设备文件和块设备文件 (ls /dev -l 结果显示b开头和c开头的,即标识了块设备和字符设备.) 为了管理设备,所以设备中都有两个设备号:  主设备号:为了区分不同类型的 ...