Chinaunix

标题: vim里面怎么在指定的范围行内删除 [打印本页]

作者: cnvbird    时间: 2015-02-25 15:52
标题: vim里面怎么在指定的范围行内删除
我要删除文本里面100~200行中的注释行
:100,200/^#.*$/d 结果把非注释行也删除了,请教高手指点。
作者: dn833    时间: 2015-02-25 16:03
  1. :100,200 s/^#.*//
复制代码
试试看
作者: 我是一隻羊    时间: 2015-02-25 16:13
100,200g/^#/d
作者: cnvbird    时间: 2015-02-25 16:25
三楼的可以,二楼的是替换,有空白行产生
作者: cnvbird    时间: 2015-02-25 16:26
为上面要加上g
作者: cnvbird    时间: 2015-02-25 16:30
g不是全局查找吗?这里已经指定查找范围,为什么要加上g?
作者: 我是一隻羊    时间: 2015-02-25 16:49
:[range]global/{pattern}/{command}

range:100,200
global:g
{pattern}:^#
{command}:d
作者: cnvbird    时间: 2015-02-25 16:51
:100,200/^#.*$/d,这样无法达到删除的目的原因是什么,误删除了非注释行
作者: 刺客阿地    时间: 2015-02-25 18:02
@cnvbird因为你匹配到$最后了,也就是100到200,直接到了文档的末尾,中间没有注释的,也会被删除,范围扩大了。

我是这么理解的。
作者: 我是一隻羊    时间: 2015-02-25 19:22
回复 8# cnvbird


    没有这用法吧,可能/{pattern}/中的{pattern}没有被解释,直接100,200d
    具体的我也不是很明白,看看有没有大神来回答下.
作者: 这个冬天不冷    时间: 2015-02-26 08:50
g是 一行内所有的都替换,想知道更多 help s, 在测试 下 把 g换成 1 2 3 4 等 测试下
作者: blackold    时间: 2015-02-26 12:29
g 或 v 命令。
作者: endless_loop    时间: 2015-02-27 01:14
这个冬天不冷 发表于 2015-02-26 08:50
g是 一行内所有的都替换,想知道更多 help s, 在测试 下 把 g换成 1 2 3 4 等 测试下


g是global命令吧,放在后面才是全局替换




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2