Інші відповіді висвітлювали, чому це відбувається. Ось приємний спосіб обійти це.
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
У цього плагіна є багато інших функцій, але це основні.