建立了公司门户网站,做类似淘宝的网站开发需要什么,单位网站建设的优势,2018十大网络营销案例在用vim编辑处理文件时#xff0c;会有重复行。有的是情境需要#xff0c;有的可能是误操作而形成。对于正常形成的重复行#xff0c;我们不作讨论#xff0c;我们仅讨论什么情况下会出现重复行#xff0c;如何避免#xff0c;如何处理。
在文件中的单行或多个连续空白行…在用vim编辑处理文件时会有重复行。有的是情境需要有的可能是误操作而形成。对于正常形成的重复行我们不作讨论我们仅讨论什么情况下会出现重复行如何避免如何处理。
在文件中的单行或多个连续空白行我们不作处理。这可能是格式需要。
一、出现重复行
1.现象
很多新手容易出现的现象:编辑vim后出现很多重复行
2.原因
原因也很简单vim具有数字命令的多次重复执行命令的功能也就是说允许数字命令的语法格式表示重复执行命令其重复次数就是命令前的数字。
如在命令模式下5yy从光标所在行开始且包括当前行共复制5行3dd从光标所在行开始(含当前行)共删除3行7p:在光标所在行后粘贴7次前面复制的内容。
新手是如何操作才造成的重复行呢
新手操作vim最容易犯的错误就是用vim打开文件就开始录入内容。不显示内容时就用鼠标点点点。
当录入某些数字后发现没有模式切换就又按了i/I,或按了a/A。在编辑模式下录入一些内容后,按Esc键返回命令模式。这时就会出现重复的多行内容就是前面录入的内容。
3.案例
我们对此过程进行模拟操作重现此类现象。
a.打开文件
我们先准备一个文本文件test.txt: b.录入数字
用vim test.txt打开文件在命令模式下直接录入数字123可以是小键盘录入也可以是主键盘上的123不影响后续结果。
c.切换模式
再按i键进入编辑模式
d.录入内容
移动光标在abcde行下录入ABCD按回车 e.退出
按Esc退出编辑模式vim的文本内容将出现如下效果 文件中的其他部分内容不变录入的内容本来希望一行“ABCD”,现在出现很多行123行。
二、避免重复行
1.知道原因
了解vim模式的使用在不同模式下操作不同的命令或内容。
如果因操作不当产生了重复行可以返回到命令模式下按u取消原来的操作。
2.操作注意
不在命令模式下录入数字或录入数字后及时按Esc取消刚才的操作。
如确实需要部分内容重复可以按此方法产生需要的重复行。
三、删除重复行
删除重复行的操作十分普遍。
如果找不到产生重复行的原因或拷贝内容时产生了多余的重复行将如何删除重复行呢
vim删除重复行方法很多原理基本相同先排序再应用正则表达式查找相同行并删除特定条件下不排序直接去除重复行。
在后续的讨论中我们需要一些重复行将按前述介绍操作产生重复行。
1.sort u
sort命令应用比较多具有排序功能。u是uniq去除重复命令的简写。 : sort u 命令执行后效果 此命令也可以再简化为sor[t] u,执行时可以不写t。
2.%uniq
在前面删除重复行操作后可以在命令模式下按u返回到有重复行状态。 录入命令 : %uniq 效果如前去除了重复行仅保留一行内容。 3.w !uniq %
再次按下u返回到有重复行状态。
执行命令底行模式下 : w !uniq % 执行命令后有两项选择如下 选择 O确认后仍需按确认键继续。 返回原来状态。
选择 L确认后仍需按确认键继续最终是删除重复行 4. sor ur /^/
再次按下u返回到有重复行状态。
执行命令底行模式下 : sor ur /^/
效果与前面基本一致。最大的不同是在去除重复行的同时不打乱原来文件内容。 在前面的命令中不加/^/时也可以排序、去重。但加上/^/将仅去重不进行打乱文件内容而排序。
如把命令修改为sor u /^/,结果也将是排序、去重。 5.g/^\(.\\)$\n\1/d
再次按下u返回到有重复行状态。
执行命令底行模式下 : g/^\(.\\)$\n\1/d
命令解释
在命令g/^\(.\\)$\n\1/d中 g全局 ^行首 .\此处有1到多个任意字符 \(\)用括号包起来形成第一个分组 $行尾 \n换行 \1反向引用第一个分组 /d删除 本案例中没有执行排序命令直接执行去重命令 下面使用替换来删除所有重复行仅保留第一行同时删除后面的重复行。这是该g//d方法的一种变体。 : %s/^\(.*\)\(\n\1\)\$/\1/ 去除重复行仅保留一行 : %s/\v^(.*)(\n\1)$/\1/ 去除重复行仅保留一行 : %s/\(.\\)$\n\1/\1/g 不能一次去除重复行可以多次执行最后只保留一行。 另外还有一些别的命令也可以试一试 :g/\%(^\1$\n\)\\(.*\)$/d //功能同上也是去除重复行 :g/\%(^\1\.*$\n\)\\(\k\\).*$/d //功能同上也是去除重复行