Evil-Emacs: Wie wählt man zuletzt eingefügten Text aus (wie gv)?


7

Wie wähle ich den zuletzt eingefügten Text visuell aus evil-emacs?

gvwählt die letzte visuelle Auswahl erneut aus. Ich möchte eine Funktion / ein Snippet, die das Gleiche für meinen zuletzt eingefügten Text tut.


Klingt so, als würden Sie jemanden bitten, Ihnen ein Paket zu schreiben ...
wasamasa

Ich dachte, so etwas müsste existieren. Ich werde es dann selbst versuchen.
Die Unfun Cat

Antworten:


5

In meinem .vimrchabe ich

nnoremap <leader>v '[V']

genau das zu tun.

Erstaunlicherweise '[V']funktioniert die Sequenz evileinwandfrei. Um eine Verknüpfung in Emacs zu haben, habe ich die folgende Funktion geschrieben:

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

Die Funktion kann zB gebunden werden <leader>vmit evil-leader:

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

Ich bin relativ neu bei Emacs, daher ist dies möglicherweise nicht ideal, aber es funktioniert für mich.

Wie ich dorthin gekommen bin:

C-h k 'zeigt, dass 'läuft evil-goto-mark-line. Ein Blick auf die Quelle in evil-commands.elzeigt, dass evil-goto-mark-lineverwendet evil-goto-mark, die selbst die evil-get-markerFunktion nutzt . Betrachten evil-states.el, gefunden mit C-h k V, führt zur evil-visual-selectFunktion.


Funktioniert nicht in Spacemacs, akzeptiert aber trotzdem, da ich das Böse angegeben habe :)
The Unfun Cat

arbeitet für mich in den neuesten Spacemacs, Dev Branch.
Meitham

2

Bei Verwendung der @ andreas-Lösung zur Auswahl des zuletzt eingefügten Textes und beim Versuch, den Einzug darauf zu ändern und dann den Einzug mit .( evil-repeat) zu wiederholen , gab es Fehler. Ich musste die Funktion so ändern, dass sie jetzt für mich gut funktioniert:

(defun evil-select-pasted ()
  "Visually select last pasted text."
  (interactive)
  (evil-goto-mark ?\[)
  (evil-visual-char)
  (evil-goto-mark ?\]))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.