λ 等拉丁字符一般怎么输入啊?

忽然觉得对于很常用的单参数匿名函数,搞个简单又优雅的语法
以前我是用$(+ $1 $2 $3) ,单参数时用*代表参数名 $(+ 1 2 *)
现在觉得相对λ 来说$没那么优雅,所以替换下:

(defun lambda-char (stream char)
  "A lambda with only ONE arg _"
  (declare (ignore char))
  (let ((codes (read stream nil)))
    `(lambda (_) ,codes)))

(set-macro-character #\λ #'lambda-char t)   
λ(+ 1 2 _) ; => (lambda (_) (+ 1 2 _))

但是λ这类希腊字符一般大家是怎么输入的啊? 我现在只能在 emacs 绑定个快捷键(或者 yas)

(defun λ ()
  (interactive)
  (insert "λ()")
  (left-char 1))
(global-set-key (kbd "M-l") 'λ)
`

更优雅的办法不是用 overlay 这种替换所有 lambda 吗(只修改显示效果)?而不是去修改原有代码,emacs 自带

http://ergoemacs.org/emacs/emacs_pretty_lambda.html

一般拼音输入法都可以输入希腊字母,输入英文名 lambda 试试

难道不是用 C-u C-\ Tex RET 吗?

1 个赞

emacs原生的特殊字符输入: 按键 C-x 8。lambda在 insert-char里搜索。

如果要频繁使用特殊字符还是用现成的插件方便。

2 个赞

可以抄一下 类似TeXmacs转化特殊字符的命令

我的解决方案是 C-x & l

https://gitee.com/chriszheng/dotEmacs/blob/master/.init/my-key-bindings.el#L159

1 个赞

可以试一下:company-math

我突然想起来,之前在这个论坛里还发过一个类似的帖子:请问怎么在文本注释里嵌入一些准富文本的东西

这里面你应该能找到你想要的。

用的不多的话,RIME也可以,输入/xl/xld分别是两个列表对应希腊字母及其大写。