summaryrefslogtreecommitdiff
path: root/modes/vterm
diff options
context:
space:
mode:
authorSteven Allen <steven@stebalien.com>2024-02-03 15:25:57 -0800
committerYoumu <condy0919@gmail.com>2024-02-05 09:44:07 +0800
commit29212d123f1d2622332c02ca55b3a81faee1af76 (patch)
tree34e7b9f72b212c9f1e330415172d3fe2cdabd0b4 /modes/vterm
parent8c84f9bc89fe56e71b56519f886085ddcbc671cf (diff)
vterm: implement replace
Implements evil's "replace" operator ("r") for vterm.
Diffstat (limited to 'modes/vterm')
-rw-r--r--modes/vterm/evil-collection-vterm.el10
1 files changed, 10 insertions, 0 deletions
diff --git a/modes/vterm/evil-collection-vterm.el b/modes/vterm/evil-collection-vterm.el
index bafef53..ccc9edc 100644
--- a/modes/vterm/evil-collection-vterm.el
+++ b/modes/vterm/evil-collection-vterm.el
@@ -75,6 +75,7 @@ also uses `evil-mode'."
(declare-function vterm-cursor-in-command-buffer-p "vterm")
(declare-function vterm-beginning-of-line "vterm")
+(declare-function vterm-insert "vterm")
(evil-define-motion evil-collection-vterm-first-non-blank ()
"Move the cursor to the first non-blank character
@@ -199,6 +200,14 @@ Save in REGISTER or in the kill-ring with YANK-HANDLER."
(t
(evil-collection-vterm-delete beg line-end type register yank-handler)))))
+(evil-define-operator evil-collection-vterm-replace (beg end type register yank-handler)
+ :motion evil-forward-char
+ (interactive "<R>")
+ (let ((replacement (make-string (- end beg) (read-char))))
+ (evil-collection-vterm-delete beg end type register yank-handler)
+ (vterm-insert replacement)
+ (vterm-goto-char (1- end))))
+
(evil-define-operator evil-collection-vterm-change (beg end type register yank-handler)
(evil-collection-vterm-delete beg end type register yank-handler)
(evil-collection-vterm-insert))
@@ -280,6 +289,7 @@ But don't allow the cursor to move bellow the last prompt line."
"i" 'evil-collection-vterm-insert
"I" 'evil-collection-vterm-insert-line
"u" 'vterm-undo
+ "r" 'evil-collection-vterm-replace
"c" 'evil-collection-vterm-change
"C" 'evil-collection-vterm-change-line
"s" 'evil-collection-vterm-substitute