Emacs之实现复制当前已打开文件buffer(一百三十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中...... 】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中...... 】🚀
优质专栏:AAOS车载系统+AOSP14系统攻城狮入门实战课原创干货持续更新中......】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
更多原创,欢迎关注:Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

🌻1.前言

本篇目的:为了方便复制已打开文件的全部内容,写了两个实现,提高开发效率。

🌻2.Elisp之buffer-string介绍

  • buffer-string 是 Emacs Lisp(elisp)中的一个内置函数,用于获取缓冲区(buffer)中的文本内容,并将其作为字符串返回。在 Emacs 中,每个文件、目录或区域都有一个与之对应的缓冲区,缓冲区内部维护着这些内容的状态,包括文本内容、光标位置等。buffer-string 函数- 提供了一种方便的方式来访问缓冲区中的文本内容。
    buffer-string 函数的基本语法如下:
elisp 复制代码
(buffer-string)

或者:

elisp 复制代码
(buffer-string start end)
  • 其中,startend 参数分别指定了一个范围,用来截取缓冲区中的一部分文本。如果不指定这些参数,buffer-string 会返回整个缓冲区的内容。
  • 以下是一些 buffer-string 函数的示例:
  1. 获取整个缓冲区的文本内容:

    elisp 复制代码
    (buffer-string)

    这将返回一个包含缓冲区中所有文本的字符串。

  2. 获取从当前光标位置到行尾的文本内容:

    elisp 复制代码
    (buffer-string (point) (point-max))

    这将返回一个包含从当前光标位置到缓冲区末尾的所有文本的字符串。

  3. 获取从指定位置到另一指定位置的文本内容:

    elisp 复制代码
    (buffer-string start end)

    其中 startend 可以是标记(mark)、点(point)或其他表示位置的对象。这将返回一个包含从 startend 之间的所有文本的字符串。

  4. 获取整个文件的文本内容:

    elisp 复制代码
    (with-current-buffer (find-file "file.txt")
      (buffer-string))

    这将打开文件 "file.txt",然后获取其整个内容并返回。
    buffer-string 函数在 Emacs Lisp 中非常有用,因为它允许你轻松地操作缓冲区中的文本。例如,你可以使用 buffer-string 来:

  • 读取用户的输入并将其显示在缓冲区中。
  • 将缓冲区中的文本写入文件。
  • 在缓冲区中搜索和替换文本。
  • 处理缓冲区中的文本数据,例如统计字符数、单词数等。
  • 总之,buffer-string 是 Emacs Lisp 中一个简单但强大的函数,它为操作缓冲区中的文本提供了便利,是 Emacs 编程和文本处理的重要组成部分。

🌻3.实现方案

🐓<1>.方案一

cpp 复制代码
(defun copy-whole-file ()
  (interactive)
  (kill-new (buffer-string))
  (message "Copied current whole buffer."))

🐓<2>.方案二

cpp 复制代码
(defun copy-whole-file ()
  "Copy the content of the currently opened file to the clipboard."
  (interactive)
  (kill-new (buffer-substring-no-properties (point-min) (point-max)))
  (message "Copied current whole buffer.")
  )
相关推荐
许嵩6610 小时前
IC 脚本之VIM 记录
linux·编辑器·vim
cxks-从新开始15 小时前
使用 md-editor-v3 开发自定义 Markdown 编辑器组件
编辑器
牙买加_小杨16 小时前
用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转这些功能
ide·vscode·编辑器
南郁16 小时前
06.VSCODE:备战大项目,CMake专项配置
ide·vscode·编辑器
哑巴湖小水怪1 天前
WPS宏编辑器开发,单元格内容变更自动触发事件
java·编辑器·wps
哟哟耶耶2 天前
vscode-相关自用插件(倒计时,时间显示,编码对齐,css等编码颜色,简体中文,git提交相关,vue项目)
ide·vscode·编辑器
CodeCraft Studio2 天前
【实用技能】ASP.NET Core:在同一个 Razor 视图中使用文档编辑器和查看器
编辑器·asp.net
dllmayday2 天前
VSCode 多工程联合调试
ide·vscode·编辑器
霖雨2 天前
使用Visual Studio Code 快速新建Net项目
java·ide·windows·vscode·编辑器
fll9802052 天前
配置修改Vim编辑器中TAB键的缩进长度
linux·编辑器·vim