在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/ /
说明:
您使用了错误的命令,因为它们可能看起来与新用户相似
全局将“act”离子(一个字母的命令)应用于与VRE(模式)匹配的所有行(范围内,默认为所有文件):[range]g/VRE/act
在行内(范围内,默认当前行)使用可选的“f”延迟将匹配的VRE(模式)替换为“repl”位置:[range]s/VRE/repl/f
literal空格,然后是hash标记,然后是空格#
点对于任何字符,星号表示前面的字符可能出现多次,甚至不存在*
美元在末尾停留在“行尾”,但$
在此处捕获下线\n
:s/ # .*\n/ /
说明:
您使用了错误的命令,因为它们可能看起来与新用户相似
全局将“act”离子(一个字母的命令)应用于与VRE(模式)匹配的所有行(范围内,默认为所有文件):[range]g/VRE/act
在行内(范围内,默认当前行)使用可选的“f”延迟将匹配的VRE(模式)替换为“repl”位置:[range]s/VRE/repl/f
literal空格,然后是hash标记,然后是空格#
点对于任何字符,星号表示前面的字符可能出现多次,甚至不存在*
美元在末尾停留在“行尾”,但$
在此处捕获下线\n
: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(将以这种方式编辑我的答案),建议的模式有效。