我有一个包含以下内容的文件:
sensor_write_reg(client,0x57,0x00);
sensor_write_reg(client,0x58,0x00);
sensor_write_reg(client,0x59,0x00);
sensor_write_reg(client,0xfe,0x00);
sensor_write_reg(client,0x46,0x00);
我想将以下文本列复制到新文件中:
struct reg reg_table[] =
{
// paste here
}
int a;
int b;
int c;
// ...
the following content expected:
struct reg reg_table[] =
{
0xfe,0x01
0x54,0x11
0x55,0x03
0x56,0x00
0x57,0x00
0x58,0x00
0x59,0x00
0xfe,0x00
0x46,0x00
}
int a;
int b;
int c;
// ...
在源文件中,我输入CTRL + v进入列模式,选择并复制。 键入CTRL + W以输入目标文件,然后键入p以粘贴。 但是,粘贴的内容会覆盖以下语句。那不是我想要的。
0xfe,0x01
0x54,0x11}
0x55,0x03int a;
0x56,0x00int b;
0x57,0x00int c;
0x58,0x00
是否可以通过多种新行将其粘贴到行模式中?
答案 0 :(得分:3)
答案 1 :(得分:0)
块状选择不像行选择那样。
您正在复制6行文本,因此您必须释放6行进行粘贴。试试6O<CR>p
答案 2 :(得分:0)
你也可以尝试一个宏;经过一番尝试,我找到了这个:
y:tabe^MP:%s/^.*\(0x\x\+,0x\x\+\).*$/\1/^MVggy:tabclose!^M^Wjp
(^M
和^W
是回车和控制-W)
你的vim的设置将是......
这里发生了什么?
y
我们抓文字:tabe^MP
并打开一个带有空缓冲区的新标签,粘贴文字:%s/^.(0x\x+,0x\x+).$/\1/
这里我们过滤:只有两个以逗号分隔的十六进制数字将继续存在。Vggy:tabclose!^M
猛拉一切,关闭缓冲区(不保存)^Wjp
向下移动一个窗口并粘贴。最后,你可以使用kD
删除“粘贴在这里”-line ...