Réponses:
Voici un texte brut "ligne":
xnoremap il g_o0
onoremap il :normal vil<CR>
xnoremap al $o0
onoremap al :normal val<CR>
Et un objet texte "tampon" grossier:
xnoremap i% GoggV
onoremap i% :normal vi%<CR>
---ÉDITER---
Un « opérateur » est une commande qui ne fait rien par lui - même: d
, y
, etc.
L'appui sur ces touches vous met en "mode en attente de l'opérateur", où Vim attend que vous lui disiez sur quoi vous voulez qu'il opère ... avec un "mouvement en attente de l'opérateur".
Vous pouvez utiliser :omap
ou :onoremap
pour définir des mouvements personnalisés en attente de l'opérateur. La technique utilisée ici est inspirée par :help omap-info
:
Notez que j'ai utilisé :onoremap
parce que il
, al
et i%
n'existent pas déjà. Si vous surchargez un mouvement existant ou texte-objet - dire ip
- vous devez utiliser un mappage récursif: :omap
.
:help :map-operator
décrit une méthode légèrement plus avancée.
Voir :help v_o
pour o
en mode visuel.
o
(mode opérateur en attente) dans onoremap? Que fait o
le mode visuel? Je suppose que c'est "de l'autre côté", car il semble sauter de l'autre côté d'une sélection ... Comment puis-je le trouver :h
? Je ne le trouve pas avec :h x_o
ou :h o
.
Je suggérerais une solution supplémentaire, d'utiliser ^ au lieu de 0 (donc la ligne commence au début du premier caractère:
xnoremap il g_o^
onoremap il :normal vil<CR>
xnoremap al $o^
onoremap al :normal val<CR>
De cette façon, si nous changeons de ligne, cela respectera le niveau de retrait.