在Vim中为属性列表编写初始化的最快方法

在Vim中为属性列表编写初始化的最快方法,vim,Vim,有时我需要编写一长段代码,如下所示: a.id = b.id a.name = b.name a.host = b.host a.port = b.port ... 目前,我通过键入第一行输入,然后为下一个属性键入attibuteyy3pjf.lcw,键入属性名称,然后键入f..j,然后重复下一个属性 但是我想知道是否有更快的方法来输入这样的内容?如果我事先花时间仔细考虑一下,我会按如下方式输入: id name host port ... 然后将输入的行(“[,”])转换为所需的结果: :

有时我需要编写一长段代码,如下所示:

a.id = b.id
a.name = b.name
a.host = b.host
a.port = b.port
...
目前,我通过键入第一行输入,然后为下一个属性键入attibute
yy3pjf.lcw
,键入属性名称,然后键入
f..j
,然后重复下一个属性


但是我想知道是否有更快的方法来输入这样的内容?

如果我事先花时间仔细考虑一下,我会按如下方式输入:

id
name
host
port
...
然后将输入的行(
“[,”]
)转换为所需的结果:

:'[,']s/.*/a.& = b.&/
这将匹配整行(
*
),并通过
&

在替换中使用结果。我建议使用此映射(
就是一个示例):

细分:

yyp            " duplicate the line
ww             " move to the attribute name
:s/<C-r><C-w>/ " insert the beginning of a :s command using the word under the cursor as pattern
yyp“复制该行
ww“移动到属性名称
:s/“使用光标下的单词作为模式插入:s命令的开头
在行动中:

a.id = b.id

<F6>name<CR>

a.id = b.id
a.name = b.name
a.id=b.id
名称
a、 id=b.id
a、 name=b.name

如果您使用复制和粘贴方法,可以使用my简化。在每个粘贴行上,键入
ll
(要转到要替换的第一个
id
零件的开头,然后键入
gcename
gc
是插件映射,
e
表示到单词末尾。在
之后,插件将自动更改第二次/后续出现的情况


复制和粘贴(
yy3p
)可以通过my简化,my有一个复制行的
]d
命令。这里的确切等价物是
V3]d
(它不短,但不破坏默认寄存器)。

这是一个接近您已经习惯的解决方案,但击键次数较少

假设你从第一行开始,用
E*
然后是
Y3p
进行设置

a.id = b.id
a.id = b.id
a.id = b.id
a.id = b.id
现在进行更改:
ncename
后接
n.
ncehostn.
完成

a.id = b.id
a.name = b.name
a.host = b.host
a.port = b.port
这种方法的优点是它非常自然:使用日常命令进行高效编辑。重复击键的开销实际上相当小


在编辑文件时,我经常会编一些稍微重复的模式。但一旦这种编辑经常出现,并且您意识到这会花费大量时间,我建议您采取更严肃的方法,例如使用@IngoKarkat的
:s
命令,或@Romaill的映射,或宏。

谢谢您告诉我可以使用e> &在替换命令中。总有一天它会非常有用。看起来这是最快的使用方法。
a.id = b.id
a.id = b.id
a.id = b.id
a.id = b.id
a.id = b.id
a.name = b.name
a.host = b.host
a.port = b.port