【问题标题】:Vim remove character from positionVim 从位置删除字符
【发布时间】:2015-02-13 07:21:06
【问题描述】:

如何从某个位置删除一个字符?例如,我有字符串 hello,删除第三个字符并获得 helo。 我曾尝试使用下一个表达式,但它不起作用。

.s/\%3c//g

【问题讨论】:

  • 必须使用command mode吗?

标签: regex vim vi substitution


【解决方案1】:

normal mode 也称为command mode 但不要与command-line mode 混淆,您可以输入:

03lx

0 转到行首。

3l 向前移动 3 个字符。

x 删除光标下的字符。

【讨论】:

  • 是的,但这总是从缓冲区的开头开始计算,而\%c 从每一行重新开始。所以你的解决方案只相当于第一行。
  • 我改变了答案。现在它从行首开始。
  • 你所说的“命令模式”被 Vim 称为“normal mode”。 “命令模式”可能会与 command-line mode 混淆。
【解决方案2】:

\%c 特殊原子是 零宽度 匹配;即它增加了一个限制(对匹配的字节数)不消耗字符。为此,请附加另一个消耗它的原子,例如. 用于任何字符匹配。然后,您的替换将按预期工作:

.s/\%3c.//g

【讨论】:

  • 这真是太好了。谢谢不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 2022-12-14
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
相关资源
最近更新 更多