从内部块移动到右括号
Movement to the closing parenthesis from inside block
我想要一个从第 1 点到第 2 点和第 3 点的运动:
FunctionCall(a, b, c, AnotherFunc(a, b))
^ <--- ^ ------------> ^
3 1 2
理想情况下,它可以与 d
、y
等编辑操作一起使用
现在我目视数右括号并使用<n>f)
,但是很烦人
Vim 确实有了解块的工具,即 i(
、a(
,但我想要 'a half' 这样的命令。
我怎样才能做到这一点?
你说得对,文本对象 了解块的两侧。如果您短暂进入视觉模式,当使用 v_o
命令切换到 "other"选择的一侧。
不幸的是,因为这涉及多个步骤,它只适用于导航,而不是作为原子 {motion}
与 d
、y
等一起使用。你可以写不过,这是针对那些人的自定义动议。例如:
onoremap ,) :normal! va(<C-v><Esc><CR>
onoremap ,( :normal! va(o<C-v><Esc><CR>
然后这些就像动作一样工作,例如gU,)
大写从光标到右括号的文本。
普通模式命令 %
将带您到下一个左括号(并且在那里,在左括号和右括号之间切换)。很遗憾,它会跳到最里面的开头括号而不是 2
或 3
.
将它与 F(
结合起来,您就得到了一些不涉及计数的远程整洁的东西。因此,1
、F(%
会将您带到 3
,随后的 %
会将您跳转到 2
。
您可以执行以下操作:
nnoremap <silent> ,) :normal! va(<c-v><esc><cr>
nnoremap <silent> ,( :normal! va(o<c-v><esc><cr>
onoremap ,) :<c-u>normal! mava(o`a<cr>
onoremap ,( :<c-u>normal! mava(`a<cr>
注意对于motion版本(onoremap
),它消耗了a
标记,这可能是一个问题;所以可以改进。
我通常做的是使用来自 various-motions
的合适命令。
例如,对于您的特定情况,])
后跟 %
会有所帮助。
它们可以与 d
、y
和 c
等操作结合使用。
更多详细信息使用 :help various-motions
我想要一个从第 1 点到第 2 点和第 3 点的运动:
FunctionCall(a, b, c, AnotherFunc(a, b))
^ <--- ^ ------------> ^
3 1 2
理想情况下,它可以与 d
、y
等编辑操作一起使用
现在我目视数右括号并使用<n>f)
,但是很烦人
Vim 确实有了解块的工具,即 i(
、a(
,但我想要 'a half' 这样的命令。
我怎样才能做到这一点?
你说得对,文本对象 了解块的两侧。如果您短暂进入视觉模式,当使用 v_o
命令切换到 "other"选择的一侧。
不幸的是,因为这涉及多个步骤,它只适用于导航,而不是作为原子 {motion}
与 d
、y
等一起使用。你可以写不过,这是针对那些人的自定义动议。例如:
onoremap ,) :normal! va(<C-v><Esc><CR>
onoremap ,( :normal! va(o<C-v><Esc><CR>
然后这些就像动作一样工作,例如gU,)
大写从光标到右括号的文本。
普通模式命令 %
将带您到下一个左括号(并且在那里,在左括号和右括号之间切换)。很遗憾,它会跳到最里面的开头括号而不是 2
或 3
.
将它与 F(
结合起来,您就得到了一些不涉及计数的远程整洁的东西。因此,1
、F(%
会将您带到 3
,随后的 %
会将您跳转到 2
。
您可以执行以下操作:
nnoremap <silent> ,) :normal! va(<c-v><esc><cr>
nnoremap <silent> ,( :normal! va(o<c-v><esc><cr>
onoremap ,) :<c-u>normal! mava(o`a<cr>
onoremap ,( :<c-u>normal! mava(`a<cr>
注意对于motion版本(onoremap
),它消耗了a
标记,这可能是一个问题;所以可以改进。
我通常做的是使用来自 various-motions
的合适命令。
例如,对于您的特定情况,])
后跟 %
会有所帮助。
它们可以与 d
、y
和 c
等操作结合使用。
更多详细信息使用 :help various-motions