從M-x在term Major下衝突後提出的幾個問題?

窩在konsole裏type M-x後會彈出execute:

~ %       
execute: _

term Major modeM-x後也會有這樣的現象, 而在shell Major modeM-x就能彈出輸入emacs commond的界面了.

  • Q1: What is the difference between shell, eshell, and term in Emacs? - Unix & Linux Stack Exchange mode的區別, 不過窩沒有相通爲什麼在這裏它們對M-x`會有這樣的區別呢
  • Q2: term Major mode下可以用C-c M-x helm-M-x調出helm來輸入命令, 但是這樣太冗長了, 然後窩(define-key term-mode-map (kbd "C-c M-x") 'helm-M-x)後希望鍵入C-x M-x直接用helm輸入命令, 但是沒有成功, C-x M-x後仍然是自帶的輸入命令模式, 沒有調用helm. 請問這是爲什麼呢? 該如何解決?
  • Q3: 本來窩M-x後會自動起C-c M-x helm-M-x的作用, 即直接會調用helm, 但是窩將剛剛設置的define-key重新註釋掉, 也就是說我的spacemacs回到原樣後, 發現M-x不會自動調用helm了. 但是窩比起之前除了加了行註釋並沒有做什麼更改呀, 請問這是爲什麼, 以及如何回到原來的狀態(M-x自動調用helm)
  • Q4: 本以爲M-x調出executezsh有關, 然後在konsole下使用bash, 雖然execute:沒有彈出, 但是在term major mode下使用bash依然無法生效, 毫無反映. 看來是的確是term major mode的問題. 但是窩換個終端, 用Xterm, 在zsh下, execute:無法彈出, 懷疑是XtermM-x也衝突了, 但是term major mode + zsh是有execute彈出的, 俺感覺十分混亂呀.
  • Q5: 這個execute:是幹什麼用的呀? 因爲窩無法定位到是shell還是terminal還是其它變量和它有關, 所以窩google無從下手, 搜了好久也沒什麼結果(而且這個keyword本身比較多義)

希望各位老大們幫忙下, 小弟提前謝過.

回答 Q1

term-mode 默认开启 term-char-mode.

(term-char-mode)
Switch to char (“raw”) sub-mode of term mode.
Each character you type is sent directly to the inferior without
intervention from Emacs, except for the escape character (usually C-c).

shell-mode 需要 return 才会把该行送到子进程里.

term-line-mode 可以让 term-mode 表现得和 shell-mode 一样. 也可以使用 multi-term 解决 M-x 的问题

非常感謝, 學到了.

这跟 Emacs 的 M-x 是一个意思,execute: 是提示符,让你可以通过「函数名」而不是「快捷键」来执行一个命令,比如 Zsh 中,C-eM-x end-of-line 的作用相同;在 Emacs 中,C-eM-x move-end-of-line 的作用相同。

學到了, 非常感謝老大, 剛剛才發現 http://bolyai.cs.elte.hu/zsh-manual/zsh_14.html 這裏有函數名列表. 不過這樣搜: "zsh" + "end-of-line" - Google Search 貌似依舊資料比較少. 所以感覺貌似zsh用戶還是快捷鍵用得多, M-x + 函數名受衆很小呀.

Tab 补全也能知道有哪些命令可用。

也對, 剛剛試了下, 貌似模糊搜素挺好用的.