VIM替换两列中的文本
下面是从第23行到第34行的一个列敏感文件的一部分。请看第25列和第26列。第23到28行是正确的,因为它应该是连续的VIM替换两列中的文本,vim,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
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行中的第25列和第26列(以及此处不包括的第34行以外的行)需要编辑。它们表示文件中水分子的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/hoh1/hoh8
,这显然不是最有效的方法
很抱歉,在第一次尝试回答这个问题时不清楚,但我们将感谢您的帮助。谢谢您的问题不清楚,但据我所知,尝试在视觉模式下选择矩形块可能会对您有所帮助。在
OSX
或Linux
中使用ctrl-v
,或在Windows
中使用ctrl-q
(在正常模式下)。您的问题不清楚,但据我所知,尝试在视觉模式下选择矩形块可能会对您有所帮助。在OSX
或Linux
中使用ctrl-v
,或在Windows
中使用ctrl-q
(在正常模式下)。事实上,我要感谢大家花了这么多时间,很抱歉造成了混乱。我找到了一种方法,使用python的字符串格式,因为模式非常模糊,而且我不太习惯正则表达式模式,所以我无法在VIM上找到一种简单的方法来实现它。实际上,我要感谢大家抽出时间,并对造成混乱表示抱歉。我找到了一种方法,使用python的字符串格式,因为模式非常模糊,而且我不太习惯正则表达式模式,因此无法在VIM上找到一种简单的方法。您对所要查找内容的描述令人困惑。你能举例说明你想要什么吗?您参考了第29-31行和第32-34行,但您的示例中甚至没有29行。我在你的文本中没有看到1,10,1
,而且9,9,9
和10,10,10
都会破坏你的列敏感文件格式。你是使用*nix还是Windows?OS X/Ubuntu,所以我对UNIXOk非常熟悉。我会帮你做的。:)你能不能给我一个明确的例子,说明你到底想要什么?如果发布时间太长,那么只需链接到一个粘贴箱或其他东西。你对所要查找内容的描述令人困惑。你能举例说明你想要什么吗?您参考了第29-31行和第32-34行,但您的示例中甚至没有29行。我在你的文本中没有看到1,10,1
,而且9,9,9
和10,10,10
都会破坏你的列敏感文件格式。你是使用*nix还是Windows?OS X/Ubuntu,所以我对UNIXOk非常熟悉。我会帮你做的。:)你能不能给我一个明确的例子,说明你到底想要什么?如果文章太长,请链接到粘贴箱或其他东西。对不起,不清楚。我刚刚剪切了文件的一部分,我要替换的行是第25-26列到第9列、第10列、第11列中的29-31行、第32-34行、第35-37行等等。很抱歉,我不清楚。我只是剪切了文件的一部分,我要替换的行是第25-26到9、10、11列中的29-31、32-34、35-37等等。