Aqui está o que a documentação do Vim tem a dizer sobre isso:
A edição virtual significa que o cursor pode ser posicionado onde não há um caracter real. Isso pode estar na metade de uma guia ou além do final da linha. Útil para selecionar um retângulo no modo Visual e editar uma tabela.
Eu preferiria ver isso implementado como um modo menor ou como uma configuração incorporada.
C-f
. Mas quando você puxa um retângulo depois de fazer isso, o retângulo aparece na marca e não no ponto. Se aparecesse no momento, isso resolveria esse problema.Respostas:
A
extend-rectangle-to-end
função norectangle-utils
pacote é o que você deseja. Está ligadomelpa
.Ele insere espaços para fazer com que a seleção atual do retângulo seja estendida para cobrir a linha mais longa da região.
Para obter esse comportamento, eu tenho isso no meu init.el.
C-x r e
não está vinculado a mais nada no vanilla emacsfonte
M-x extend-rectangle-to-end
depoisC-x r M-w
ouC-x r k
.Outra resposta: use
M-x picture-mode
. Você pode matar ou copiar retângulos no meio de caracteres de tabulação etc., enviá-los para registros, etc.fonte
extend-rectangle-to-end
a seleção de retângulo com isso sempre será 30x2.picture-mode
é velho e pouco conhecido. Entre outros recursos pouco conhecidos, possui: sair (C-c C-c
) remove o espaço em branco à direita.rectangle-minor-mode
a "embrulhar"picture-mode
? (conselhos, já que não vejo nenhum gancho na fonte 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)