我想从整个文件的第11列开始删除5个字符。 当我输入
11|5x
适用于光标所在的行。 但是当我输入
:g/.*/11|5x
编辑关闭。
我应该如何正确使用g命令?
答案 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个字符的列位置匹配。