我比较喜欢用tmux
然后经常要打开程序看,然后如果在嵌入终端中,打开emacs
浏览程序
emacs-snapshot -nw xxx.c
这样挺好的,但是要编辑的时候,快捷键就和终端的快捷键全部混在一起,以终端的快捷键为准了,
例如我按F12
就会输出24~
这个玩意,F10
就是21~
。
感觉终端打开文件不如vim
来得方便呀。
这个问题能解决吗。如果tmux
其中一个分割窗口打开emacs
,这个界面的快捷键以emacs
的为准.
我比较喜欢用tmux
然后经常要打开程序看,然后如果在嵌入终端中,打开emacs
浏览程序
emacs-snapshot -nw xxx.c
这样挺好的,但是要编辑的时候,快捷键就和终端的快捷键全部混在一起,以终端的快捷键为准了,
例如我按F12
就会输出24~
这个玩意,F10
就是21~
。
感觉终端打开文件不如vim
来得方便呀。
这个问题能解决吗。如果tmux
其中一个分割窗口打开emacs
,这个界面的快捷键以emacs
的为准.
设置问题?我在-Q环境下没问题。另外我记得以前设置什么theme还是vertico之类的就会导致F键在nw下乱码,不清楚具体原因。
我的测试:
$ tmux
$ emacs --version | head -n2
GNU Emacs 30.0.50
Development version db7e95531ac3 on makepkg branch; build date 2023-03-25.
$ emacs -nw -Q
F12
<f12> is undefined
C-x C-f /tmp/1.c RET
F12
<f12> is undefined
环境:wayland(sway),zsh,alacritty,fcitx,无tmux配置,外部term=xterm-color256,内部term=tmux-color256。试着改下term看有没有用。
你若感兴趣可以筛查一下你的设置,看是加载了哪些包或是设置了哪些值导致了这样的结果。
这是终端模拟器的问题吧, 你换个没什么快捷键的终端.
例如楼上用的,或者 xfc4-terminal/st/kitty 之类的,试试看冲突不.
你应该是因为绑定了 ESC 有关的键位,比如 M-[
, M-]
, 或者是单纯的就是 ESC
。因为在终端里面 F-key 的 keycode 的前缀 sequence 就是 escape sequence,所以导致 emacs 无法识别完整的 F-key 的 sequence,首先所有的 ESC 有关的键位绑定最好都改成 <escape>
,其次不要绑定 M-[
, M-]
。
一个具体的例子
好像确实是这个原因,我发现太多按键冲突了。屏蔽M-[
和M-]
之后。
M-<left>
,C-S-a
之类的,依然失效。但是M-w
又没事,奇奇怪怪的,妥协了。
这个似乎要大改按钮防止冲突。
在终端里面,M+xxx 的 key sequence 就是 escape sequence + xxx,所以在终端里面 M + 数字或者 + 大小写字母或者 + 标点符号(除了 ][
)都是可以正常绑定的。
但是 M-方向键之类的因为没有对应的 keysequence 所以绑不了,然后所有的 C-S-xxx 都绑不了,同样是没有对应的 keysequence。
个人感觉用 emacs 没有必要再用 tumux. emacs 开启 daemon, 然后后续使用 emacsclient 连进来,剩下操作 都是在 Emacs 里面完成,哪怕终端被关闭了也没有关系。
不用 tmux
wayland 中的 emacs daemon 一直有bug,没办法这么用。
Due to a limitation in GTK 3, Emacs built with PGTK will simply exit when a
display connection is closed. The problem is especially difficult to fix,
such that Emacs on Wayland with multiple displays is unlikely ever to be able
to survive disconnects.
有个很好的解决方案:在emacs里有个包叫kkp,然后再用一个支持kitty keyboard protocol的terminal就行了,比如kitty,wezterm。 这个protocol应该是kitty为社区作出的巨大贡献。
仔细调整快捷键,让他们和谐相处是一个要花点时间,花点心思的事情。
调整好之后,一切都是值得的。
我的i3, konsole, tmux, emacs, bash就相处的很好。
这个bug并不影响终端里的使用吧。我开emacsclient gui窗口是不行,但是终端里用就没这个问题。
我一直拿tmux当emacslcient的tab来用。比emacs自己的layout好使。
我是用上 daemon 之后,彻底抛弃了 screen 和 tmux
我一致就是在终端下tmux + emacsclient 用的。已经很久没开过gui的emacs了。在本机也是如此。
daemon不能完全取代tmux吧?
可能的解法 key bindings - Problems with keybindings when using terminal - Emacs Stack Exchange
大致总结一下:
方式1
方式2 tarsius的回复 key bindings - Problems with keybindings when using terminal - Emacs Stack Exchange
方式3 等emacs自己修 bug#54027: Wishlist: Support full CSI u specification for terminal input
这个看个人的使用情况吧,对于我的日常使用来说,是可以替代。
我用 tmux 也就是建多个可以保持的终端而已,这个可以通过在 emacs 里面启动多个 vterm 来替代,无论是 vterm 里面还是 emacs daemon 中跑的程序或者命令,在 emacsclient 断开以后还是可以继续跑,所以对我来说可以替代。