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

如何定义Emacs Lisp函数以使用在shell中执行的特定命令生成shell缓冲区?

Emacs Lisp是一种方便的编程语言,用于扩展和定制Emacs编辑器。通过定义Emacs Lisp函数,我们可以在shell中执行特定命令并生成shell缓冲区。

要定义一个Emacs Lisp函数以使用在shell中执行的特定命令生成shell缓冲区,可以按照以下步骤进行:

  1. 打开Emacs编辑器,并进入Lisp交互模式(通常通过按下"Alt + x",然后输入"ielm"并按下回车键)。
  2. 在Lisp交互模式中,使用"defun"关键字定义一个函数,指定函数名和参数列表。例如:
代码语言:lisp
复制
(defun generate-shell-buffer (command)
  ;; 函数体
  )
  1. 在函数体中,使用"shell-command"函数执行特定的shell命令,并将结果输出到shell缓冲区。例如:
代码语言:lisp
复制
(defun generate-shell-buffer (command)
  (shell-command command "*shell-buffer*"))
  1. 保存函数定义到一个文件中,例如"generate-shell-buffer.el"。
  2. 在Emacs中加载该文件,可以通过"Alt + x",然后输入"load-file",并指定文件路径。
  3. 现在,你可以在Emacs中调用该函数,并传递一个特定的shell命令作为参数。例如:
代码语言:lisp
复制
(generate-shell-buffer "ls -l")

上述函数的定义中,我们使用了"shell-command"函数来执行shell命令,并将结果输出到名为"shell-buffer"的shell缓冲区。你可以根据需要修改函数体,以适应不同的命令和缓冲区名称。

腾讯云提供了云服务器(CVM)产品,可以满足云计算和服务器运维的需求。你可以通过以下链接了解更多关于腾讯云云服务器的信息:

腾讯云云服务器

请注意,本答案没有提及其他云计算品牌商,如有需要,请自行搜索相关信息。

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

相关·内容

Emacs Lisp2

;; 缓冲区也叫做工作区,在Emacs打开一个文件,实际只是在Emacs构造该文件一个副本,放到缓冲区,;; 在Emacs对该文件编辑也是针对该副本编辑,唯有保存改动时,Emacs才会把缓冲区内容在复制到原文件中去...;; 为了实验本教程lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下,;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...; ^ 把光标放在这里,并且键入Ctrl-j (之后将简写成C-j);; C-j是一个快捷命令,在后台,该快捷键将调用求值命令,并且把计算结果;; 插入到当前缓冲区;; 如果不希望Emacs缓冲区插入计算结果...));; ^ 把光标停在这里,再键入C-x C-e 执行defun命令定义函数;; 通过defun命令,你已经在Emacs安装了这个hello函数,这个函数就成为了Emacs一部分,知道你退出Emacs...: 先按下Ctrl-x 再按下o;; 如果要执行一系列指令,可以使用流程函数progn,把函数命令连接起来.;; 下面的命令,先打开一个新buffer,再执行hello函数,该hello函数参数是

98040
  • Emacs Lisp

    ;; 缓冲区也叫做工作区,在Emacs打开一个文件,实际只是在Emacs构造该文件一个副本,放到缓冲区, ;; 在Emacs对该文件编辑也是针对该副本编辑,唯有保存改动时,Emacs才会把缓冲区内容在复制到原文件中去...;; 为了实验本教程lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下, ;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...; 如果不希望Emacs缓冲区插入计算结果,我们还可以在表达式末尾使用C-x C-e组合键 ;; C-x C-e意思是: 先按下Ctrl-x 再按下Ctrl-e ;; 这个命令会让Emacs在辅助缓冲区..." my-name)) ;; ^ 把光标停在这里,再键入C-x C-e 执行defun命令定义函数 ;; 通过defun命令,你已经在Emacs安装了这个hello函数,这个函数就成为了Emacs一部分...o意思是: 先按下Ctrl-x 再按下o ;; 如果要执行一系列指令,可以使用流程函数progn,把函数命令连接起来. ;; 下面的命令,先打开一个新buffer,再执行hello函数,该hello

    2.3K40

    Emacs 折腾记

    我工作倒并没有用得到 Lisp 地方,但是最近眼前晃过一些书,比如《计算机程序构造和解释》、《码农》杂志第 13 期,都对这门古老语言推崇备至,历数现代 Lisp 方言先进性,再者我也一直有学习一门函数式编程语言想法...然后在如何运行当前 py 文件这件事上遇到些问题。在 Vim 我一直是用 :!...start python % 使用 Emacs 运行外部命令方法 M-!...start python test.py 文件名、Buffer 和命令渐进提示 编程环境下需要自动补全,在非编程环境下,比如切换 Buffer,打开文件,输入函数命令等,同样需要。...varible ALTERNATE_EDITOR) 平滑滚动 Emacs 默认滚动方式和 Vim 不一样,是光标移到屏幕上或者下边缘时突然跳动半屏,比较不符合我目光跟着光标走习惯,这个可以使用一个插件来解决

    1.3K20

    Emacs Lisp

    ;; 缓冲区也叫做工作区,在Emacs打开一个文件,实际只是在Emacs构造该文件一个副本,放到缓冲区, ;; 在Emacs对该文件编辑也是针对该副本编辑,唯有保存改动时,Emacs才会把缓冲区内容在复制到原文件中去...;; 为了实验本教程lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下, ;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...; 如果不希望Emacs缓冲区插入计算结果,我们还可以在表达式末尾使用C-x C-e组合键 ;; C-x C-e意思是: 先按下Ctrl-x 再按下Ctrl-e ;; 这个命令会让Emacs在辅助缓冲区..." my-name)) ;; ^ 把光标停在这里,再键入C-x C-e 执行defun命令定义函数 ;; 通过defun命令,你已经在Emacs安装了这个hello函数,这个函数就成为了Emacs一部分...o意思是: 先按下Ctrl-x 再按下o ;; 如果要执行一系列指令,可以使用流程函数progn,把函数命令连接起来. ;; 下面的命令,先打开一个新buffer,再执行hello函数,该hello

    2.2K30

    Linux学习笔记(四)

    set # 会显示某个特定进程设置所有环境变量(包括全局、局部、用户定义局部变量) somekey=somevalue # 定义用户局部变量。...shell执行命令所在位置 BASH_COMMAND shell正在执行命令或马上就执行命令 BASH_ENV 设置了的话,每个bash脚本会在运行前先尝试运行该变量定义启动文件 BASH_EXECUTION_STRING...COMPREPLY 含有由shell函数生成可能填充代码数组变量 COPROC 占用未命名协进程I/O文件描述符数组变量 DIRSTACK 含有目录栈当前内容数组变量 EMACS 设置为’...t’ 时,表明emacs shell缓冲区正在工作,而行编辑功能被禁止 ENV 如果设置了该环境变量,在bash shell脚本运行之前会先执行定义启动文件(仅用于当bash shell以IPOSIX...(对其赋值可作为随机数生成种子) READLINE_LINE 当使用bind -x命令时,存储Readline缓冲区内容 READLINE_POINT 当使用bind -x命 令时,表示Readine

    1.1K10

    BashShell变量

    局部环境变量:局部环境变量只对创建它们 Shell 和子 Shell 可见。 本地环境变量:本地环境变量只能在定义它们函数内部以及子函数可见。...可以使用 set 命令显示某个特定进程设置所有环境变量,包括系统局部变量、系统全局变量和用户自定义环境变量。 set 【注】set 命令会将变量按照字母顺序进行排序,且只显示值非空环境变量。...除了输出所有的环境变量外,使用不带参数 set 命令还会输出当前环境所有的函数。 2.4 本地环境变量 本地环境变量只能在函数内部被定义和使用,它们只能在定义它们函数内部以及子函数可见。 3....含有目录栈当前内容数组变量 EMACS 设置为 t 时,表明 emacs Shell 缓冲区正在工作,而行编辑功能被禁止 ENV 如果设置了该环境变量,在 Bash Shell 脚本运行之前会先执行定义启动文件...7.2 详解 declare 命令如果用在函数,声明变量只在函数内有效,等同于 local 命令

    2.4K30

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

    此外,Emacs 还是自文档化,意味着它能理解变量值何时发生变化、并在对应帮助缓冲区通知用户。同理,Emacs 也能反映出各类函数新值与当前状况关联。...Dired 可以逐个标记条目,也可以使用正则表达式和其他高级命令。 记录一组以 Dired 为起点操作(「键盘宏」),跳转至特定文件,执行某些变更、返回文件管理器,再在下一个文件重复这个过程。...前者体现在代码库遵循许可上,后者则体现在代码库自身内容——即整个使用感受,以及代码库如何特定环境其他程序或工作流程相匹配。我觉得软件自由这个议题特别有意思,值得深入发掘。...例如,我 Elisp 学习之路就是从编写小型函数封装开始,用于调整某些默认操作执行方式。我想补充“move down a line”(下移一行)命令功能,让它能支持下移特定多行。...Emacs 则可以实时评估代码,而且开放完整源代码及相关说明文档。正是有了这样开放性,我才能了解如何定义函数,再通过反复试验编写出人生第一条自定义 Elisp。

    37330

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

    一个 C 宏可以定义一段语法替换,然而一个 Lisp 宏却可以控制一节代码计算。 获得了控制代码执行顺序(见惰性计算和非限制函数)能力,使得新创建语法结构与语言内建语法结构不可区分。...例如,一种 Lisp 方言有 cond 而没有 if ,就可以使用宏由前者定义后者。Lisp 语法去部主要扩展,比如面向对象 CLOS 系统,可以由宏来定义。...== 宏编程 == 在用一种不熟悉宏语言进行宏编程时,可以这样做,首先记录下用户想要宏完成什么,然后打开宏文件并尝试理解命令结构如何工作。也可以修改命令以调整宏。...需要针对每一个新数据集合生成 .mac 文件。 == 宏应用 == 应用程序也可以使用一种和宏类似机理系统来允许用户将一系列(一般是最常使用到操作)自定义为一个步骤。...但由上面的定义,它完全不是一种宏语言。然而,它功能已经从中发展并最终替代了用户应用程序宏思想,所以它被广泛地错误地称为是一种宏语言。 VBA可以访问许多操作系统函数并支持文档打开时自动执行宏。

    1.6K20

    10 个让你进入 Emacs 世界技巧

    例如,如果你不知道如何Emacs 只用键盘快捷键复制一个单词,编辑菜单复制、剪切和粘贴选择提供了最轻松路径。没有理由因为选择了 Emacs 而惩罚自己。...在 Emacs ,“框架”就是现代计算机所说“窗口”。 缓冲区(Buffer):“缓冲区”是 Emacs 一个通信通道。...它可以作为 Emacs 进程命令行,也可以作为 shell,或者只是一个文件内容。 窗口(Window):“窗口”是你进入一个缓冲区视角。 迷你缓冲区(Mini-buffer)。...探索新功能 Emacs 所做大部分工作都是一个 elisp 函数,它可以从菜单选择和键盘快捷键调用,或者在某些情况下从特定事件调用。...所有的函数都可以从迷你缓冲区Emacs 框架底部命令行)执行

    80320

    使用 RustC 开发 Emacs 插件

    Emacs 在 25 版本后,支持了动态模块(dynamic modules),这为 Emacs 插件开发打开了新一扇大门,任何能够编译生成符合 Emacs ABI 要求语言都可以使用。...本文就来介绍,如何使用 C/Rust 两种语言来进行 Emacs 动态模块开发。本文所有代码可在 emacs-dynamic-module 这里找到。...为了简化数据类型在 C 与 ELisp 之间转化,Emacs 提供了一系列函数,比如: Elisp–>C 更多类型转化可参考官方文档: •Conversion Between Lisp and Module...Values 这里着重介绍下如何将 C 里面的函数导出到 ELisp emacs_value c_add(emacs_env *env, ptrdiff_t nargs, emacs_value..., name)) } 相比 C 代码,这里代码简洁不少,通过 #[defun] 将 say_hello 函数导出到 ELisp ,并且函数名自动加上了前缀 greeting ,并提供了相应 feature

    84020

    无插件Vim编程技巧

    如果你要改变当前浏览目录,或是查看当前浏览目录,你可以使用和shell一样命令: :cd – 改变当前目录 :pwd  – 查看当前目录 缓冲区 其实,你用:E 浏览打开文件都没有被关闭...如果你用过vimcscope插件,你就知道cscope可以用来查找相当代码,但cscope需要事先生成一个数据库,对一些简单查找,其实,我们用vimgrep命令就可以了,不需要专门为之生成数据库...然后,你就会看到vim到shell里去执行并找到了相关文件,按回车返回vim后,别忘了用 【:cw 】把grep输出取回来,于是我们就有下面的样子: ?...读取Shell命令相关 【:r!date】 插入日期 上面这个命令,:r 是:read缩写,!是表明要运行一个shell命令,意思是我要把shell命令输出读到vim里来。...vim终级插件 CentOS下:yum erase emacs Ubuntu下:apt-get remove emacs 对了,以前本站也有一篇小短文《如何在vim得到你最喜爱IDE特性》你也可以看看

    1.4K20

    Emacs 29快到了!我们能期待什么

    以使用 new 函数来完成package-vc-install,并且可以使用package-vc-update或更新以这种方式安装包package-vc-update-all。...在我例子,当缓冲区内容更新时,我有时会看到一些幻影文本(尽管我仍然需要纯 GTK,因为我在 Xorg 和 Wayland 之间交替)。...如果您喜欢编写脚本,尤其是编写 Lisp 脚本,Emacs 现在支持该选项-x以执行用 EmacsLisp 编写脚本。当使用 as shebang 执行这样脚本时#!.../usr/bin/emacs -x,Emacs 不会读取它 init 文件(如 with -Q),而是会立即执行 Elisp 代码并将最后一个值返回给脚本调用者(很可能是您调用脚本 shell从)...自定义用户目录 现在可以更轻松地启动自定义 Emacs 配置文件,而无需使用chemacs2等工具并添加 flag --init-directory。

    2.5K20

    Emacs 28 新特性介绍

    这篇文章就来介绍 Emacs 28 ,笔者个人觉得比较实用功能,完整列表可参考 NEWS[3] ( M-x view-emacs-news ),最后会介绍如何在 macOS 上编译。...与 flush-lines 命令类似,但是匹配行会作为整体加到 kill ring • 新配置 kill-transform-function 字符在添加到 kill ring 预处理函数 •...• remove-hook 改成 interactive 命令 • 新增命令 shortdoc-display-group 之前节目[7]多次提到过功能,按函数类型归类,展示其用法 shortdoc...• 新增命令 memory-report • 新增命令 submit-emacs-patch • 在没有设置 LANG 时,默认采用 UTF8 编码,之前是 ISO-8859-1 特定 mode 变更...适用于 lisp 表达式,但不是可执行程序,比如 .dir-locals.el • transient.el[9],就是 magit 中菜单导航使用库,我配置[10]中大量使用。

    95930

    攻击本地主机漏洞(

    在本例,BSIZE变量用于定义“buf0”和“buf1”长度编译和执行程序时,您将看到初始值、溢出前和溢出后缓冲区内容打印到终端。...子例程是较大程序一部分,包括一组执行任务指令。可以使用库函数,而不是将恶意负载写入堆栈,恶意程序可以使用其条目位置覆盖返回地址。...接下来,继续并退出gdb,然后让我们生成随机模式,并将其用作易受攻击程序参数。在命令执行以下命令: 您应该会收到预期分段错误(SIGSEGV)。...您可以使用在线提供表手动执行此操作,网址为https://www.asciitable.com,也可以使用Python和编解码器模块对十六进制ASCII值进行解码: 当我们将十六进制转换为ASCII...我们从步骤12生成shell代码已经在Python负载生成脚本,因此无需再添加任何shell代码。

    1.4K20

    IC工程师通用技能:文本处理

    命令行交互,Tcl,约束文件,输出报告,运行状态信息。 2. 高效文本处理是IC工程师必备技能之一。 要用好一个编辑器。 比如Vim,Emacs二选一。...比如代码自动生成,设计实现流程脚本,报告自动汇总,用户提交自动回归测试。 高级阶段是拼脑洞。 如何用更少代码完成更多事?如何减少重复编写代码次数?如何用更好流程重用之前代码? 4....文本编码格式。 Windows和Linux换行问题。比如由于换行导致shell脚本无法执行。 非ASCII字符引入编码问题。比如中文乱码问题。 文本结构化。...可以使用以逗号(,)分隔符csv文件。 可以使用XML,JSON,YML等强制标签/格式文本。 可以使用doxygen,perldoc类似的方式自动生成代码文档。...如果可能,使用可执行(executable)文本。比如shell脚本,makefile,可编译源码。 文本可视化。 使用代码可视化工具。

    91221

    project.el 使用说明

    project 相关命令绑定在 C-x p 。 根目录 在日常编程Emacs 很多包都依赖一个功能:查找当前项目的根目录,比如 lsp-mode、citre 等。...在 project.el ,默认只支持 VC[3] Git,即 project-try-vc,但可以自定义找根目录方式,配置如下: (defun my/project-try-local (dir...作为额外补充,可以通过创建一个名为 .project 文件,用作根目录标识,与 .projectile 类似 该函数返回一个 cons,car 为项目类型,这里定义为 local,cdr 为根目录...查找文件 查找文件是非常高频操作,可以使用 Rust 编写 fd[4] 来代替 find,速度更快。...project-query-replace-regexp,在项目中执行正则替换 • project-shell-command,执行 shell 命令 • project-eshell,在根目录打开

    39510

    雪城大学信息安全讲义 4.3~4.4

    在 Fedora ,我们可以执行下列命令来使栈不可执行: # /sbin/sysctl -w kernel.exec-shield=1 不幸是,使栈不可执行不能完全放置缓冲区溢出。...这实际上是可行:我们可以使用操作系统自身代码来调用 Shell。更加具体来讲,我们可以使用操作系统函数来完成我们目标。在类 Unix 系统,叫做 Libc 共享库提供了 C 运行时。...Libc 代码已经作为共享运行时库在内存中了,并且他可以被所有应用访问。 函数system是 Libc 函数之一。如果我们可以使用参数/bin/sh调用这个函数,我们就可以获得 Shell。...如何将字符串/bin/sh地址传递给system函数? 4.1 寻找system函数位置 在多数 Unix 操作系统, Libc 库始终加载到固定内存地址。...因此,我们需要将参数放到栈上正确位置。为了执行正确,我们需要清晰理解调用函数时候,函数栈帧如何构建。

    52630
    领券