Відповіді:
Ось грубі "рядкові" текстові об'єкти:
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>
Таким чином, якщо ми зробимо "зміни в черзі", це буде дотримуватися рівня відступу.