Risposte:
Ecco una "linea" di oggetti di testo grezzi:
xnoremap il g_o0
onoremap il :normal vil<CR>
xnoremap al $o0
onoremap al :normal val<CR>
E un oggetto di testo "buffer" grezzo:
xnoremap i% GoggV
onoremap i% :normal vi%<CR>
---MODIFICARE---
Un "operatore" è un comando che non fa nulla per sé: d
, y
, etc.
La pressione di questi tasti ti mette in "modalità operatore in sospeso", dove Vim ti aspetta per dirgli su cosa vuoi che funzioni ... con un "movimento in attesa dell'operatore".
È possibile utilizzare :omap
o :onoremap
per definire movimenti personalizzati in attesa dell'operatore. La tecnica qui utilizzata si ispira a :help omap-info
:
Si noti che ho usato :onoremap
perché il
, al
e i%
non esistono già. Se stai facendo override di un movimento già esistente o un testo-oggetto - dice ip
- è necessario utilizzare una mappatura ricorsiva: :omap
.
:help :map-operator
descrive un metodo leggermente più avanzato.
Vedere :help v_o
per o
in modalità visiva.
o
(modalità operatore in sospeso) in onoremap? Cosa fa o
in modalità visiva? Immagino che sia "l'altro lato", perché sembra saltare dall'altro lato di una selezione ... Come posso trovarlo :h
? Non riesco a trovarlo con :h x_o
o :h o
.
Vorrei suggerire una soluzione aggiuntiva, per utilizzare ^ invece di 0 (quindi la riga inizia all'inizio del primo carattere:
xnoremap il g_o^
onoremap il :normal vil<CR>
xnoremap al $o^
onoremap al :normal val<CR>
In questo modo se "cambiamo in linea" si rispetterà il livello di rientro.