Інші відповіді висвітлювали, чому це відбувається. Ось приємний спосіб обійти це.
wellle / targets.vim . Я нещодавно знайшов цей плагін, і я думаю, що він вкрай занижений. Це забезпечує новий текстовий об'єкт: din(Мнемоніка :. (Г) даліть (я) Nside (п) доб «(» Це сумісно з іншими операторами і декількома різними об'єктами, такими як an(, in", il((всередині останньої дужкою)
Він також переосмислює поведінку за замовчуванням, i(так що спочатку дивиться, чи є курсор у дужках, а потім, якщо це не так, він працює так само, як in(. Таку поведінку можна вмикати чи вимикати. Наприклад:
def foo(bar):
^cursor here
Введення тексту ci(діє так само cin(, як , оскільки курсор не знаходиться в дужках.
def foo( ):
^Cursor here, and in insert mode
Це також приймає кількість:
def foo(bar): #Define function foo(bar)
^cursor here
Введення тексту c2in(:
def foo(bar): #Define function foo( )
^cursor here
Це також забезпечує новий об'єкт, "аргумент". Наприклад, danaозначає "Видалити навколо наступного аргументу". Це також приймає підрахунок. Наприклад:
def foo(arg1, arg2, BADarg3):
^ cursor here
Введення тексту d3ana:
def foo(arg1, arg2):
^ cursor here
У цього плагіна є багато інших функцій, але це основні.