Evil-emacs: como selecionar o último texto colado (como gv)?


7

Como seleciono visualmente o último texto colado evil-emacs?

gvseleciona novamente a última seleção visual. Gostaria de uma função / snippet que faça o mesmo no meu último texto colado.


Parece que você está pedindo alguém para escrever um pacote ...
wasamasa

Eu estava pensando que isso deveria existir. Vou tentar fazer isso sozinho então.
The Unfun Cat

Respostas:


5

No meu .vimrceu tenho

nnoremap <leader>v '[V']

para fazer exatamente isso.

Surpreendentemente, a sequência '[V']funciona evilmuito bem. Para ter um atalho no Emacs, escrevi a seguinte função:

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

A função pode ser vinculada, por exemplo, <leader>vusando evil-leader:

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

Sou relativamente novo no Emacs, portanto isso pode não ser o ideal, mas funciona para mim.

Como cheguei lá:

C-h k 'mostra que 'é executado evil-goto-mark-line. Observar a fonte em evil-commands.elshows que evil-goto-mark-lineusa evil-goto-mark, que por si só faz uso da evil-get-markerfunção. Olhar evil-states.el, encontrado com C-h k V, leva à evil-visual-selectfunção.


Não funciona no spacemacs, mas aceita tudo a mesma coisa, desde que eu especifiquei o mal :)
The Unfun Cat

funciona para mim no mais recente spacemacs, dev branch.
Meitham

2

Ao usar a solução @andreas para selecionar o último texto colado e tentar alterar o recuo nele e, em seguida, repetir o recuo com .( evil-repeat), ocorreram erros. Eu tive que modificar a função para ficar assim, que agora funciona bem para mim:

(defun evil-select-pasted ()
  "Visually select last pasted text."
  (interactive)
  (evil-goto-mark ?\[)
  (evil-visual-char)
  (evil-goto-mark ?\]))
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.