在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
...
目前,我通过键入第一行输入,然后为下一个属性键入attibuteyy3pjf.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的映射,或宏。谢谢您告诉我可以使用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