[求教]把elisp手册基本看了一遍,现在不知道能如何来练习elisp编程,求教大佬给点建议

看了一遍elisp的手册,大概了解了lisp数据类型还有buffer\file等常用的函数,现在就很迷茫,感觉不知道能用elisp来做点什么,能想到的就是创建个buffer往里面写入或者读出内容什么的.整个学习elisp的过程都充满挫败感,看了一个章节,知道了一些概念,但是不知道能用来做什么,不知道到底该用什么思路去学习

你用Emacs的过程中不可能所有东西都顺手的,不顺手就尝试去改,遇到问题就尝试去修复,这不就用上elisp了。

4 个赞

可以刷刷题, 还能学习别人的写法: Emacs Lisp on Exercism

可以从自己最常用的插件开始改起来.

1 个赞

发现有的插件不能满足自己,就会开始魔改插件写elisp,我刚开始都是用ai改的,看不懂ai写的,去学了学elisp

1 个赞

大佬,我现在会修改简单的配置,但是也都是按照package的说明来设置参数什么的,要自己实现功能,简单的还行,复杂的就不知道怎么写,就是有一种怎么都入不了门的感觉 :face_with_spiral_eyes:

不会写就看你抄来的怎么写的,不懂就问AI(但要保持质疑的态度)。现在AI是快速学习一个新手领域很好的老师。

就好比,学c语言,书上有从hello world到链表到二叉的简单例子,可以教给你怎么写,然后你可以循序渐进的知道学什么以及怎么实现,但是到了emacs就是有种完全靠自学的感觉,完全没有正反馈 :sob:

你要从你的需求出发,为什么现在vibe coding上瘾,就是因为快速给予需求被满足的快感。配置 Emacs 也同样有这种快感,前提是需要从你实际需求触发。比如我的实际需求就是在emacs内配置好elgot以及dape,兼容jdk低版本的开发以及tomcat的build deploy的整个流程。要跑通这个流程势必是要自己写自定义函数(胶水)去糊的,糊通的时候就是快感(正反馈)来临的时候,先糊,然后再纠结写的质量。

3 个赞

能看完elisp手册真厉害,像楼主学习,目前进度5.4

没看过手册,我都是在使用org-mode过程中遇见一些痒点痛点然后查相关函数代码,问AI,执行看结果,这样一步步糊出来几段函数

方法1:地狱

先把电脑上所有的软件都删了,然后只安装一个emacs,尝试用elisp解决所有需求。

方法2:便乘

找一个十年不退坑的老人,使用git fork吸走他的十年功力。

5 个赞

真有人能把 elisp 手冊看完?不会看的是 eintr 吧?

建议先读一遍 Emacs Lisp Elements,对 Emacs、Elisp 能做的事情有个整体认识,再基于需求在练习和错误里熟悉 Elisp。

我也不太会写,我觉得难点在于怎么调试,以及在想写某些逻辑的时候,不知道有什么东西可以用。后者可以借助 LLM,然后从 LLM 的代码里学习语法。

说到底,就是多看多练吧。

1 个赞

啊就是info里面的elisp我也不知道那个是不是手册,内容也不少

感觉你有点太浮躁了,抄抄网友萌的配置,把Emacs里奇怪的地方改掉,用得舒服了再做其他事情(笔记,输入法,邮件etc.)

我當初看完 Elisp Intro 也是同感,之後看了《Writing GNU Emacs Extensions》才有了「大部分插件我都可以 hack 了」的掌握感。推薦樓主試試,雖然這本書很多細節已經過時了,但用於建立“思維框架”足矣

啥也不学直接开始用 emacs → 装点插件 → 干点活 → 卧槽这个地方要是能 xxx 就好了 → 鞭策 ai 改插件 → review → elisp 高手

1 个赞

如楼上几位道友所述,有需求才有应用。我认为:

  1. 对 ELisp 能做的事情有个大概的概念
  2. 遇到一个好像可以通过 ELisp 解决的事情

这样就足以产生驱动力,抄起 ELisp 去干些实在的活了,在干活的过程中总能学到一大堆东西。


以我最近的某次配置为例:

  • 使用 GUI 版 Emacs 时,发现按下C-c C-c,Org 表格会自己歪掉,某些单元格的宽度较对齐所需宽度窄
  • 和AI助手讨论,注意到对于 Latin 字符,我让 Org 表格用Sarasa Mono SC,默认则是用Fira Mono,这两个字体的字符显示宽度不同,猜测表格歪掉可能与此有关
  • C-h k C-c C-c开始追踪源代码,借助AI理解代码逻辑,顺着org-ctrl-c-ctrl-corg-table-alignorg-string-width 一路寻找
  • org-string-width中,有一个临时 buffer " *Org string width*"用于计算字符显示宽度,推断:为 Org 表格专门设置的字体在临时 buffer 并未生效,导致计算结果错误
  • 针对症结,参考AI助手的建议,打了一个“上下文注入”补丁:
(use-package org
; ...
  :preface
  (defvar sztk-org-table-font "Sarasa Mono SC")
  (defun sztk-org-table-align-fix-advice (orig-fun &rest args)
    (let ((m-buf (get-buffer-create " *Org string width*")))
      (with-current-buffer m-buf
        (setq-local face-remapping-alist
                    `((org-table :family ,sztk-org-table-font)))))
    (apply orig-fun args))
  :init
  (advice-add 'org-string-width :around #'sztk-org-table-align-fix-advice)
  :hook
  (org-mode . (lambda () (face-remap-add-relative
                          'org-table :family sztk-org-table-font)))
; ...
)
  • 验证:此补丁疗效良好。

这次经历满足了我的强迫症,令我见识了临时 buffer 的更多用途,而且还让我初步学习了 advice-add 机制,可谓“满载而归”!

4 个赞

如果实在不知道能用来做什么,建议不要继续学习了。

就像学校里学的那些东西不是为了解决任何实际问题,是为了通过考试,考试结束后就大概率不知道学的这些东西能用来做什么了。 反正最后也是要忘记的,如果有选择的话就不要浪费时间。

4 个赞