我在每行的末尾都重复了以下字符:
^[[00m
Run Code Online (Sandbox Code Playgroud)
如何使用Vim编辑器从每行中删除它们?
当我发出命令时:%s/^[[00m//g,它不起作用.
Con*_*ner 77
您可以使用:%s/.\{6}$//从字面上删除每行末尾的6个字符.
在:启动前模式,它可以让你执行一个命令.%是一个范围,指定此命令应对整个文件进行操作.该s代表替代品,其次是图案和格式替换字符串s/pattern/replacement/.在这种情况下.\{6}$,我们的模式是指将任何字符(.)精确匹配6次(\{6})后跟行($)的末尾,并将其替换为替换字符串,这是什么都没有.因此,正如我上面所说,这匹配每行的最后6个字符,并替换它们.
ACR*_*CRL 19
我会使用全局命令.
试试这个:
:g/$/norm $xxxxxx
Run Code Online (Sandbox Code Playgroud)
甚至:
:g/$/norm $5Xx
Run Code Online (Sandbox Code Playgroud)
我认为这个问题的关键是保持它的通用性,而不是特定于你想要删除的字符.这样,您学习的技术将适用于许多其他情况.
假设这是ANSI转义序列,则^[代表单个<Esc>字符.您必须在许多Windows Vim安装上按Ctrl+ V(或Ctrl+ Q)输入它,然后按Esc.注意这是如何以略微不同的颜色突出显示.
很容易将每行不可知的最后六个字符替换为那些字符,但它留下了相当大的错误空间,所以我不推荐它.另外,如果^[是一个转义字符,你真的在寻找五个字符.
ga在角色上使用^[你可以确定它是否是转义码,在这种情况下会显示状态栏
<^[> 27, Hex 1b, Octal 033
Run Code Online (Sandbox Code Playgroud)
假设是,您可以使用替换所有内容
:%s/\%x1b\[00m$//gc
Run Code Online (Sandbox Code Playgroud)
与\%x1b从上述的十六进制值的到来.另请注意,您必须转义括号([),因为它是Vim正则表达式中的保留字符.$确保它出现在一行的末尾,并且/gc标志将使其全局并确认每次替换(您可以按a来替换所有).
这是一个简单的逃避问题.您可以使用以下两种方法之一:
:%s/\^\[\[00m$//gc
:%s/\V^[[00m\$//gc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33285 次 |
| 最近记录: |