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 :omapou :onoremappara definir movimentos personalizados pendentes do operador. A técnica usada aqui é inspirada em :help omap-info:
Note que eu usei :onoremapporque il, ale 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_opara ono modo visual.
o(modo pendente do operador) no onoremap? O que faz ono modo visual? Eu acho que é o "outro lado", porque parece pular para o outro lado de uma seleção ... Como encontro :hisso? Não consigo encontrá-lo com :h x_oou :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.