diff options
| author | jixiuf <jixiuf@qq.com> | 2019-08-01 11:04:43 +0800 |
|---|---|---|
| committer | jixiuf <jixiuf@qq.com> | 2019-08-01 23:14:11 +0800 |
| commit | d0225168a726144e699f6b049e98e167daf0705f (patch) | |
| tree | 0e0a157354bd4e7c638138428f91d56845a6d94a | |
| parent | f018462e1b533c74c458bfbb2a0a4b5a1622b982 (diff) | |
add 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`.
| -rw-r--r-- | README.md | 4 | ||||
| -rw-r--r-- | vterm.el | 18 |
2 files changed, 21 insertions, 1 deletions
@@ -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 @@ -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) |
