在冒号后使用视觉块选择Vim移除/插入
我有一段代码:在冒号后使用视觉块选择Vim移除/插入,vim,editor,vi,Vim,Editor,Vi,我有一段代码: fill_in "Name",with: "John" fill_in "Email",with: "user@example.com" fill_in "Password",with: "supersafe" 我想将:之后写的所有内容替换为用户。,这样我只需在用户之后添加名称、电子邮件和密码,即可完成代码。 fill_in "Name",with: user.name fill_in "Email",with: user.email fill_in "Password",wi
fill_in "Name",with: "John"
fill_in "Email",with: "user@example.com"
fill_in "Password",with: "supersafe"
我想将:
之后写的所有内容替换为用户。
,这样我只需在用户之后添加名称
、电子邮件
和密码
,即可完成代码。
fill_in "Name",with: user.name
fill_in "Email",with: user.email
fill_in "Password",with: user.password
此外,一种从所选视觉块的一行导航到另一行的方法(可能是vim插件?)当然是最佳的,尽管不是这里的要点
一个更简单的选择是用user.
,而不是用d$
删除它;然而,选择问题仍然存在
我用正常的Ctrl-V
选择尝试了它,但是由于:
字符被放置在每行的不同列中,因此我没有想要的行为
谢谢只要突出显示您希望它运行的行就行了 非魔法正则表达式
s/.\{-}"\(.\{-}\)".\{-}:\zs.*/ user.\L\1/g
s/\v.{-}"(.{-})".{-}:\zs.*/ user.\L\1/g
非常神奇的正则表达式
s/.\{-}"\(.\{-}\)".\{-}:\zs.*/ user.\L\1/g
s/\v.{-}"(.{-})".{-}:\zs.*/ user.\L\1/g
这句话用引号表达了这件事。因为它使用了
\zs
匹配从冒号之后开始。因此,冒号后面的所有内容都将替换为user.
和引号中所有内容的小写版本\L
将后面的字符串转换为小写版本。只需突出显示要在其上运行的行即可
非魔法正则表达式
s/.\{-}"\(.\{-}\)".\{-}:\zs.*/ user.\L\1/g
s/\v.{-}"(.{-})".{-}:\zs.*/ user.\L\1/g
非常神奇的正则表达式
s/.\{-}"\(.\{-}\)".\{-}:\zs.*/ user.\L\1/g
s/\v.{-}"(.{-})".{-}:\zs.*/ user.\L\1/g
这句话用引号表达了这件事。因为它使用了\zs
匹配从冒号之后开始。因此,冒号后面的所有内容都将替换为user.
和引号中所有内容的小写版本\L
将后面的字符串转换为小写版本。或者,如果(像我一样)您喜欢使用手动编辑的命令,而不是输入疯狂的正则表达式,则:
:g/with:/norm yi“$”\u ca␣用户。
C-r“
Esc
v
`u`
g:/with://
(适用于包含“with:”的所有行(如果缓冲区不包含其他行,这实际上是可选的)norm
正常模式下的以下“键”:
(猛拉第一个引用值)yi”
(移动到行尾…)$
(更改引用的文本)“\u ca”
(从␣用户。
)C-r用户开始。
(以及最初的拖动文本)“
(完成)Esc
`.u`(粘贴位小写)v
gu
`.而不是v\`.u
):
或者,如果(像我一样)喜欢使用手动编辑的命令,而不是输入疯狂的正则表达式,请:
:g/with:/norm yi“$”\u ca␣用户。
C-r“
Esc
v
`u`
g:/with://
(适用于包含“with:”的所有行(如果缓冲区不包含其他行,这实际上是可选的)
norm
正常模式下的以下“键”:
yi”
(猛拉第一个引用值)
$
(移动到行尾…)
“\u ca”
(更改引用的文本)␣用户。
(从用户开始。
)C-r“
(以及最初的拖动文本)Esc
(完成)
v
`.u`(粘贴位小写)
这可能是口味的问题,但对我来说效果很好
复杂?这里有一个窍门:我实际上所做的是在一行上执行编辑(用qq…q录制宏),然后
将其应用于所有行
演示:(注意它仍然使用了gu
`.而不是v\`.u
):
为了好玩,另一个宏:
qq start recording in register q
0 go to the first column
yi" yank the content of the first pair of quotes
f"; jump to the next pair of quotes
"_c$ change until the end of line, sending the previous text to the black hole register
user. insert user.
<C-r>" insert the content of the default register
<Esc> exit insert mode
guiw change the case of the word under the cursor
q stop recording
qq开始在寄存器q中记录
0转到第一列
易“猛拉第一对引号的内容
跳转到下一对引号
“_c$更改,直到行尾,将上一个文本发送到黑洞寄存器
用户。插入用户。
“插入默认寄存器的内容
退出插入模式
guiw更改光标下单词的大小写
停止录音
我相信有几十种方法可以获得相同的结果。只是为了好玩,另一个宏:
qq start recording in register q
0 go to the first column
yi" yank the content of the first pair of quotes
f"; jump to the next pair of quotes
"_c$ change until the end of line, sending the previous text to the black hole register
user. insert user.
<C-r>" insert the content of the default register
<Esc> exit insert mode
guiw change the case of the word under the cursor
q stop recording
qq开始在寄存器q中记录
0转到第一列
易“猛拉第一对引号的内容
跳转到下一对引号
“_c$更改,直到行尾,将上一个文本发送到黑洞寄存器
用户。插入用户。
“插入默认寄存器的内容
退出插入模式
guiw更改光标下单词的大小写
停止录音
我相信有几十种方法可以达到同样的效果。哇,这很有魅力。尽管我一直在寻找一种更简单的方法来实现这一点。我相信一些编辑器,如TextMate和SublimateText,可以在某个字符后阻止select。无论如何,谢谢你,我会从这个命令中学习!很好。它可以用\m
,\v`或者\V
来断言的神奇性。我提供了自己的无正则表达式的答案(基于运动命令和重复命令),以便更好地衡量:)哇,这很有魅力。虽然我一直在寻找一种更简单的方法来实现这一点。我相信一些编辑器,如TextMate和SublimateText,可以在某个字符后阻止select。无论如何,谢谢你,我将从该命令中学习!很好。它可以使用\m
,\v`或\v
来实现的魔力y拥有无正则表达式的答案(基于运动命令和重复命令