繁体   English   中英

在vi / vim编辑器中从文件中删除几个选定的字符

[英]Deleting few selected characters from a file in vi/vim editor

以下是删除vi中前N字符的命令:

:%s/^.\{N}//g

但是,我不理解^.\\{N}的含义; 谁能按字符解释每个字符的含义?
如何扩展此命令以删除行之间的中间字符?

例如 ,从给定的行范围中删除第4至第50个字符

您可以将特定的列与\\%c\\%v匹配

删除第4至50列:

 :%s/\%4c.\{-}\(\ze\%50c\|$\)//

要仅删除IFF,有第50列:

 :%s/\%4c.\{-}\ze\%50c//

要使用虚拟列(例如,如果使用制表位,则很方便):

 :%s/\%4v.\{-}\ze\%50v//

哦,

  • .\\{-}是零个或多个字符的非贪婪匹配。
  • \\ze结束匹配指令,这将在第50列停止匹配

这是正则表达式部分的解释

^是首行锚。

. 匹配任何字符。

N表示前一个令牌将被匹配的字符数

{}用于对计数进行分组。 例如,您可以将其用作{1, 9}

因此,它说: From the beginning of the line, match N characters ,其余为VIM。

^是行首锚; . 是通用匹配, {N}重复前一次匹配N次。

要删除第4至第50个字符,请使用:%s/^\\(.\\{4}\\).\\{46}/\\1/g

但是,使用矩形选择模式可能会更容易:从正常模式移至开始位置,然后Ctrl+V ,您可以通过移动光标来创建矩形选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM