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