Vim - g命令用于删除特定列中的字符

时间:2014-01-16 11:47:35

标签: vim

我想从整个文件的第11列开始删除5个字符。 当我输入

11|5x

适用于光标所在的行。 但是当我输入

:g/.*/11|5x

编辑关闭。

我应该如何正确使用g命令?

3 个答案:

答案 0 :(得分:6)

了解Vi(m)模式是掌握它的关键。

跳转到屏幕列的|命令是普通模式命令,但:global命令采用 Ex命令:normal Ex命令将以下参数解释为普通模式命令(使用!:不考虑映射(更安全)):

:g/.*/normal! 11|5x

PS::g的较短“匹配任何地方”模式为^而不是.*

答案 1 :(得分:2)

:g/./norm! 11|5x

您需要normal

答案 2 :(得分:0)

正常|动作会将光标移至屏幕列,当您在一行中有多列字符如<Tab>时,这可能是不可能的。

如下所示全球替代可以避免这个问题:

%s/\%10c.\{5}/,其中\%10c与第10个字符的列位置匹配。