Solution for meta/escape in terminal mode
I really like evil under X, but find it nearly unusable in a terminal due to escape/meta clashing in insert mode. I currently use exactly one meta keybinding in insert mode (M-Tab) and hardly ever press tab in normal mode, so ideally I'd like to supress all meta bindings except M-Tab while in insert mode. -Jason
On Tue, Apr 24, 2012 at 04:08:58PM -0700, Jason Miller wrote:
I really like evil under X, but find it nearly unusable in a terminal due to escape/meta clashing in insert mode. I currently use exactly one meta keybinding in insert mode (M-Tab) and hardly ever press tab in normal mode, so ideally I'd like to supress all meta bindings except M-Tab while in insert mode.
M- keybindings are usually placed in a keymap under the ESC prefix key, so you could, e.g., replace the binding on ESC by some direct command: (define-key evil-insert-state-map (kbd "ESC") #'evil-force-normal-state) But this would disable M-TAB as well. There is, afaik, no easy way to get both because you can only have either the direct command bound to ESC or the prefix-map. But I think I do not understand your problem. What *exactly* does not work as you expect? Evil tries to deal with escape/meta in terminal mode (by doing some magic with a command bound to ESC which sometimes behaves like a prefix-map) and it should work in almost all cases. If it does not work we would like to know the exact situation when this happens. And for problems with terminal mode it is important to know which terminal you use and if you use a terminal multiplexer like screen or tmux. Frank
Hi Frank, I just ran a few tests and the problem does only appear to be an issue under tmux, when I use a bare terminal (rxvt-unicode) everything works fine. An example of the problem would be from insert mode quickly pressing ESC k, which I expect to exit insert mode and move up a line. Under tmux it just says "End of buffer" and remains in insert mode. -Jason On 08:40 Wed 25 Apr , Frank Fischer wrote:
On Tue, Apr 24, 2012 at 04:08:58PM -0700, Jason Miller wrote:
I really like evil under X, but find it nearly unusable in a terminal due to escape/meta clashing in insert mode. I currently use exactly one meta keybinding in insert mode (M-Tab) and hardly ever press tab in normal mode, so ideally I'd like to supress all meta bindings except M-Tab while in insert mode.
M- keybindings are usually placed in a keymap under the ESC prefix key, so you could, e.g., replace the binding on ESC by some direct command:
(define-key evil-insert-state-map (kbd "ESC") #'evil-force-normal-state)
But this would disable M-TAB as well. There is, afaik, no easy way to get both because you can only have either the direct command bound to ESC or the prefix-map.
But I think I do not understand your problem. What *exactly* does not work as you expect? Evil tries to deal with escape/meta in terminal mode (by doing some magic with a command bound to ESC which sometimes behaves like a prefix-map) and it should work in almost all cases. If it does not work we would like to know the exact situation when this happens.
And for problems with terminal mode it is important to know which terminal you use and if you use a terminal multiplexer like screen or tmux.
Frank
_______________________________________________ implementations-list mailing list [email protected] https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementations-list
Add the following in your .tmux.conf: set -s escape-time 0 Frank explained the cause of this issue in the ticket below: https://bitbucket.org/lyro/evil/issue/69/delay-between-esc-or-c-and-modeswit... On Wednesday, April 25, 2012 at 11:43 AM, Jason Miller wrote:
Hi Frank,
I just ran a few tests and the problem does only appear to be an issue under tmux, when I use a bare terminal (rxvt-unicode) everything works fine.
An example of the problem would be from insert mode quickly pressing ESC k, which I expect to exit insert mode and move up a line. Under tmux it just says "End of buffer" and remains in insert mode.
-Jason
On 08:40 Wed 25 Apr , Frank Fischer wrote:
On Tue, Apr 24, 2012 at 04:08:58PM -0700, Jason Miller wrote:
I really like evil under X, but find it nearly unusable in a terminal due to escape/meta clashing in insert mode. I currently use exactly one meta keybinding in insert mode (M-Tab) and hardly ever press tab in normal mode, so ideally I'd like to supress all meta bindings except M-Tab while in insert mode.
M- keybindings are usually placed in a keymap under the ESC prefix key, so you could, e.g., replace the binding on ESC by some direct command:
(define-key evil-insert-state-map (kbd "ESC") #'evil-force-normal-state)
But this would disable M-TAB as well. There is, afaik, no easy way to get both because you can only have either the direct command bound to ESC or the prefix-map.
But I think I do not understand your problem. What *exactly* does not work as you expect? Evil tries to deal with escape/meta in terminal mode (by doing some magic with a command bound to ESC which sometimes behaves like a prefix-map) and it should work in almost all cases. If it does not work we would like to know the exact situation when this happens.
And for problems with terminal mode it is important to know which terminal you use and if you use a terminal multiplexer like screen or tmux.
Frank
_______________________________________________ implementations-list mailing list [email protected] (mailto:[email protected]) https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementations-list
_______________________________________________ implementations-list mailing list [email protected] (mailto:[email protected]) https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementations-list
Thanks, That fixed it. Stupid tmux. -Jason On 12:06 Wed 25 Apr , Mark Tran wrote:
Add the following in your .tmux.conf:
set -s escape-time 0
Frank explained the cause of this issue in the ticket below:
https://bitbucket.org/lyro/evil/issue/69/delay-between-esc-or-c-and-mod eswitch#comment-974045
On Wednesday, April 25, 2012 at 11:43 AM, Jason Miller wrote:
Hi Frank, I just ran a few tests and the problem does only appear to be an issue under tmux, when I use a bare terminal (rxvt-unicode) everything works fine. An example of the problem would be from insert mode quickly pressing ESC k, which I expect to exit insert mode and move up a line. Under tmux it just says "End of buffer" and remains in insert mode. -Jason On 08:40 Wed 25 Apr , Frank Fischer wrote:
On Tue, Apr 24, 2012 at 04:08:58PM -0700, Jason Miller wrote:
I really like evil under X, but find it nearly unusable in a terminal due to escape/meta clashing in insert mode. I currently use exactly one meta keybinding in insert mode (M-Tab) and hardly ever press tab in normal mode, so ideally I'd like to supress all meta bindings except M-Tab while in insert mode.
M- keybindings are usually placed in a keymap under the ESC prefix key, so you could, e.g., replace the binding on ESC by some direct command: (define-key evil-insert-state-map (kbd "ESC") #'evil-force-normal-state) But this would disable M-TAB as well. There is, afaik, no easy way to get both because you can only have either the direct command bound to ESC or the prefix-map. But I think I do not understand your problem. What *exactly* does not work as you expect? Evil tries to deal with escape/meta in terminal mode (by doing some magic with a command bound to ESC which sometimes behaves like a prefix-map) and it should work in almost all cases. If it does not work we would like to know the exact situation when this happens. And for problems with terminal mode it is important to know which terminal you use and if you use a terminal multiplexer like screen or tmux. Frank _______________________________________________ implementations-list mailing list [1][email protected] [2]https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementation s-list
_______________________________________________ implementations-list mailing list [3][email protected] [4]https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementation s-list
References
1. mailto:[email protected] 2. https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementations-list 3. mailto:[email protected] 4. https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementations-list
_______________________________________________ implementations-list mailing list [email protected] https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementations-list
participants (3)
-
Frank Fischer -
Jason Miller -
Mark Tran