Voici ce que la documentation de Vim a à dire à ce sujet:
L'édition virtuelle signifie que le curseur peut être positionné là où il n'y a pas de caractère réel. Cela peut être à mi-chemin dans un onglet ou au-delà de la fin de la ligne. Utile pour sélectionner un rectangle en mode visuel et modifier un tableau.
J'aimerais de préférence voir cela implémenté comme un mode mineur ou un paramètre intégré.
C-f
. Mais lorsque vous tirez sur un rectangle après avoir fait cela, le rectangle apparaît à la marque au lieu du point. Si cela apparaissait à ce point, cela résoudrait ce problème.Réponses:
La
extend-rectangle-to-end
fonction dans lerectangle-utils
package est ce que vous voulez. C'est allumémelpa
.Il insère des espaces pour étendre la sélection de rectangle actuelle pour couvrir la ligne la plus longue de la région.
Pour obtenir ce comportement, je l'ai dans mon init.el.
C-x r e
n'est lié à rien d'autre dans la vanille emacsla source
M-x extend-rectangle-to-end
et puisC-x r M-w
ouC-x r k
.Autre réponse: utiliser
M-x picture-mode
. Vous pouvez tuer ou copier des rectangles au milieu des tabulations, etc., les envoyer aux registres, etc.la source
extend-rectangle-to-end
comme la sélection de rectangle avec qui sera toujours 30x2.picture-mode
est vieux et peu connu. Parmi les autres fonctionnalités peu connues, il a: exiting (C-c C-c
) supprime les espaces de fin.rectangle-minor-mode
de «s'envelopper»picture-mode
? (conseil car je ne vois aucun crochet dans la source derectangle-minor-mode
).(defun rectangle-mark-mode-wrapped-in-picture-mode (orig-fun &rest args) (if rectangle-mark-mode (picture-mode) (and (eq major-mode 'picture-mode) (picture-mode-exit t))))
(advice-add 'rectangle-mark-mode :around #'rectangle-mark-mode-wrapped-in-picture-mode)