免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2077 | 回复: 7
打印 上一主题 下一主题

问一个vim命令的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-22 14:21 |只看该作者 |倒序浏览
删除每列前2个字符,在命令行用这个指令可以实现,它的含义是什么啊:
=========================================
g/../s///

=========================================

论坛徽章:
0
2 [报告]
发表于 2010-11-22 14:41 |只看该作者
g/../ 一个全局命令,查找那些至少有两个字符的行。
s///   替换

论坛徽章:
0
3 [报告]
发表于 2010-11-22 14:58 |只看该作者
谢谢楼上,

但是没有指出2个字符是行首啊?
也没说明替换的字符。

s/ 好像是查找?

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [报告]
发表于 2010-11-22 15:19 |只看该作者
谢谢楼上,

但是没有指出2个字符是行首啊?
也没说明替换的字符。

s/ 好像是查找?
henry_wu001 发表于 2010-11-22 14:58



从行首开始算"两个",你想是那两个!!

g/../s/// 作用与 %s/..// 相当

s/..// 把"找到"的两个,换成"无"....(删除)

试试g/../s//xx/

论坛徽章:
0
5 [报告]
发表于 2010-11-22 16:03 |只看该作者
从行首开始算"两个",你想是那两个!!

g/../s/// 作用与 %s/..// 相当

s/..// 把"找到"的两个,换 ...
jason680 发表于 2010-11-22 15:19



   
   谢谢楼上, 有点明白了,

  我的理解是这样的,请指正:
================================
g/../s///
================================
g/..是找到全文有2个字符以上的行,
s/// 等于s//最后一个是不需要的,

但是s// 是查找什么呢?
第一个/后面什么都没有(怎么能表示是行首的2个字符呢?),第二个/后面是空可以理解为替换为空

因为我尝试
================================
g/../s/1/2/
================================
这个是把所有2个字符以上的行中,
从行首开始,遇到的第一个“1”,替换为“2”
这个我是可以理解的。

但上面的S///能中第一个/后面什么都没有能表示行首的2个字符有点奇怪?

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
6 [报告]
发表于 2010-11-22 16:17 |只看该作者
本帖最后由 jason680 于 2010-11-22 16:19 编辑
谢谢楼上, 有点明白了,

  我的理解是这样的,请指正:
============================ ...
henry_wu001 发表于 2010-11-22 16:03



我说:不要那么"执着"......
我说: 一定要有"我说",你才知道是我说吗?

我说: g/../s/1/2/, 符合 g/../ 动作 s/1/2/
我说: g/../s/../2/, 符合 g/../ 动作 s/../2/
我说: 今天如果表示很长很复杂......
我说: g/[a-z]\{2\}[0-9]\{2\}/ ,我想你一定不想重打[a-z]\{2\}[0-9]\{2\} ,


所以s//xx/ 中第一个如果没有,就同等于g//所写的...(就像我把"我说"拿掉一样)

论坛徽章:
0
7 [报告]
发表于 2010-11-22 17:08 |只看该作者
我说:不要那么"执着"......
我说: 一定要有"我说",你才知道是我说吗?

我说: g/../s/1/2/, 符合 g ...
jason680 发表于 2010-11-22 16:17


   谢谢。虽然有点绕,但是我还是明白了,

1)省略了参数。
2)我更喜欢   “g/../s/../2/  ”至少我会理解。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
8 [报告]
发表于 2010-11-22 17:28 |只看该作者
触类旁通,以LZ的聪明,这种问题根本就算不上问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP