2014-07-14 137 views
1

我想在term-mode中使用缩写词或类似的东西,而不是创建shell别名。原因在于ssh在某处存在别名并具有别名是很好的。带自动扩展的Emacs缩写模式(不带空格)

令人烦恼的是,我需要点击缩略图以扩展空间。例如,如果我有一个经常使用的名为l5的简短别名,我不希望每次都为两个char事物命中空格。

如何让它在没有空间的情况下展开?也许在打入?

回答

1

函数expand-abbrev将在点处扩大缩写。在self-insert-command的内部功能中处于缩写模式下的扩展级别较低,因此您不能只指定新的密钥。

然而,您可以在发送shell输入之前找到运行expand-abbrev的方法。

无论您使用的是shell还是term,它都可能非常棘手。在发送文本之前,您可能分别建议comint-send-inputterm-send-raw确定性地运行expand-abbrev

这里是支持空间返回缩写扩张term一个例子。

(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)))))