neovim:对于文本对象(例如括号),命令的行为不符合预期

问题描述 投票:0回答:1

我在第 8 行有一个插入符号:

我做

c+i+(
,这就是我得到的:

但我希望它进入 test2() 括号,因为这是我进行组合时插入符号所在的位置。事实并非如此。它一直到回调()。

为什么会发生这种情况以及如何解决它?

代码:

/* eslint-disable */

function callback(fn: Function) {
    return fn();
}

const whatever = callback(function test1() {
    function test2() {}

    return test2;
});
vim neovim
1个回答
0
投票

标称行为:

如果光标位于左括号和右括号之间,则

<operator>i(
的预期行为是对位于这两个括号之间的文本进行“操作”。

后备行为:

如果光标周围没有括号,那么预期的行为是对最接近的一对括号的内容进行“操作”向前

简而言之,尽管处于有利于“标称”行为的情况下,您似乎还是想要“后备”行为:

+-- opening parenthesis before the cursor | const whatever = callback(function test1() { function test2() {} return test2; }); | +-- closing parenthesis after the cursor 在这种情况下,当你做ci(

时发生的事情是a)完全正常和预期的,b)不是你想要的。因此,您将不得不使用不同的命令,更符合您实际想要发生的情况。
以下所有命令均可满足您的要求:

f(a
f)i
t)a
f(ci(
f)ci(

……当然还有其他方法。

f(a

更直观,IMO。
    

© www.soinside.com 2019 - 2024. All rights reserved.