归纳常用的Vi/Vim 文本编辑技巧,便于以后查阅。

一、把空格替换为换行

  :% s/ /\r/g

二、把空行删除

  :g/^$/d

三、vim以16进制打开和编辑文件

  先用vim以二进制格式打开需要编辑或查看的文件,不采用-b参数有时会导致转换错误。

    vim -b file-to-open.dat

  然后用xxd把文件转换成十六进制格式

    :%!xxd

  修改完成使用xxd把十六进制转换回二进制

    :%!xxd -r

四、vim删除一列

  光标放在列起始位置,然后CTRL+V, 移动光标到该列的末尾,按X键。删除多列时,向左/向右移动光标。

五、vim增加一列

  (1) 定位光标;(2) CTRL+V;(3) j (nj 多行) ;(4) shift+I;(5) 输入文本;(6) ESC;

六、在两个文档间复制

  (1)vi file_1 file_2      (2):sp 进入文档切换模式

(3):e file_x   打开多个文件         (4)CTRL+w 在 多个 文件 间切换

(5)在 file_1中 定位 光标,CTRL+v ,选择要复制的 内容,yy 复制           (6)在file_2中 选择同样 大小区域的内容,p 粘贴

  (7)保存

七、多行复制、多行粘贴和多行删除

在命令模式下,将光标移动到将要复制的首行处,按“nyy”复制n行;其中n为1、2、3……

在命令模式下,将光标移动到将要粘贴的行处,按“p”进行粘贴

在命令模式下,将光标移动到将要删除的行处,按“ndd”删除n行;其中n为1、2、3……

八、窗口分屏

先打开一个文件:vi file1

在打开的界面中,在命令模式下,输入:vsp file2, 即可实现双文件打开,如果再打开一个文件,同样输入:vsp file3

在不同文件之间切换:ctrl + w w

九、文件比较

1. 使用vim的比较模式打开两个文件:
             vim -d file1 file2
             或
             vimdiff file1 file2

2. 如果已经打开了文件file1,再打开另一个文件file2进行比较:

:vert diffsplit file2
             如果没有用vert命令,diffsplit则会分上下两个窗口。

十、编辑窗口关闭而文件未保存

当使用vi或vim打开文件时,为了防止意外,比如用vi开启文件后,没有退出,又在另一个终端里再次用vi或vim打开同一个文件;或者没有退出vi编辑器就直接shutdown关机或init 0关机了。

就会产生一个以.swp为后缀的文件。如果这些意外没有发生,这个.swp文件将被删除。可用vi -r 文件名的方式恢复文件。然后用rm删除以.swp为后缀的文件

十一、如何在vim中插入一列递增数字

先在要插入这样递增数列的地方插入一个全文不会重复出现的字母序列,比如我插入的是ZCC,然后输入命令
      :let i=0 | g/zcc/s//\=i/ | let i=i+1

十二、如何在固定pattern 后面增加新的 字符

例如 要在 所有 rand_gen_out_* 后面 加上 [8:0]

assign all_same = ((rand_gen_out_11==rand_gen_out_10)&&(rand_gen_out_10==rand_gen_out_9)&&(rand_gen_out_9==rand_gen_out_8)&&(rand_gen_out_8==rand_gen_out_7)&&
                          (rand_gen_out_7 ==rand_gen_out_6)&&(rand_gen_out_6 ==rand_gen_out_5)&&(rand_gen_out_5 ==rand_gen_out_4));

先选中要替换的字符所在行,然后使用命令:

:'<,'>s/\(rand_gen_out_[0-9]*\)/\1[8:0]/g

十三、撤销和反撤销

普通模式下  u 撤销 ctrl + r 反撤销

十四、统计查找字符串的数量

比如我有一个log文件,我文件里符合规则的字符是yes,我想查找这个abc.log文件中的yes字符数量,怎么查找呢,如下:

     :%s/yes//gn

十五、将文件里面的所有十进制数转成十六进制数

:%s/\d\+/\=printf("0x%x", submatch(0))

十六、将 一行数据(数据间有空格) 转成 一列数据

(1) :%s # #\r#g

(2)sed 's/[ ][ ]*/\n/g

(3):%s #\s\+#r\r#g

十七、在固定字符后 插入 空格

:%s#\(\a\)\@<=#\=repeat(' ',5)#g

vi 常用 文本编辑 技巧的更多相关文章

  1. SHELL脚本编程的常识和VI常用技巧

    来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc3751808 ...

  2. vim(vi)常用操作及记忆方法

    vi(vim)可以说是linux中用得最多的工具了,不管你配置服务也好,写脚本也好,总会用到它.但是,vim作为一个“纯字符”模式下的工具,它的操作和WINDOWS中的文本编辑工具相比多少有些复杂.这 ...

  3. vi常用操作命令

    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...

  4. (转)vim(vi)常用操作及记忆方法

    vim(vi)常用操作及记忆方法 原文:https://www.cnblogs.com/doseoer/p/6241443.html vi(vim)可以说是linux中用得最多的工具了,不管你配置服务 ...

  5. vim常用操作技巧与配置

    vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两部分对其常用操作技巧和配置进行阐述,其中参考了网上的一些文章,对作者表示感谢 PART1 操作技巧 说明: 以下的例子中  ...

  6. Linux入门学习笔记1:VI常用命令

    常用命令 yy 复制 p 黏贴 shift+v 多行选中 shift+ctrl+< 左移 shift+ctrl+> 右移 ndd 删除光标所在行及其后n-1行 i 进入编辑状态 esc 退 ...

  7. centos的vi常用用法

    centos的vi常用用法 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的 ...

  8. vi 常用命令行

    vi 常用命令行 1.vi 模式  a) 一般模式: vi 处理文件时,一进入该文件,就是一般模式了.  b) 编辑模式:在一般模式下可以进行删除,复制,粘贴等操作,却无法进行编辑操作.等按下‘i,I ...

  9. java与.net比较学习系列(1) 开发环境和常用调试技巧

    最近因为公司项目要由.net平台转到java平台的原因,之前一直用.net的我不得不开始学习java了,刚开始听到说要转java的时候很抗拒,因为我想专注在.net平台上,不过这样也并不完全是坏事,通 ...

随机推荐

  1. VersionControl:git

    关于VersionControl VersionControl即版本控制,版本控制是一种记录文件或文件集随时间变化的系统,以便以后可以查阅调用特定版本,版本控制系统不仅可以应用于软件源代码的文本文件, ...

  2. 网络编程—网络基础概览、socket,TCP/UDP协议

    网络基础概览 socket概览 socket模块—TCP/UDP的实现 TCP/UDP总结 网络基础概览 osi七层协议各层主要的协议 # 物理层传输电信号1010101010 # 数据链路层,以太网 ...

  3. 第一章01:熟悉java,发展历史

    1. java由来: 原公司,sun,后来被oracle\甲骨文公司收购 java,主要用于开发互联网软件,例如:QQ.迅雷.淘宝.京东

  4. LeetCode 46 全排列

    题目: 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3 ...

  5. video自动填充满父级元素

    想要video能自动填充慢父div的大小,只要给video标签加上style="width= 100%; height=100%; object-fit: fill"即可. obj ...

  6. 群等变网络的pytorch实现

    CNN对于旋转不具有等变性,对于平移有等变性,data augmentation的提出就是为了解决这个问题,但是data augmentation需要很大的模型容量,更多的迭代次数才能够在训练数据集合 ...

  7. 【ShareCode】不错的技术文章 -- 如何使用异或(XOR)运算找到数组中缺失的数?

    如何使用异或(XOR)运算找到数组中缺失的数? 今天给大家分享一篇关于使用XOR(异或)运算找到数组中缺失的数的问题. 在一次Javascript面试中,有这么一个问题: 假设有一个由0到99(包含9 ...

  8. 图像特征匹配,sift,surf法

    今天想把这一段时间做的一些工作做个总结,望能帮到大家,尊重原创作品,转摘请注明原创地址:http://www.cnblogs.com/ggYYa/p/7902900.html,在此感谢!

  9. SQL-触发器-011

    什么事触发器? 触发器是一种特殊的存储过程,当表中的数据发生改变时触发器自动生效: 触发器无法通过名称调用,也不允许设置参数. 触发器的类型: DML触发器(数据操作语言触发器-insert/upda ...

  10. [c#]_ELVE_Message多功能用法

     1.   当要显示如图3个按钮时,并要获得单击不同按钮的进行不同的相应时,可以在MessageBoxButtons后面添加一个.(应该英文的点,此处为了醒目,用中文代替)可以看到提示框下方需要几个按 ...