2015-11-06 92 views
0

我想在Vim中编写命令,它可以删除第三行中的第9和第11个符号。我做了这个3s/.{9,11}//但它没有工作。如果您的建议能够做到这一点,我们将不胜感激。 这里是一个例子。我有三条线海大海在vim中替换第n个符号的命令

下面

3米以上

3米需要一些帮助,在vim

所以我想删除第三行第9个象征符号,在单词“some”中是“e”字母,在单词“help”中是第11个字母是字母“h”。

+1

对于VIM,许多正则表达式邻perators需要反斜杠转义。而%c是匹配列op。 '3s/\%9c。''将会替换第9列中的任何字符。 –

+0

您也可以连接替换。在这种情况下,位置11会在第一次变化后下降到10,所以':3s/\%9c .// | s/\%10c。'' –

+0

这是一个很酷的解决方案!!我该怎么做这个命令两次?我的意思是我想用一个命令替换第9列和第11列的任何字符。 – fuser

回答

2

移动的注释答案

对于Vim的,许多正则表达式特价要求反斜杠。 %c是列匹配操作。因此,

:3s/\%9c.// 

将在位置9处的“任何字符”替换为无。您也可以连接替换,但是每个表达式之间的内容会有所不同。在这种情况下,删除第9栏后,11(在帮助 'H')实际上是在只对第三线位置10

:3s/\%9c.//|s/\%10c.// 
4

:3norm! 9|x10|x 

:norm! 3G9|x10|x 

取适量涂抹于整个缓冲区:

:%norm! 9|x10|x 
+0

我得到了答案,但谢谢你,肯特。现在,老了,参考了一个很久以前的电视节目,以及我经常使用的节目。欢呼声,规范! –