Wie wähle ich den zuletzt eingefügten Text visuell aus evil-emacs
?
gv
wä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.
Wie wähle ich den zuletzt eingefügten Text visuell aus evil-emacs
?
gv
wä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.
Antworten:
In meinem .vimrc
habe ich
nnoremap <leader>v '[V']
genau das zu tun.
Erstaunlicherweise '[V']
funktioniert die Sequenz evil
einwandfrei. 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>v
mit 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.el
zeigt, dass evil-goto-mark-line
verwendet evil-goto-mark
, die selbst die evil-get-marker
Funktion nutzt . Betrachten evil-states.el
, gefunden mit C-h k V
, führt zur evil-visual-select
Funktion.
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 ?\]))