Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VIM替换两列中的文本_Vim - Fatal编程技术网

VIM替换两列中的文本

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

下面是从第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行中的第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等等。