在vim中搜索并删除至行末

在vim中搜索并删除至行末,vim,vi,Vim,Vi,我正在尝试清理一些代码,并试图找到实现以下目标的好方法: I am a #decent guy 我想: I am a guy 我试着用 :g/#/d 但是整行都被删除了,我只想删除到最后一行。在vim中实现这一点的最佳方法是什么 谢谢。由于该命令的使用: :[range]g/pattern/cmd 默认范围为整行,并且无论如何都不进行任何替换 使用: 相反 #匹配文本 \+\n匹配所有内容,直到行尾,然后是新行 /将整个匹配项替换为零 这不会发生,因为该命令的使用: :[range]g

我正在尝试清理一些代码,并试图找到实现以下目标的好方法:

I am a #decent
guy
我想:

I am a guy
我试着用

:g/#/d
但是整行都被删除了,我只想删除到最后一行。在vim中实现这一点的最佳方法是什么


谢谢。

由于该命令的使用:

:[range]g/pattern/cmd

默认范围为整行,并且无论如何都不进行任何替换


使用:

相反

  • #
    匹配文本
  • \+\n
    匹配所有内容,直到行尾,然后是新行
  • /
    将整个匹配项替换为零

    • 这不会发生,因为该命令的使用:

      :[range]g/pattern/cmd

      默认范围为整行,并且无论如何都不进行任何替换


      使用:

      相反

      • #
        匹配文本
      • \+\n
        匹配所有内容,直到行尾,然后是新行
      • /
        将整个匹配项替换为零

      :global
      一起,您可能需要类似

      :global/#/normal! f#D | join
      


      如果使用
      :global
      ,您将需要类似

      :global/#/normal! f#D | join
      

      请尝试以下方法:

      :s/ # .*\n/ /
      
      说明:

      您使用了错误的命令,因为它们可能看起来与新用户相似

      • :[range]g/VRE/act
        全局将“act”离子(一个字母的命令)应用于与VRE(模式)匹配的所有行(范围内,默认为所有文件)
      • :[range]s/VRE/repl/f
        在行内(范围内,默认当前行)使用可选的“f”延迟将匹配的VRE(模式)替换为“repl”位置
      现在关于模式,我认为这个候选者涵盖了大多数情况(除了行首的注释和磅号后没有空格的注释)

      • #
        literal空格,然后是hash标记,然后是空格
      • *
        点对于任何字符,星号表示前面的字符可能出现多次,甚至不存在
      • $
        美元在末尾停留在“行尾”,但
        \n
        在此处捕获下线
      试试这个:

      :s/ # .*\n/ /
      
      说明:

      您使用了错误的命令,因为它们可能看起来与新用户相似

      • :[range]g/VRE/act
        全局将“act”离子(一个字母的命令)应用于与VRE(模式)匹配的所有行(范围内,默认为所有文件)
      • :[range]s/VRE/repl/f
        在行内(范围内,默认当前行)使用可选的“f”延迟将匹配的VRE(模式)替换为“repl”位置
      现在关于模式,我认为这个候选者涵盖了大多数情况(除了行首的注释和磅号后没有空格的注释)

      • #
        literal空格,然后是hash标记,然后是空格
      • *
        点对于任何字符,星号表示前面的字符可能出现多次,甚至不存在
      • $
        美元在末尾停留在“行尾”,但
        \n
        在此处捕获下线

      @zaf如果我的答案解决了你的问题,看看该怎么办。@zaf如果我的答案解决了你的问题,看看该怎么办。事实上,他们不是POSIX BREs。它们是vim模式,有一些独特的特性。请参见
      :help模式
      。ViM与其他人一样,拥有Bill原始Vi的超集,因此继承了Ed regex。前者是POSIX BRE的基础,即使它们缺少类(后来添加的内容),这就是为什么我将它们称为BRE。许多实现都非常接近BRE(拥有额外的功能并不意味着不能使用基本功能)。对于ViM,这里讨论了不同之处,因为ViM的功能有时有点像ERE(即魔法或非魔法),你是对的:无论如何,我应该简单地称之为VRE(将以这种方式编辑我的答案),提议的模式有效。实际上,它们不是POSIX BREs。它们是vim模式,有一些独特的特性。请参见
      :help模式
      。ViM与其他人一样,拥有Bill原始Vi的超集,因此继承了Ed regex。前者是POSIX BRE的基础,即使它们缺少类(后来添加的内容),这就是为什么我将它们称为BRE。许多实现都非常接近BRE(拥有额外的功能并不意味着不能使用基本功能)。对于ViM,这里讨论了不同之处,因为ViM的功能有时有点像ERE(即魔法或非魔法),你是对的:无论如何,我应该简单地称之为VRE(将以这种方式编辑我的答案),建议的模式有效。