Ответы:
Вот грубая «строчка» текстовых объектов:
xnoremap il g_o0
onoremap il :normal vil<CR>
xnoremap al $o0
onoremap al :normal val<CR>
И грубый «буферный» текст-объект:
xnoremap i% GoggV
onoremap i% :normal vi%<CR>
---РЕДАКТИРОВАТЬ---
«Оператор» является командой , которая ничего не делает сам по себе: d
, y
и т.д.
Нажатие этих клавиш переводит вас в «режим ожидания оператора», где Vim ждет, пока вы не скажете ему, над чем вы хотите работать… с «движением в ожидании оператора».
Вы можете использовать :omap
или :onoremap
для определения пользовательских движений, ожидающих оператора. Техника, используемая здесь, вдохновлена :help omap-info
:
Обратите внимание, что я использовал, :onoremap
потому что il
, al
и i%
еще не существует. При переопределении существующего движения или текстовом объекта - скажем , ip
- вы должны использовать рекурсивное отображение: :omap
.
:help :map-operator
описывает немного более продвинутый метод.
См :help v_o
для o
в визуальном режиме.
o
(режим ожидания оператора) в onoremap? Что делает o
в визуальном режиме? Я бы предположил, что это «другая сторона», потому что она, кажется, переходит на другую сторону выбора ... Как я могу найти :h
на нем? Я не могу найти это с помощью :h x_o
или :h o
.
Я бы предложил дополнительное решение, чтобы использовать ^ вместо 0 (поэтому строка начинается в начале первого символа:
xnoremap il g_o^
onoremap il :normal vil<CR>
xnoremap al $o^
onoremap al :normal val<CR>
Таким образом, если мы сделаем «изменение в строке», это будет учитывать уровень отступа.