Vim 跳转到字符并在其后更改的动作
Vim motion to jump-to-character and change after it
我正在寻找将结合以下命令的动作:f=lC
(例如,我在一条线上,我想更改 =
右侧的所有内容).
如果我们有这样的:v_ar something = 123;
那么在执行 f=lC
之后,我们将剩下 var something =_
,光标位于 _
的位置。
是否有针对此的原生 vim 动作?我找不到,在 targets.vim 插件中也找不到。
提前致谢。
做个映射:
:nnoremap s f=lC
现在只需按 s
就可以了(当然你可以使用任何其他字母,s
只是我很少使用的一个)。
您可以使用gn
命令。这将移动到下一个搜索匹配项,因此在您的情况下首先搜索您的模式,例如/=\zs.*
,然后输入 cgn
,你应该会得到 var something =
现在你可以重复这个过程,按 .
请注意,gn
是在 Vim 7.4
中引入的
如果多次重复该动作,您可以创建法线贴图并执行此操作
一下子;正如其他答案中提到的。或者你可以创建一个
运算符映射,在我看来这可能更合适。
来自 :h omap-info
:
Operator-pending mappings can be used to define a movement command
that can be used with any operator. Simple example: :omap { w
makes
y{
work like yw
and d{
like dw
.
如您所见,这允许您将地图与现有命令一起使用。
作为您的案例的示例:
onoremap <silent> = :<C-U>normal! 0f=lv$h
这会创建一个动作 (=
),激活后会清除范围(使用
<C-U
>) 并选择发送回
原始命令。选择是第一个左边的
等号 (0f=l
) 直到行尾 ($h
)。请注意 h
是
用于取消选择由 $
标记选择的换行符。
然后您可以使用 d=
或 c=
来执行您想要的操作。
创建一个询问您需要查找哪个字符的命令是
也可以,但更复杂。在中创建更多这样的组合
你的 .vimrc 如果你认为它们有用。这不是 "polluting"
任何手段,如果你判断它被经常使用的话。
我正在寻找将结合以下命令的动作:f=lC
(例如,我在一条线上,我想更改 =
右侧的所有内容).
如果我们有这样的:v_ar something = 123;
那么在执行 f=lC
之后,我们将剩下 var something =_
,光标位于 _
的位置。
是否有针对此的原生 vim 动作?我找不到,在 targets.vim 插件中也找不到。
提前致谢。
做个映射:
:nnoremap s f=lC
现在只需按 s
就可以了(当然你可以使用任何其他字母,s
只是我很少使用的一个)。
您可以使用gn
命令。这将移动到下一个搜索匹配项,因此在您的情况下首先搜索您的模式,例如/=\zs.*
,然后输入 cgn
,你应该会得到 var something =
现在你可以重复这个过程,按 .
请注意,gn
是在 Vim 7.4
如果多次重复该动作,您可以创建法线贴图并执行此操作
一下子;正如其他答案中提到的。或者你可以创建一个
运算符映射,在我看来这可能更合适。
来自 :h omap-info
:
Operator-pending mappings can be used to define a movement command that can be used with any operator. Simple example:
:omap { w
makesy{
work likeyw
andd{
likedw
.
如您所见,这允许您将地图与现有命令一起使用。 作为您的案例的示例:
onoremap <silent> = :<C-U>normal! 0f=lv$h
这会创建一个动作 (=
),激活后会清除范围(使用
<C-U
>) 并选择发送回
原始命令。选择是第一个左边的
等号 (0f=l
) 直到行尾 ($h
)。请注意 h
是
用于取消选择由 $
标记选择的换行符。
然后您可以使用 d=
或 c=
来执行您想要的操作。
创建一个询问您需要查找哪个字符的命令是 也可以,但更复杂。在中创建更多这样的组合 你的 .vimrc 如果你认为它们有用。这不是 "polluting" 任何手段,如果你判断它被经常使用的话。