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.