Evil-emacs: ¿cómo seleccionar el último texto pegado (como gv)?

7

¿Cómo selecciono visualmente el último texto pegado evil-emacs?

gvvuelve a seleccionar la última selección visual. Me gustaría una función / fragmento que haga lo mismo para mi último texto pegado.

El gato no divertido
fuente
Parece que le estás pidiendo a alguien que te escriba un paquete ...
wasamasa
Estaba pensando que esto tenía que existir. Intentaré hacerlo yo mismo entonces.
The Unfun Cat

Respuestas:

5

En mi .vimrctengo

nnoremap <leader>v '[V']

para hacer exactamente esto

Sorprendentemente, la secuencia '[V']funciona evilbien. Para tener un acceso directo en Emacs, escribí la siguiente función:

(defun my/evil-select-pasted ()
  (interactive)
  (let ((start-marker (evil-get-marker ?\[))
        (end-marker (evil-get-marker ?\])))
        (evil-visual-select start-marker end-marker)))

La función se puede unir a, por ejemplo <leader>vusando evil-leader:

(evil-leader/set-key "v" 'my/evil-select-pasted)

Soy relativamente nuevo en Emacs, por lo que esto podría no ser ideal, pero funciona para mí.

Cómo llegué allí:

C-h k 'muestra que 'corre evil-goto-mark-line. Mirando la fuente en evil-commands.elmuestra que evil-goto-mark-lineutiliza evil-goto-mark, que en sí hace uso de la evil-get-markerfunción. Mirar evil-states.el, encontrado con C-h k V, conduce a la evil-visual-selectfunción.

Andreas
fuente
No funciona en los spacemacs, pero acepta de todos modos, ya que especifiqué mal :)
The Unfun Cat
funciona para mí en los últimos spacemacs, rama de desarrollo.
Meitham
2

Cuando utilicé la solución @andreas para seleccionar el último texto pegado e intenté cambiar la sangría y luego repetir la sangría con .( evil-repeat) me dio errores. Tuve que modificar la función para que sea así, que ahora funciona bien para mí:

(defun evil-select-pasted ()
  "Visually select last pasted text."
  (interactive)
  (evil-goto-mark ?\[)
  (evil-visual-char)
  (evil-goto-mark ?\]))
ZzAntáres
fuente