Vim: изменение/удаление до конца "блока"
Если у вас есть блок текста, ограниченный скобками или кавычками, вы можете использовать
ci"
da(
и т.д., чтобы изменить этот блок текста. Но есть ли способ изменить или удалить из курсора в конец этого блока (в способе cw
делает это для слов)?
Ответы
Ответ 1
Ответ Benoit на использование t f T
и F
- лучший способ, о котором я знаю. Когда дело доходит до удаления в конец скобки, вы можете использовать ])
. Это будет учитывать любые вложенные скобки. Также есть соответствующие [(
, ]}
и [{
.
Ответ 2
Используйте ct)
для " c
или t
закрывать закрывающиеся скобки.
Движения Вима с t, f, T и F очень, очень полезны. :help t
, :help f
.
Обновление: Если есть вложенные круглые скобки, в которых вы находитесь:
-
vi)o``
будет выбирать до закрытия parenthese (выберем внутри круглых скобок, затем переключимся на другой конец выделения и переместим его туда, где вы были (``
)
-
vi)``
будет выбирать до открытия parenthese (тот же механизм, но без необходимости o
)
Первый работает только потому, что когда вы делаете vi)
, помните о прыжке курсора, а ``
переходит в предыдущее местоположение курсора. Кажется, что o
в визуальном режиме не влияет на это.
Ответ 3
См. раздел Выбор текстовых объектов" справки Vim. Вы можете определить последовательности выбора там с помощью операций удаления и изменения. Он показывает, как выбирать блоки, ограниченные одним из следующих (и более):
Например:
d}
и c}
будут удаляться и меняться от курсора до конца абзаца.
Ответ 4
Я не знаю общего способа делать то, что вы хотите, но, предполагая, что вы находитесь на k
в:
The (quick (brown) fox) jumps over the lazy dog.
-
v2t)
будет выбирать:
(The quick (brown) fox) jumps over the lazy dog.
^^^^^^^^^^^^^
Если вы не хотите считать, вы можете связать t)
, чтобы развернуть свой выбор: vt)t)
сначала выберет:
(The quick (brown) fox) jumps over the lazy dog.
^^^^^^^^
то
(The quick (brown) fox) jumps over the lazy dog.
^^^^^^^^^^^^^
-
vT(
будет выбирать:
(The quick (brown) fox) jumps over the lazy dog.
^^^^^^^^^