VIM替换2列中的文本

时间:2015-07-09 17:34:06

标签: vim

以下是第23行到第34行的一个列敏感文件的一部分。请查看第25和26行。第23到28行是正确的,因为它应该是连续的。

HETATM   21  O   HOH     7      -1.609   5.551  -4.296  1.00  0.00      WAT  O
HETATM   22  H   HOH     7      -1.594   5.971  -3.395  1.00  0.00      WAT  H
HETATM   23  H   HOH     7      -1.048   4.730  -4.281  1.00  0.00      WAT  H
HETATM   24  O   HOH     8      -4.693   5.472  -0.557  1.00  0.00      WAT  O
HETATM   25  H   HOH     8      -3.881   4.900  -0.521  1.00  0.00      WAT  H
HETATM   26  H   HOH     8      -4.819   5.805  -1.485  1.00  0.00      WAT  H
HETATM   27  O   HOH     1       0.289  -5.035   5.663  1.00  0.00      WAT  O
HETATM   28  H   HOH    10       0.241  -4.604  -5.564  1.00  0.00      WAT  H
HETATM   29  H   HOH     1      -0.399  -5.750   5.605  1.00  0.00      WAT  H
HETATM   30  O   HOH    11      -1.741  -5.167   0.877  1.00  0.00      WAT  O
HETATM   31  H   HOH     0      -2.612  -4.754   0.636  1.00  0.00      WAT  H
HETATM   32  H   HOH     0      -1.819  -5.599   1.769  1.00  0.00      WAT  H

但是,需要编辑第29至34行(以及此处未包含的超过34行)中的第25和26列。它们代表文件中水分子的ID号。因此,第29-31行的第25和26列应该是'9'而不是'1'或'10',第32-34行的第25和26列应该是'10'而不是'11'或'0'。并且34之后的所有行都遇到类似问题,我还想将第25和26列中的内容更改为“12”,“13”等。每组3行。因此预计最终结果将是这样的。

HETATM   21  O   HOH     7      -1.609   5.551  -4.296  1.00  0.00      WAT  O
HETATM   22  H   HOH     7      -1.594   5.971  -3.395  1.00  0.00      WAT  H
HETATM   23  H   HOH     7      -1.048   4.730  -4.281  1.00  0.00      WAT  H
HETATM   24  O   HOH     8      -4.693   5.472  -0.557  1.00  0.00      WAT  O
HETATM   25  H   HOH     8      -3.881   4.900  -0.521  1.00  0.00      WAT  H
HETATM   26  H   HOH     8      -4.819   5.805  -1.485  1.00  0.00      WAT  H
HETATM   27  O   HOH     9       0.289  -5.035   5.663  1.00  0.00      WAT  O
HETATM   28  H   HOH     9       0.241  -4.604  -5.564  1.00  0.00      WAT  H
HETATM   29  H   HOH     9      -0.399  -5.750   5.605  1.00  0.00      WAT  H
HETATM   30  O   HOH    10      -1.741  -5.167   0.877  1.00  0.00      WAT  O
HETATM   31  H   HOH    10      -2.612  -4.754   0.636  1.00  0.00      WAT  H
HETATM   32  H   HOH    10      -1.819  -5.599   1.769  1.00  0.00      WAT  H

到目前为止,我无法想出一个很好的模式来将这些时髦的数字替换为9,10等等。如果我可以在单个vim命令中替换所有这些3行的组而不是必须逐组进行,那将是很好的,因为有50-60组这些具有此问题。我之前所做的只是:26,28s/HOH 1/HOH 8,这显然不是最有效的方法。

很抱歉在第一次尝试问题时不清楚,但是您的帮助将不胜感激。谢谢

2 个答案:

答案 0 :(得分:0)

您的问题尚不清楚,但根据我的理解,尝试在视觉模式中选择矩形块可能会对您有所帮助。使用ctrl-v中的OS XLinux中的ctrl-qWindows(正常模式下)。

答案 1 :(得分:0)

实际上,我要感谢大家的时间,并为造成这些混乱感到抱歉。我找到了一种方法,使用python的字符串格式化,因为模式非常模糊,而且我不习惯正则表达式模式,所以我无法想出一个简单的方法来执行它VIM。