feerlay Asked: 2024-01-02 18:30:23 +0800 CST2024-01-02 18:30:23 +0800 CST 2024-01-02 18:30:23 +0800 CST neovim:对于文本对象(例如括号),命令的行为不符合预期 772 我在第 8 行有一个插入符号: 我c+i+(这样做了,这就是我得到的: 但我希望它进入 test2() 括号,因为这是我进行组合时插入符号所在的位置。事实并非如此。它一直到回调()。 为什么会发生这种情况以及如何解决它? 代码: /* eslint-disable */ function callback(fn: Function) { return fn(); } const whatever = callback(function test1() { function test2() {} return test2; }); vim 1 个回答 Voted Best Answer romainl 2024-01-02T18:54:27+08:002024-01-02T18:54:27+08:00 标称行为: 如果光标位于左括号和右括号之间,则 的预期行为<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(aIMO 更直观。
标称行为:
如果光标位于左括号和右括号之间,则 的预期行为
<operator>i(
是对位于这两个括号之间的文本进行“操作”。后备行为:
如果光标周围没有括号,则预期的行为是对最接近的一对括号的内容进行“操作” 。
简而言之,尽管处于有利于名义行为的情况下,您似乎还是想要后备行为:
在这种情况下,当你这样做时发生的事情
ci(
a) 完全正常且符合预期,b) 不是你想要的。因此,您将不得不使用不同的命令,更符合您实际想要发生的情况。以下所有命令都会执行您想要的操作:
……当然还有其他方法。
f(a
IMO 更直观。