aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md4
-rw-r--r--vterm.el18
2 files changed, 21 insertions, 1 deletions
diff --git a/README.md b/README.md
index 308621b..8dc78c6 100644
--- a/README.md
+++ b/README.md
@@ -57,6 +57,10 @@ Open a terminal in the current window.
## `vterm-other-window`
Open a terminal in another window.
+## `vterm-copy-mode`
+When you enable `vterm-copy-mode`,the terminal buffer would behave like a normal `read-only` text buffer.
+Then you can search in the output terminal, copy text, etc.
+the default keybinding is `C-cC-t`.
# Customization
diff --git a/vterm.el b/vterm.el
index 1c9e8f4..da80143 100644
--- a/vterm.el
+++ b/vterm.el
@@ -232,7 +232,7 @@ If nil, never delay")
:name "vterm"
:buffer (current-buffer)
:command `("/bin/sh" "-c"
- ,(format "stty -nl sane iutf8 erase ^? rows %d columns %d >/dev/null && exec %s"
+ ,(format "stty -nl sane ixon iutf8 erase ^? rows %d columns %d >/dev/null && exec %s"
(window-body-height)
(window-body-width)
vterm-shell))
@@ -262,6 +262,7 @@ If nil, never delay")
(define-key vterm-mode-map (kbd "C-_") #'vterm--self-insert)
(define-key vterm-mode-map (kbd "C-SPC") #'vterm--self-insert)
(define-key vterm-mode-map (kbd "C-/") #'vterm-undo)
+(define-key vterm-mode-map (kbd "C-c C-t") #'vterm-copy-mode)
;; Function keys and most of C- and M- bindings
(mapc (lambda (key)
@@ -276,6 +277,21 @@ If nil, never delay")
unless (member key vterm-keymap-exceptions)
collect key))))
+(defvar vterm-copy-map (make-sparse-keymap))
+(define-key vterm-copy-map (kbd "C-c C-t") #'vterm-copy-mode)
+
+(define-minor-mode vterm-copy-mode
+ "Toggle vterm copy mode."
+ :group 'vterm
+ :lighter " VTermCopy"
+ :keymap vterm-copy-map
+ (if vterm-copy-mode
+ (progn ;enable vterm-copy-mode
+ (use-local-map nil)
+ (vterm-send-key "s" nil nil t))
+ (use-local-map vterm-mode-map)
+ (vterm-send-key "q" nil nil t)))
+
(defun vterm--self-insert ()
"Sends invoking key to libvterm."
(interactive)