我想在term-mode中使用abbrev或类似的东西而不是创建shell别名。原因是ssh在某处并且可以使用别名是很好的。
令人烦恼的是,我需要打空间才能扩展缩写。例如,如果我有一个经常使用的名为l5
的短别名,我不希望每次都有空格来获取两个字符。
如何在没有空间的情况下展开它?也许在击中进入?
答案 0 :(得分:1)
函数expand-abbrev
将扩展点的缩写。缩写模式下的扩展在self-insert-command
的内部函数内处理较低,因此您不能只指定新密钥。
但是,您可以在向shell发送输入之前找到运行expand-abbrev
的方法。
无论您使用的是shell还是term,都可能很棘手。在发送文本之前,您可以分别建议comint-send-input
或term-send-raw
确定地运行expand-abbrev
。
以下是在term
中支持 space 和 return 缩写扩展的示例。
(defadvice term-send-raw (before maybe-expand-in-term activate)
(when (called-interactively-p)
(let ((keys (this-command-keys)))
;; if key was enter or space, expand abbrev at point
(when (or (equal keys (string 13))
(equal keys " "))
(expand-abbrev)))))