介绍一些Emacs功能强大的函数

Emacs有什么优点,用Emacs写程序真的比IDE更方便吗? 但对于大多数开发者,特别是新手或者需要进行大型项目开发、依赖丰富的图形化调试工具和项目管理功能的情况,现代的 IDE(如 Visual Studio、IntelliJ IDEA 等)可能更具优势,它们通常提供更直观的用户界面、更强大的代码分析和调试功能、集成的版本控制系统等。需要注意的是,选择编辑器还是IDE最重要的是看个人的习惯和需求。- 许多现代 IDE 有“开箱即用”的丰富功能,如代码补全、调试工具、图形化界面、集成开发环境等,Emacs通常需要安装和配置额外的插件来获得类似的功能。 阅读详情

作者: xilbert

1 字符串类

string-match 函数: 用指定的正则表达式去匹配字符串,将匹配的结果放到 match-data中。(match-data 用于存储emacs中字符串模式匹配中的匹配结果) 让我们看一个例子吧!

例 1:

? View Code LISP
1
2
3
(setq mystr "The quick fox jumped quickly.")
(string-match "\\(qu\\)\\(ick\\)"
                   mystr)   =>副作用:将匹配结果存储到match-data中

这条语句的意思是:用\(qu\)\(ick\) 模式对mystr进行搜索,将匹配的结果存储,并且也存储分组1\(qu\) 和分组2 \(ick\)的匹配结果。

那么怎么取出匹配的结果呢? 答案是使用 match-string

? View Code LISP
1
2
3
(match-string 0 mystr)      =>结果为quick,也就是模式匹配的结果
(match-string 1 mystr)      =>结果为qu   ,也就是第一个分组的匹配结果
(match-string 2 mystr)      =>结果为ick  ,也就是第二个分组的匹配结果

string-match 是用正则表达式去搜索字符串的,如果你想替换字符串,那怎么办呢? 那就要用到replace-regexp-in-string。

replace-regexp-in-string 函数:

用指定的正则表示式对字符串去搜索,将搜索到的模式用指定的字符串对原字符串进行替换。这个函数是非破坏性的,不会将你的原字符串破坏,函数返回的结果就是替换结果。
例1 :
假如你想将”d:/gnu/” 替换为”d:\\gnu\\” ,你可以这样写:

? View Code LISP
(replace-regexp-in-string "/" "\\\\" "d:/gnu/")

那么为什么将替代字符串写成\\\\,而不是\\ ? 实际上在emacs的正则表示式中,\\\\才代表一个\,而emacs的普通字符串中\\代表\ 。

问题1:emacs 的正则表示达式中\太多了,能不能用个函数将\(hello\) 转化为\\(hello\\) ?
答案 :我也想知道!在emacs 中,我还没找到哪个函数能将“\(hello\)”转化为”\\(hello\\)”,这是字符串转义的缘故。我只能用一个比较拙劣的方法来帮助我写emacs style regexp ——用一段perl代码:

? View Code PERL
1
2
3
4
5
#!/usr/bin/perl
print "please input a raw regexp ,i will generic a emacs style regexp\n";
$str =<STDIN>;
$str =~ s/\\/\\\\/g;
print $str;

问题2:如果你想将^ . * $ 等特殊字符作为普通字符,你不想手动写成^ ,\\. 等形式,有什么办法帮助你吗?
答 :用 regexp-quote 函数。 例:(regexp-quote “^”) 自动生成”^”

问题3:如果你想用正则表达式表达搜索”hello” 或”world” ,你不想手动写成”hello\\|world”,有无简化的办法?
答: regexp-opt 可以办到。 例:(regexp-opt ‘(“hello” “world”)) 输出了”\\(?:hello\\|world\\)”

让我们再次回到replace-regexp-in-string函数来,它的功能真的很强大,替代字符串中还可以引用分组
例2 : (replace-regexp-in-string “\\(hello\\)\\(world\\)” “\\2\\1″ “helloworld”)
这个表达式的意思是:用\(hello\)\(world\)模式对“helloworld”进行搜索,将搜索到的结果用“\\2\\1”进行替换。函数返回了”worldhello”

2 hook类函数

emacs 中存在大量的hook ,有emacs-lisp-mode-hook ,c-mode-hook 等,基本上一个mode就提供了一个hook 。那么hook的本质是什么,我们能不能设计一个自己的hook ? 实际上,hook 是一个elisp 表,这个表中存放着要被调用的函数的符号(或代码)。
让我们用一个例子说明一下吧!

? View Code LISP
1
2
3
4
5
6
7
8
(defvar myhook nil) ;;定义myhook为空表
(add-hook 'myhook '(lambda ()
          (insert "fun1 was called ")))  ;;将这个匿名函数1加入到myhook表中去
 
(add-hook 'myhook '(lambda ()
          (insert "fun2 was called "))) ;;将匿名函数2加入myhook表中去
 
(run-hooks 'myhook) ;; =>执行这条语句会在光标后插入fun2 was called fun1 was called

那么为什么会先执行匿名函数2呢,而不是匿名函数1呢?这是因为add-hook 会将函数插入到myhook列表的头部,并且run-hooks 是从myhook头执行到尾的,因此匿名函数2会先执行。
那么这样设计有什么好处呢?好处是比较明显的,比如用户执行了(add-hook ‘c-mode-hook ‘myfun),其中myfun是要修改了c-mode中的某个变量值的,但不巧的是,系统在此之前就执行了(add-hook ‘c-mode-hook ‘firstfun),并且firstfun也要设置这个变量的值。那么通过这样设计,你的修改将不会成功(因为你的修改会被系统的系统覆盖),这样就保证了用户不能随意地改变mode的状态,保证了系统的稳定性。

既然知道了hook就是一个表,那么我们也就可以用操作列表的方式来操作它了。

? View Code LISP
1
2
3
(setq myhook (cdr myhook))      ;; =>丢弃myhook中的第一个函数
(setq myhook (reverse myhook))  ;; =>将myhook反转,改变函数执行的顺序
(setq myhook nil)               ;; =>将myhook清空

3 用来高亮的函数

1、hi-lock-set-pattern 函数
它的作用为在当前buffer中对匹配的模式应用用户指定的face
我之前在text-mode 中打开outline-minor-mode,结果标题没有被高亮,经千辛万苦终于将问题解决,这得益于hi-lock-set-pattern函数。我是这样设置的:
先定义一些face ,如下:

? View Code LISP
1
2
3
4
5
6
7
8
9
10
11
(defface cyan-face
  '((t :foreground "cyan"))
  "我自定义的cyan face")
 
(defface yellow-face
  '((t :foreground "yellow"))
  "我自定义的yellow face")
 
(defface magenta-face
  '((((class color)) :foreground "magenta"))
  "我自定义的magenta face")

这些face 都是从ahei-face.el中的,那里面还有许多其他的face。

然后然加入下面的代码,让outline-minor-mode启动时执行hi-lock-set-pattern,将标题高亮。

? View Code LISP
1
2
3
4
5
(add-hook 'outline-minor-mode-hook
          '(lambda ()
             (hi-lock-set-pattern "^\\*[^*]*?$" 'cyan-face)
             (hi-lock-set-pattern "^\\*\\*[^*]*?$" 'yellow-face)
             (hi-lock-set-pattern "^\\*\\*\\*[^*]*?$" 'magenta-face)))

2、hi-lock-unface-buffer
既然有高亮的函数,就应该有取消高亮的函数,它就是hi-lock-unface-buffer了

4 编译类函数

complie 函数非常强大,它的参数是个编译命令字符串,它会执行这个编译命令,执行完后会打开一个buffer,其主模式为compilation-mode。如果编译出错,会在它打开的buffer中输出出现错误的行数,这时就可以通过点击鼠标跳转到发生错误的代码处。如果编译成功,则会输出编译结果。
我们可以这样设置编译命令:

? View Code LISP
1
2
3
4
(compile "gcc hello.c")
(compile "c++ hello.cpp")
(compile "perl hello.pl")
(compile "d:/python/python25.exe hello.py")

5 将这些函数串起来

下面我会用一个例子将上面所讲的大部分函数串起来。
需求 :我想实现按f5就能编译当前buffer,并且要有错误定位功能,支持的语言可以添加(不要修改已经写好的代码)
实际环境:window xp ,cygwin
由于使用的是cygwin,调用gcc 时,gcc 需要cygwin类型的路径
这是emacs 给出的路径类型: d:/gnu/
在cygwin下是 :/cygdirve/d/gnu

实现:

? View Code LISP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
;;这个函数就是用来转换路径的
(defun change-to-cygwin-style-path (emacs-style-path-on-w32)
  (let ((full-path emacs-style-path-on-w32))
    (replace-regexp-in-string "\\(\\w+?\\):\\(\\w*\\)" "/cygdrive/\\1\\2" full-path)))
(change-to-cygwin-style-path (buffer-file-name))
 
(defvar my-compile-hook nil)
 
;;这是主函数,按f5执行此函数
(defun my-compile-main-fun ()
  (interactive)
  (run-hooks  'my-compile-hook))
 
;;这个函数用来编译现在用得到的语言写的代码,以后如果要用到其他语言,可以写个函数,然后加入到my-compile-hook中去。
(defun orginal-compile-fun ()
   (let ((mode major-mode)
    (compstr nil))
        (cond ((eq mode 'c-mode)
       (setq compstr (concat "gcc -std=\"c99\" " (change-to-cygwin-style-path (buffer-file-name)))))
      ((eq mode 'c++-mode)
       (setq compstr (concat "c++  " (change-to-cygwin-style-path (buffer-file-name)))))
      ((eq mode 'emacs-lisp-mode)
       (emacs-lisp-byte-compile))
      ((eq mode 'python-mode)
       (setq compstr (concat "python " (buffer-file-name)))
      )
      ((or (eq mode 'cperl-mode) (eq mode 'perl-mode))
       (setq compstr (concat "D:/Perl/bin/perl.exe " (buffer-file-name))))
      )
    (save-buffer)
    (if compstr 
    (compile compstr))))
;;将orginal-compile-fun加入my-compile-hook中
(add-hook 'my-compile-hook 'orginal-compile-fun)
 
;;将my-compile-main-fun 绑定到f5上
(global-set-key [(f5)] 'my-compile-main-fun)

如果有一天,你要用octave 语言,你可以这样扩展:

? View Code LISP
1
2
3
4
5
(add-hook 'my-compile-hook '(lambda ()
                              (if (eq major-mode 'octave-mode)
                                  (progn
                                    (save-buffer)
                                    (compile (concat "octave --silent " (buffer-file-name)))))))

使用hook机制是不是很方便呀,这样就不用去修改orginal-compile-fun的代码了。

ps:不知不觉罗嗦了这么多,其实我写这篇文章的目的有两个:1、是给初学emacs lisp的人介绍一下emacs字符串的操作和hook的机理以及强大的compile函数,希望有点用处。2、希望高手们也分享一下自己觉得很强大的emacs lisp 函数。

Emacs 行号与代码导航工具集锦 是一个为 Emacs 文本编辑器量身定制的模式,专注于提供更加丰富的行号显示与定制功能。与标准的行号显示相比,提供了以下几个方面的优势:定制化的行号显示:用户可以根据自己的需要选择行号的显示方式,例如颜色、字体、样式等。增加辅助信息:除了基本的行号外,还可以显示如版本控制状态、当前行的注释标记等附加信息。提高可读性:通过高亮显示当前行、可折叠代码块的行号等增强视觉效果,提升了代码的可读性。集成便捷性。 阅读详情

相关推荐

从任何地方轻松启动Emacs:OSX用户指南

本文还有配套的精品资源,点击获取 简介:Emacs作为一款功能强大的文本编辑器,深受程序员和科技爱好者的青睐。本文将指导OSX用户如何通过快捷方式创建、使用Automator服务、启动Emacs daemon、应用Emacs client、集成系统服务和个性化Emacs配置等步骤,实现从任何地方快速启动和使用Emacs。这不仅提升了工作效率,也展示了Emacs作为全能工具的...

weixin_34392511的博客 1293

Emacs学习笔记(7):简单的配置

继续Emacs学习计划。这是“初学者”阶段的最后一篇。完成本节的内容,就可以向“中级计划”进军了 : ) 经过一段时间的使用,已经大体适应了Emacs的快捷键,不过还是要参考命令备忘表。 Emacser通常要对Emacs进行定制,使用起来才会爽。据说Vimer嘲笑Emacser的一个理由就是: Emacser如果丢了配置文件就什么都干不了。 好吧好吧,这些争论和我没什么关...

weixin_30756499的博客 926

emacs lisp函数手册,版本24.3

emacs lisp 函数手册,emacs 24.3版本

Emacs入门到精通:开发者的高效编辑利器

Emacs是一款功能强大的文本编辑器,由GNU项目维护。其不仅仅是一个编辑器,更是一个集成开发环境(IDE)。Emacs的设计宗旨是可扩展和可定制,用户可以通过Emacs Lisp(Elisp)语言编写脚本和插件,来实现几乎任何功能。这使得Emacs在开发者社区中拥有极高的声誉和广泛的应用。Emacs提供了强大的文本编辑功能、文件管理、项目导航、版本控制、调试支持和编程语言的集成,这些特性使其成为了许多开发者的首选工具。

iShare_Carlos的博客 4767

国密(3)- 预主密钥/主密钥计算和Finished消息的加解密

国密的ECC-SM3-SM4-CBC模式下的预主密钥和主密钥的生成过程介绍,以及Finished消息的加解密介绍

weixin_43408952的博客 6509

MAX30102心率血氧传感器

估算AC、DC值的方法如下:找两个波谷点,两个波谷点之间有一个波峰点,两个波谷点相连成一条直线,与Y轴平行的线穿过波峰点会与两个波谷点连接成的直线相交于一点,这个点就是DC点,DC点的Y轴对应值就是直流分量,AC分量的值为波峰点到DC点之间的差值。在医院测量中常用的一种血氧采集方式,如下图所示,光电传感器和光源分别置于手指的两侧,光源穿过手指被另一侧的光电二极管接收,根据光衰减量计算血氧浓度。那么,根据上面的Beer-Lambert 定理,针对测量的具体场景,测量过程的衰减为三层穿透物质衰减量的叠加。

qq_41861711的博客 1万+

程序员小助手 | Emacs,最强编辑器,没有之一

Emacs的Logo -- 简书作者 谢恩铭 转载请注明出处 【程序员小助手】系列 在这个系列文章(不定期更新)中,小编会把这些年的编程学习和工作中使用到的个人感觉非常好的软件推荐给大家,希望能够共享美好资源,使大家提高编程和办事效率。 Emacs,最强编辑器,没有之一 小编知道,此标题一出,肯定会遭受广大群众“诟病”,说不好还会被其他编辑器的粉丝暗地里“干掉”。 比如,Vim,Subli

程序员联盟 4138

Qualcomm平台下基于QSEE的指纹识别方案移植之四TA移植

本文只介绍TA移植的过程,不做技术分析,关于TA开发另做记录。 一、TA介绍 TA,Trusted application 可信应用,是运行于QSEE中的可执行程序。 指纹TA文件如下,形式一般是 xxx.mbn; xxx.b0 ~ xxx.b6, xxx.flist, xxx.mdt; xxx.mbn 可以理解为其它几个文件的集合,签名的时候用的就是这个文件,签完名之后,有对应的工具将它...

梦路遥 7548

【开发工具】从入门到精通:Emacs 使用全攻略

学习 Emacs 就像是一场充满惊喜的冒险,从基础的文件操作、文本编辑,到深入探索模式运用、快捷键定制,再到打造个性化的界面和丰富的插件配置,每一步都让我们更深入地领略到它的强大魅力 。

大雨淅淅的博客 2950

【数字图像相关-OpenCorr学习笔记】Epipolar search原理+代码解析

OpenCorr是一个开源C++库,用于研究和开发数字图像相关(DIC)技术它提供了2D和立体声DIC的全功能模块,以及数字体积相关(DVC)。最近正在学习OpenCorr,为了更深层次地理解ICGN,我打算浅浅剖析Opencorr的代码,学习的过程中写下这篇学习笔记,以后忘记了还能回来看看。同时,作为一名在读研究生,希望能得到社区大佬的指点,以及跟同学们一起学习进步。这一期主要讲解Eipipolar search的原理,并且附上部分代码解析。

ywyywyy的博客 1356

PySpark机器学习生产化陷阱:跨节点依赖问题的7种解决方案

隐式依赖陷阱使用ldd解决方案:在基础镜像中预装和路径冲突终极解法依赖树瘦身技巧用conda-tree可减少40%环境体积PySpark机器学习生产化的核心矛盾在于分布式环境的确定性与灵活性不可兼得。轻量级方案(1-3)牺牲一致性换取灵活性重量级方案(4-6)牺牲灵活性换取确定性混合方案(7)针对特殊场景补充正如某AI平台架构师所言:“环境一致性不是技术问题,而是工程纪律问题选择适合团队当前阶段的方案,建立严格的依赖管理流程,才能让PySpark真正扛起生产环境的大旗。

datacanvas2426的博客 909

Emacs,最强编辑器,没有之一

小编知道,此标题一出,肯定会遭受广大群众“诟病”,说不好还会被其他编辑器的粉丝暗地里“干掉”。 比如,Vim,Sublime,Nano编辑器的粉丝可能就会来“踢馆”,VS或Eclipse的粉丝也兴许会“群起而攻”,但是小编只是表达一下自己的感受,为了效果也只能夸大一下了。 所以请拍砖的时候轻一点,鸡蛋少扔几个。如果扔的鸡蛋多也请多扔几个番茄过来,再来几根葱,这样我可以做番茄炒蛋,谢谢...

Curtis’Blog 3万+

逆向分析-SeparationPreview.aip-分色预览-结构分析(一)-x64dbg条件日志打印-命令表达式-PS脚本

从功能上分析,仅显示使用的专色这个功能,并没有触发插件接口。使用X64dbg加载illustrator进程,切换到句柄窗口,在窗口过程中,右键刷新获取界面。在x64dbg中,在UI中可以输入一些条件表达式,能够计算出对应的值,并打印在日志中。常用的,如果非暂停,输出第一个参数。参数二是utf16的指针,utf16@字符串地址,这里的字符串地址为[[ebp-108]]参数一是utf8的,utf8@字符串地址,这里的字符串地址为[ebp-28]从界面上分析,一个颜色列表,及仅显示专色的多选框组成。

插件开发 644

emacs-ffi:为Emacs提供高效的外部函数接口

emacs-ffi:为Emacs提供高效的外部函数接口 emacs-ffi 是一个为 Emacs 编辑器提供外部函数接口(FFI)的库。它基于 libffi 库,并依赖 Emacs 25 分支上的动态模块工作来加载到 Emacs 中。该项目功能齐全,尽管目前还处于较低层次。 项目介绍 emacs-ffi 项目的目标是使 Emacs 能够通过外部函数接口调用 C 语言编写的函数。它利用了 libff...

gitblog_00592的博客 819

自适应控制 (Adaptive Control) 算法详解及案例分析

自适应控制是一种能够在线调整控制器参数以适应系统动态变化的控制方法。其核心思想是通过实时估计系统参数或调整控制器参数,使系统在不确定性或动态变化的环境中仍能保持稳定性和性能。

闲人编程的博客 4084

STM32实战开发(120):基于STM32的智能pH值检测系统开发

pH值检测:通过pH传感器实时检测溶液的酸碱度。数据采集与处理:STM32单片机通过模拟信号采集并进行数字化处理。数据显示与控制:通过LCD或OLED屏幕实时显示pH值。数据存储与上传:将数据保存在本地SD卡,或通过Wi-Fi模块上传至云平台。低功耗设计:适合长时间运行,减少能源消耗。本文介绍了如何基于STM32单片机开发智能pH值检测系统,涉及硬件设计、软件开发及应用实现。该系统可以实时检测pH值,并将数据展示、存储、上传至云平台,适用于环境监测、农业、水处理等多个领域。

2201_76125393的博客 1816

终极Emacs配置指南:M-EMACS完整教程与快速上手技巧

想要打造一个功能强大且易于使用的Emacs配置环境吗?M-EMACS正是你需要的解决方案!这是一个全功能的GNU Emacs配置发行版,专为提升你的编程和工作效率而设计。无论你是Emacs新手还是资深用户,M-EMACS都能为你提供开箱即用的优质体验。 ## 🚀 M-EMACS是什么? M-EMACS是一个高度定制化的GNU Emacs配置框架,它整合了88个精选包,覆盖了从代码编辑到日常办

gitblog_00770的博客 870

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Emacs相关

Emacs,全称,是一款功能强大、历史悠久的文本编辑器。它最早由 Richard Stallman 于 1976 年开发,是自由软件运动的重要组成部分。Emacs 的设计理念强调可定制性和扩展性,使得它不仅仅是一个编辑器,更是一个高度灵活的集成工作环境。

pumpkin84514的博客 1324

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Oh My Emacs包管理终极指南:使用el-get轻松管理Emacs插件

Oh My Emacs是一个为新手和高级用户提供的开箱即用的Emacs配置方案,它采用el-get作为默认的包管理器,替代了内置的package.el,让插件管理变得更加简单高效。通过el-get,用户可以轻松安装、更新和删除Emacs插件,实现一站式的Emacs插件管理体验。 ## 为什么选择el-get作为Emacs包管理器? el-get是一个功能强大的Emacs包管理器,它支持多种安装

gitblog_00218的博客 1056

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

emacs-kick:为Vim/Neovim用户定制的Emacs配置起点

emacs-kick:为Vim/Neovim用户定制的Emacs配置起点 项目介绍 emacs-kick 是一个面向熟悉 Vim、Neovim 和 Vi 的用户设计的Emacs配置。这个项目旨在让用户在尝试Emacs时,无需放弃他们钟爱的终端以及工具,如 yazi、starship、lazygit 和 lazydocker 等。通过 emacs-kick,用户可以在终端多路复用器(如 tmux 或...

gitblog_01191的博客 798

探索高效Emacs配置:modi .emacs.d

探索高效Emacs配置:modi .emacs.d 项目介绍 modi .emacs.d 是一个精心设计的Emacs配置项目,由Kaushal Modi开发并维护。该项目专为Emacs 25.1及以上版本设计,确保用户能够享受到最新的Emacs特性和优化。无论你是Emacs的老用户还是新手,modi .emacs.d 都能为你提供一个高效、个性化的编辑环境。 项目技术分析 modi .emacs....

gitblog_00620的博客 898

Emacs:从文本编辑器到编程文化的象征

Emacs诞生于1975年MIT人工智能实验室,最初是基于TECO编辑器的宏集合。经过Richard Stallman等人的改进,它演变为一个可扩展的编辑系统。1980年代,GNU Emacs成为首个自由软件版本,奠定了现代Emacs的基础。Emacs的核心特点是高度可扩展性、自文档化和模式化编辑机制,支持多种编程语言和跨平台运行。作为自由软件运动的里程碑,Emacs不仅是一个文本编辑器,更发展成包含邮件、调试等功能的完整计算环境。其独特的快捷键设计和社区文化对开发者影响深远。

技术分享 1464

Doom Emacs安装教程:10分钟完成跨平台Emacs配置

Doom Emacs是一款专为追求极致性能和简洁设计的Emacs框架,它为Emacs用户提供了开箱即用的现代化配置体验。无论你是Emacs新手还是资深用户,Doom Emacs都能在10分钟内帮你搭建一个功能强大的开发环境。本文将为你提供完整的Doom Emacs安装指南,涵盖Windows、macOS和Linux三大平台。 ## 📋 前置要求 在开始安装之前,请确保你的系统满足以下基本要求

gitblog_00236的博客 1362

Emacs-langtool:Emacs下的语法检查利器

Emacs-langtool:Emacs下的语法检查利器 在现代文本编辑和编程工作中,语法检查是提高文档质量的重要步骤。Emacs作为一种强大的文本编辑器,拥有丰富的插件生态系统。Emacs-langtool正是这样一个能够为Emacs用户提供高效语法检查的插件。 项目介绍 Emacs-langtool是一个Emacs插件,它利用了LanguageTool的强大语法检查功能,帮助用户在Emacs环...

gitblog_00931的博客 674

Emacs-Helm:Emacs用户的终极增强工具

**Emacs-Helm** 是一个为Emacs用户设计的强大框架,专注于增量完成和选择缩小。它不仅为开发者提供了一个易于使用的API,用于构建自己的Helm应用程序,还内置了强大的搜索工具和数十种预构建的命令,几乎可以完成任何操作的自动补全。对于将Emacs作为主要工作环境的开发者来说,Helm是一个不可或缺的工具。它已经被许多Emacs高级用户广泛采用,并且可以通过Emacs的包管理器轻松安装...

gitblog_01024的博客 942

大智若愚,大巧若拙的Emacs。

       第一次知道Emacs这个东西是在一本《程序员修炼之道》(不错的薄书,按字义翻译过来是‘注重实效的程序员’之类的,可能译者认为这个名字更能吸引中国读者吧)上,原作者比较推崇它;前些日子在学习Java,下载了JDK和文档再就是选择编程软件,我首选了热门的Eclipse,但是它是一个IDE对于入门的我来说会养成一些不好的习惯,正巧一天在网上看到如下内容:      James Goslin

NextLeap的专栏 1805
上一篇: Emacs的C语言排版缩进模式选择
下一篇: debain(wheezy) 安装增强功能提示无权限解决方法
ly0303521
博客等级 码龄17年 135粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值