As outras respostas abordaram por que isso acontece. Aqui está uma boa maneira de contornar isso.
wellle / target.vim . Eu encontrei recentemente este plugin e acho extremamente subestimado. Ele fornece um novo objeto de texto: din(
Mnemonic:. (D) elete (i) nside (n) ext "(" Este é compatível com outros operadores e vários objetos diferentes, como an(
, in"
, il(
(dentro do último parênteses)
Ele também substitui o comportamento padrão de i(
modo que ele primeiro verifique se o cursor está entre parênteses e, se não estiver, funciona da mesma maneira que in(
. Esse comportamento pode ser ativado ou desativado. Por exemplo:
def foo(bar):
^cursor here
A digitação ci(
age da mesma forma que cin(
, já que o cursor não está entre parênteses.
def foo( ):
^Cursor here, and in insert mode
Isso também aceita uma contagem:
def foo(bar): #Define function foo(bar)
^cursor here
Digitando c2in(
:
def foo(bar): #Define function foo( )
^cursor here
Isso também fornece um novo objeto, "argumento". Por exemplo, dana
significa "Excluir no próximo argumento". Isso também aceita uma contagem. Por exemplo:
def foo(arg1, arg2, BADarg3):
^ cursor here
Digitando d3ana
:
def foo(arg1, arg2):
^ cursor here
Existem muitos outros recursos que este plug-in possui, mas esses são os básicos.