在 vterm-mode 里面默认使用的是 C-c C-c 来执行 C-c 的,有没有办法直接使用 C-c ? 默认 C-c 好像是个 prefix,一堆命令在上面。。。
(with-eval-after-load 'vterm
(evil-define-key 'insert vterm-mode-map (kbd "C-c") 'vterm-send-C-c))
我这没有 evil-define-key ,不过我试过使用 doom eamcs 提供的 map! 改过,改完之后会提示 shadowed .
C-c vterm-send-C-c
(that binding is currently shadowed by another mode)
我就是这样的。
还有一点,如果你是zsh vim mode用户的话,必须还要处理esc到底发给谁。
;;; ~/conf/emacs/doom/term.el -*- lexical-binding: t; -*-
(after! (vterm evil-collection)
(add-hook!
'vterm-mode-hook
;; evil-collection for vterm overrided some keymaps defined by tmux-pane
(evil-collection-define-key 'insert 'vterm-mode-map
(kbd "C-h") (lambda () (interactive) (tmux-pane--windmove
"left"
"tmux select-pane -L"))
(kbd "C-j") (lambda () (interactive) (tmux-pane--windmove
"down"
"tmux select-pane -D"))
(kbd "C-k") (lambda () (interactive) (tmux-pane--windmove
"up"
"tmux select-pane -U"))
(kbd "C-l") (lambda () (interactive) (tmux-pane--windmove
"right"
"tmux select-pane -R")))
;; change keymap to toggle sending escape to vterm
(evil-collection-define-key '(normal insert) 'vterm-mode-map
(kbd "C-c") 'vterm--self-insert
;; for CLI emacs
(kbd "ESC <escape>") 'evil-collection-vterm-toggle-send-escape
;; for GUI emacs
(kbd "M-<escape>") 'evil-collection-vterm-toggle-send-escape)
;; send escape to vterm by default
(evil-collection-vterm-toggle-send-escape)))
C-c 不就是中断当前的执行吗?按 Enter 是执行当前的命令吧?
我现在换用 Evil 模式了,才发现直接 C-c 就可以用了。用 Doom emacs 还是用 Evil 模式吧。。
Hello @wd1,
我发现我用了,上面的这个配置以后。
输入完命令以后必须要先按Esc后,在按 Enter 才可以执行当前的命令。 有没有什么办法,我可以不用按Esc,直接按Enter 就执行当前的命令? 谢谢