如何别名emacs --eval"(ediff ...)"在c-shell中

时间:2015-08-23 16:02:10

标签: shell alias csh

我一直在寻找一种方法来对emacs ediff进行别名,以便在c-shell中使用。 在编写emacs --eval "(ediff "f1" "f2")"时,emacs以ediff模式打开,将文件f1与文件f2进行比较 但是,在尝试对其进行别名时,我没有找到从命令行插入文件名的方法。
以下代码适用于bash,但不适用于c-shell(因为c-shell don't support functions):

function ediff() {  
    emacs --eval "(ediff \"$1\" \"$2\")"}  

也尝试了emacs --eval "(ediff \!*)",但它也没有效果 有人知道这种别名的方法吗?

修改
根据评论中的建议,我创建了一个名为ediff的bash脚本,它所做的只是emacs --eval "(ediff \"$1\" \"$2\")" 无法使csh甚至eval \" $ 1 \"

1 个答案:

答案 0 :(得分:0)

使用单引号,但对于!:1之类的参数请使用单引号。还可以使用\来对双引号,!,空格和括号进行转义。

结果是:

alias ediff emacsclient --eval '\(ediff-files\ \"'\!:1'\"\ \"'\!:2'\"\)'