首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

交互式Emacs Lisp函数可以互相交换两个单词

交互式Emacs Lisp函数可以互相交换两个单词。这个问题涉及到文本编辑器Emacs和其Lisp语言编程功能。Emacs是一款功能强大的文本编辑器,它的Lisp语言编程功能允许用户编写自定义函数来执行各种操作。

在这个问题中,我们需要编写一个交互式Emacs Lisp函数,用于交换文本中的两个单词。这个函数可以帮助用户在编写文本时更轻松地调整单词的顺序。

以下是一个简单的Emacs Lisp函数,用于交换两个单词:

代码语言:lisp
复制
(defun swap-words ()
  "Swap the two words before the cursor."
  (interactive)
  (let ((pos (point)))
    (backward-word)
    (let ((word1 (thing-at-point 'word))
          (word2 (thing-at-point 'word t)))
      (delete-region (point) pos)
      (insert word2 " " word1))))

这个函数首先定义了一个名为swap-words的函数,它接受一个参数interactive,表示这是一个交互式函数。然后,函数使用let语句定义了一个局部变量pos,用于存储当前光标的位置。接下来,函数使用backward-word函数将光标移动到前一个单词的开头。

然后,函数使用thing-at-point函数获取前两个单词,并将它们存储在变量word1word2中。接下来,函数使用delete-region函数删除这两个单词,并使用insert函数将它们插入到交换后的位置。

最后,函数返回交换后的单词。

这个函数可以在Emacs中使用,可以通过在Emacs中输入M-x swap-words来调用它。

总之,这个问题涉及到Emacs Lisp编程和文本编辑器功能,提供了一个简单的函数,用于交换文本中的两个单词。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一名Clojurian的Emacs配置

这就不得不提起Clojure这门lisp方言,出于对lisp函数式编程的痴迷,我选择了基于JVM的Clojure作为自己的偏好语言,而emacs天生为lisp而生。...(add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory)) 看似,接下来就可以在每个独立的模块文件中编写各种功能的配置...package.el提供了package-install-p(p是predicate的意思)和package-install两个配套使用的函数,也就是说一般得先判断包在不在,才决定安不安装。...不难发现lisp的解析器可以读取解析两种类型的lisp代码,一种是适合人类阅读的代码,以el作为后缀;另一种是编译字节码,以elc作为后缀。...,就能获得一个Clojure的交互式开发环境。

2.8K20

Emacs Lisp2

Emacs: (在windows中可以双击emacs图标,在Linux中可以输入% emacs & ),;; 然后在键盘上键入q 跳过系统欢迎的信息,;; 先观察在Emacs屏幕的底部,会给出一堆关于当前的工作情况的信息...;; 为了实验本教程中的lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下,;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...2 2);; Elisp中表达式可以通过括号来嵌套(+ 2 (+ 1 1));; 在lisp-interaction-mode模式中,我们可以直接计算一个表达式,计算的方法是(+ 3 (+ 1 2));...;; ^ 把光标停在这里,再键入C-x C-e;; insert函数可以两个常量字符,比如(insert "Hello" " world!")...;; 下面命令的输出结果是"Hello you"(hello "you")== progn,let和交互式函数== ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

98240
  • Emacs Lisp

    LISP 编程语族已经演变出许多种方言,现代最著名的通用编程语种是 Common Lisp 和 Scheme , 以上解释来自 WIKI Emacs LispLisp 的一个分支 Emacs Lisp...Tip: 这一篇纯属于摘抄,不是原创,只是好东西忍不住拿出来分享,如果原作者有意见,可以随时联系我,下线此文章,我完全尊重原作者的意见 原文,请参考 Emacs Lisp 15 分钟入门 ---- 操作...;; 为了实验本教程中的lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下, ;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...;; ^ 把光标停在这里,再键入C-x C-e ;; insert函数可以两个常量字符,比如 (insert "Hello" " world!")...;; 下面命令的输出结果是"Hello you" (hello "you") == progn,let和交互式函数== ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    2.3K40

    Emacs Lisp

    LISP 编程语族已经演变出许多种方言,现代最著名的通用编程语种是 Common Lisp 和 Scheme , 以上解释来自 WIKI Emacs LispLisp 的一个分支 Emacs Lisp...Tip: 这一篇纯属于摘抄,不是原创,只是好东西忍不住拿出来分享,如果原作者有意见,可以随时联系我,下线此文章,我完全尊重原作者的意见 原文,请参考 Emacs Lisp 15 分钟入门 ---- 操作...;; 为了实验本教程中的lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下, ;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...;; ^ 把光标停在这里,再键入C-x C-e ;; insert函数可以两个常量字符,比如 (insert "Hello" " world!")...;; 下面命令的输出结果是"Hello you" (hello "you") == progn,let和交互式函数== ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    2.2K30

    excel宏编程 c语言,宏(巨集)

    Lisp类语言如Common Lisp和Scheme有更精巧的宏系统: 宏的行为如同是函数对自身程序文本的变形,并且可以应用全部语言来表达这种变形。...一个 C 宏可以定义一段语法的替换,然而一个 Lisp 的宏却可以控制一节代码的计算。 获得了控制代码的执行顺序(见惰性计算和非限制函数)的能力,使得新创建的语法结构与语言内建的语法结构不可区分。...例如,一种 Lisp 方言有 cond 而没有 if ,就可以使用宏由前者定义后者。Lisp 语法的去部主要扩展,比如面向对象的 CLOS 系统,可以由宏来定义。...== 键盘宏 == 键盘宏和编辑器宏分别在图形用户界面和编辑器中被交互式地使用。使用它们可以用简短的击键代替冗长的命令序列,并为重复性任务提供了一个简单的自动化形式,但2009年已经有所改变。...Emacs 最初被设计为编辑语言 TECO 的宏集,后被移植为 Lisp 的一种方言 Emacs Lisp。Vim也允许用户录制和播放简单的键盘宏。

    1.6K20

    Clojure 开发那些事

    ,很幸运,Clojure 里面函数是一级成员,这意味着函数可以作为参数传入,也可以作为函数值返回,能够进行这两类操作的函数称为“高阶函数”(high-order functions),这在任何一门函数式语言中都很普及...Clojure 的宿主语言现在主要有两个:一个是最多最多的的基于 JVM 的;另一个是基于微软 .NET 的 Clojure-CLR,现在还有一个发展迅猛的 ClojureScript,可以将 Clojure...这里主要介绍 Intellj + Cursive 与 Emacs + Cider 两个环境,这两个是我用的最顺手,也是现在较为流行的方式。...你可以可以参考我的配置.emacs.d。...nrepl Clojure 的 REPL 可以连接到远程服务器上的进程中,直接对进程中的函数或变量进行修改,这是非常便利的,对于很多运行时的错误可以采用这种方式解决,Emacs 与 Intellj 里面都提供了连接远程

    1.6K20

    Emacs 29.1 版本发布了

    delete-process: 变成了交互式命令 restart-emacs: 与 save-buffers-kill-emacs 类似,只是在关闭 emacs 后,会重新用同样的启动参数再次启动 scratch-buffer...: 交互式命令,切换到 *scratch* buffer,可以解决误删的问题 project-list-buffers: 用于展示当前项目的 buffer xref-find-references-and-replace...循环的操作可以通过 cycle-spacing-actions 配置。 优化 长行优化。主要是下面两个 commit。...EIEIO 相关 compat 函数默认已经不再加载,最主要的就是 defmethod defgeneric 函数,如果之前配置中有用到,可以直接加上前缀 cl- 即可,比如下面这个 PR:Fix defmethod...可以通过 --init-directory 设置 user-emacs-directory 变量 .eld 结尾的文件默认用 lisp-data-mode 打开。

    54220

    Emacs 之光的成长历程

    更令人好奇的是,嘉宾如何在短期内熟悉 Emacs 源码并为之贡献多个 patch,相信通过嘉宾的学习、贡献经历,可以给听众打开 Emacs 源码的神秘面纱,让更多用户参与到 Emacs 的贡献中,一个多小时的分享...,句号后两个空格 • 注释用的是 C 风格的 /* */ ,而不是 C++ 的 // • 函数名后面跟一个空格,再是括号 •读 Emacs 源码技巧 • lisp.h[12] 里面有 C 如何调用 ELisp...的示例 • 去 devel[13] 邮件列表咨询,还可以练习英文表达能力 • ccls[14] + grep + ctags • 通过搜索相关功能来探究其个函数的用法 •嘉宾的分享 • aggressive-indent-mode...buffer: https://github.com/emacs-mirror/emacs/commit/7c83e605ab84e8b62254c55f347abc8aa9c6057b [12] lisp.h...: https://github.com/emacs-mirror/emacs/blob/master/src/lisp.h [13] devel: https://lists.gnu.org/archive

    40610

    Go每日一库之152:gomacro(终端运行go代码)

    14 // int // error gomacro> 只需要按下 TAB 键就可以自动提示,再按 TAB 键可以循环完成可能的内容。行编辑主要遵循 Emacs。...Ctrl+A 或 Home 跳到行首,Ctrl+E 或 End 跳到行尾,Ald+D 删除从光标开始的单词.........,你可以从 gomacro REPL 导入相同的库(在 Linux 和 Mac OS X 上立即生效,在其他平台上需要重新启动),交互式地调用它们,检查结果,将它们反馈给其他函数/库,所有这些都在一个会话中完成...Go 代码生成工具:gomacro 最初是作为向 Go 添加类似 Lisp 的宏的实验开始的,它们对于简化代码生成非常有用。...宏是普通的 Go 函数,其特殊之处仅在于一个方面:在编译代码之前执行,其输入输出为代码 安装 需要 Go 1.13+ 版本,Gomacro 是纯 Go,理论上它应该可以在 Go 编译器支持的任何平台上运行

    49940

    Emacs 折腾记

    我工作中倒并没有用得到 Lisp 的地方,但是最近眼前晃过的一些书,比如《计算机程序的构造和解释》、《码农》杂志第 13 期,都对这门古老的语言推崇备至,历数现代 Lisp 方言的先进性,再者我也一直有学习一门函数式编程语言的想法...在搜索网友们对此的经验之谈的时候,自然而然地,目光逐渐聚集到 Emacs 这个使用 Emacs Lisp 作为扩展语言的神的编辑器上。...Common Lisp 开发环境 学习 Common Lisp 是使用 Emacs 最主要的任务,配好了文本编辑,当然得先把 Common Lisp 开发环境配置好了。...在 ~/.emacs 文件里加上: M-x slime 就可以进入到 REPL 进行 Common Lisp 的学习了。...C/S 模式快速启动 Emacs Emacs 的启动速度是相比 Vim 来说被诟病吐槽得很多的一个点,我们在 Windows 下可以利用 C/S 模式来实现 Emacs 快速打开文件。

    1.3K20

    30岁文转码:我用了三年时间从哲学家变成知名软件项目核心开发

    Emacs 是由 Lisp 的一种方言编写而成,名为“Emacs Lisp”、也叫“Elisp”。因此,它的绝大多数代码库以及用户配置也是用 Elisp 写成。...从这个角度来看,Emacs 相当于是 Lisp 机,可以用来执行任何类型的程序。这里的“程序”可以指代一切,包括 Org 或者 Magit 这样的大功能、也包括精简文本编辑和操作等小应用。...此外,Emacs 还是自文档化的,意味着它能理解变量的值何时发生变化、并在对应的帮助缓冲区中通知用户。同理,Emacs 也能反映出各类函数的新值与当前状况的关联。...Emacs可以实时评估代码,而且开放完整的源代码及相关说明文档。正是有了这样的开放性,我才能了解如何定义函数,再通过反复试验编写出人生中第一条自定义 Elisp。...过去两年半里,我编写了几千行 Elisp 并为核心 Emacs 做出贡献,包括两个完整、辅助功能齐备的可定制主题,这就是 modus-themes。

    38030

    推荐10款Python开发编辑器

    Vim Vim 可以说是 Python 最好的 IDE。Vim 是高级文本编辑器,旨在提供实际的 Unix 编辑器‘Vi’功能,支持更多更完善的特性集。...Eclipse with Pydev 允许开发者创建有用和交互式的 Web 应用。...Sublime 有自己的包管理器,开发者可以使用TA来安装组件,插件和额外的样式,所有这些都能提升你的编码体验。 4.Emacs GNU Emacs 是可扩展,自定义的文本编辑器,甚至是更多的功能。...Emacs 的核心是 Emacs Lisp 解析器,但是支持文本编辑。如果你已经使用过 Vim,可以尝试一下 Emacs。...包括两个重要的组件:编辑器和 Shell,并且提供插件工具集从各个方面来提高开发人员的效率。 来源商业新知网,原标题:10 款顶级的 Python 开发编辑器

    1K30

    【译】教你用50种语言写Hello, World

    Lisp - 1958 Lisp是最古老的编程语言系列,它既是交互式的又是函数式的。...Scheme - 1975 Scheme创建于1975年,是一种多范式编程语言,支持函数式和交互式编程。它是Lisp三种重要的变种之一,由Common Lisp和Clojure共同开发。...它是一门解释型语言,可以跨平台。Python支持结构体,函数和面向对象的交互式编程。随着AI的发展,近几年Python的热度也是持续上涨。...Ruby - 1995 由于对Smalltalk和Lisp的开发感到沮丧,Yukihiro Matsumoto从1993年起开始在Emacs上设计Ruby语言,并于1995年发布了第一版。...Clojure - 2007 Clojure是编译型、跨平台的函数式编程语言,它可以安全、简单的开发分布式系统。Clojure是Lisp的三种主要方言之一。

    74830

    用了VS Code、IDEA等十几款编辑器后,我总结出优秀编辑器的特质

    按字符:如果单词模式无法跳转到特殊的运算符或字符(因为无法识别为单词),则可以使用此模式跳转到当前缓冲区(或所有打开的缓冲区)中的任何字符。...例如,如果你将一个窗口分成两个缓冲区,则你想要调用的垂直“标记”“边缘”都是实际的 Unicode 字符。终端的工作机制可以忽略那些字符,但仍会给人很笨的感觉。...查找符号、查找实现的函数、继承的类、超类……速度都快如闪电,并且都可以很好地呈现给你,我喜欢。 语法高亮很不错。我特别喜欢 var 声明以及将参数传递给函数时的内联类型说明。...在我看来,emacs 和 DOOM emacs 的关系可以用一个词来概括:团结。我不知道他们是怎么做到的,但是所有插件互相之间都融合得很好。我使用 ivy 界面做自动完成和模糊搜索,一切都做得很好。...你可以使用 Lisp 编写 / 配置脚本,这真是太好了!Lisp 是一种老派的精英,它已经存在很长时间,并且仍然给人新潮的印象。我很喜欢这一点。

    1.8K10

    亚马逊工程师论各种编程语言的优缺点

    Emacs 是那种你可以用 100 年的编辑器。   ...我每分钟打一百三到一百四十个英文单词,在 Emacs 里,当我在写没有格式要求的文本的时候。我测过这个时间速度。自己写了一个测打字速度的 Emacs 应用。但我想跟你说的不只是这个。   ...我们(当时)找不到 Emacs-Lisp 足够牛的人把 Mailman 继续搞下去。今天这应该不难了; 亚马逊现在到处都是 Emacs Lisp 的黑客。...切换到 Java 编程语言就把你变成了两个程序员 —— 一个处理那些你不需要关心的东西,另一个可以集中精力在问题本身上。这是一个很震人的改变,一个你应该很快就能习惯能喜欢上的改变。   ...Python 本来可以统治世界,可惜它有两个致命缺陷:空格,和冷淡。   空格很简单,就是说 Python 是用缩进来表达代码块之间的嵌套。

    2.2K80
    领券