Respostas:
Aqui está um objeto de texto "linha" bruto:
xnoremap il g_o0
onoremap il :normal vil<CR>
xnoremap al $o0
onoremap al :normal val<CR>
E um objeto de texto bruto "buffer":
xnoremap i% GoggV
onoremap i% :normal vi%<CR>
---EDITAR---
"Operador" é um comando que não faz nada por si só: d
, y
, etc.
Pressionar essas teclas coloca você no "modo de operador pendente", onde o Vim espera que você diga o que deseja que ele opere ... com um "movimento de operador pendente".
Você pode usar :omap
ou :onoremap
para definir movimentos personalizados pendentes do operador. A técnica usada aqui é inspirada em :help omap-info
:
Note que eu usei :onoremap
porque il
, al
e i%
ainda não existe. Se você está substituindo um movimento existente ou texto-objeto - digamos ip
- você deve usar um mapeamento recursiva: :omap
.
:help :map-operator
descreve um método um pouco mais avançado.
Veja :help v_o
para o
no modo visual.
o
(modo pendente do operador) no onoremap? O que faz o
no modo visual? Eu acho que é o "outro lado", porque parece pular para o outro lado de uma seleção ... Como encontro :h
isso? Não consigo encontrá-lo com :h x_o
ou :h o
.
Eu sugeriria uma solução adicional, para usar ^ em vez de 0 (para que a linha comece no início do primeiro caractere:
xnoremap il g_o^
onoremap il :normal vil<CR>
xnoremap al $o^
onoremap al :normal val<CR>
Dessa forma, se "mudarmos de linha", ele respeitará o nível de indentação.