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

egdjgwm8  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(126)

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


的数据
我做c+i+(,这是我得到的:



但我希望它进入test2()括号,因为这是我在组合时插入符号的地方。它没有。它一直到回调()。
为什么会发生这种情况,如何解决?
代码:

/* eslint-disable */

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

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

    return test2;
});

字符串

bcs8qyzn

bcs8qyzn1#

名义行为:

如果光标位于左括号和右括号之间,则<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是更直观的,海事组织。

相关问题