emacs 订阅
Emacs,著名的集成开发环境和文本编辑器。Emacs被公认为是最受专业程序员喜爱的代码编辑器之一,另外一个vim。EMACS,即Editor MACroS(编辑器宏)的缩写,最初由Richard Stallman(理查德·马修·斯托曼)于1975年在MIT协同Guy Steele共同完成。这一创意的灵感来源于TECMAC和TMACS,它们是由Guy Steele、Dave Moon、Richard Greenblatt、Charles Frankston等人编写的宏文本编辑器。自诞生以来,Emacs演化出了众多分支,其中使用最广泛的两种是:1984年由Richard Stallman发起并由他维护至今的GNU Emacs,以及1991年发起的XEmacs。XEmacs是GNU Emacs的分支,至今仍保持着相当的兼容性。Emacs使用Emacs Lisp,这种有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。 [1] 展开全文
Emacs,著名的集成开发环境和文本编辑器。Emacs被公认为是最受专业程序员喜爱的代码编辑器之一,另外一个vim。EMACS,即Editor MACroS(编辑器宏)的缩写,最初由Richard Stallman(理查德·马修·斯托曼)于1975年在MIT协同Guy Steele共同完成。这一创意的灵感来源于TECMAC和TMACS,它们是由Guy Steele、Dave Moon、Richard Greenblatt、Charles Frankston等人编写的宏文本编辑器。自诞生以来,Emacs演化出了众多分支,其中使用最广泛的两种是:1984年由Richard Stallman发起并由他维护至今的GNU Emacs,以及1991年发起的XEmacs。XEmacs是GNU Emacs的分支,至今仍保持着相当的兼容性。Emacs使用Emacs Lisp,这种有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。 [1]
信息
外文名
Emacs
定    义
一种强大的文本编辑器
运行环境
GNU/Linux,BSD,Solaris,Windows
中文名
编辑器宏
完    成
1975年
emacs发展历史
Emacs在1970年代诞生于MIT人工智能实验室(MIT AI Lab)。在此之前,人工智能实验室的ITS上运行的操作系统PDP-6和PDP-10的默认编辑器是一个叫TECO(Text Editor and Corrector)的行编辑器。与现代的文本编辑器不同,TECO将击键、编辑和文本显示按照不同的模式进行处理,稍晚出现的vi与它有些类似。在TECO上击键并不会直接将这些字符插入到文档里去,必须先输入一系列相应的TECO指令,而被编辑的文本在输入命令的时候是不会显示在屏幕上的。在如今还在使用的UNIX编辑器ed(ed)上,我们还能看到类似的工作方式。1970年代初,Richard Stallman访问Stanford AI Lab时见到了那里的"E" editor。这种编辑器有着所见即所得的直观特点,深深打动了Stallman。后来Stallman回到MIT,那时候MIT AI lab的黑客Carl Mikkelsen 已经给TECO加上了称作“Control-R”的编辑显示模式,使得屏幕能跟随用户的每次击键刷新显示。Stallman重写了这一模式,使它运行得更有效率,后来又加入了宏,允许用户重新定义运行TECO程序的键位。这一新版的TECO立刻在AI实验室流行开来,并且很快积累起了大量自定义的宏,这些宏的名字通常就以“MAC”或者“MACS”结尾,意为“宏”(macro)。两年后,Guy Steele承担起统一当时存在的各种键盘命令集的工作。Steele和Stallman经过一夜奋战,最终由Stallman完成了这一任务,包括一套扩展和注释新的宏包的工具。这个完成的系统被称作EMACS,代表“Editing MACroS”。根据Stallman的说法,他采用这个名字是“因为当时在ITS里还没有被当作缩写用过。”("because was not in use as an abbreviation on ITS at the time." )也有说法指出,当时波士顿在MIT附近有家名为“Emack & Bolio's”的商店出售的冰激凌很受欢迎,Dave Moon是那里的老主顾,他就将ITS上一个给文本排版的程序命名为BOLIO,然而Stallman并不喜欢甚或根本不知道那种冰激凌,此事后来成了黑客界的一桩公案。Stallman意识到过多的定制、在开发过程中事实上的分支以及针对特殊用途的限制,威胁着Emacs的发展。后来他写道:“ Emacs的发布基于社群共享,这意味着所有的发展都要反馈给我,由我进行整合和发布。("EMACS was distributed on a basis of communal sharing, which means all improvements must be given back to me to be incorporated and distributed.") ”最初的Emacs同TECO一样只能运行在PDP-10系统。Emacs虽然是在TECO的基础上发展起来的,不过它已经足以被认为是一个新的文本编辑器了。很快,Emacs就成为ITS上的标准编辑程序,接着由Michael McMahon移植到Tenex和TOPS-20系统上。
收起全文
精华内容
参与话题
问答
  • emacs

    2018-10-07 13:26:00
    Emacs https://www.gnu.org/software/emacs/download.html SpaceEmacs http://spacemacs.org/ https://github.com/syl20bnr/spacemacs https://github.com/adobe-fonts/source-code-pro ELPA镜像 ...
    Emacs
    https://www.gnu.org/software/emacs/download.html
    
    SpaceEmacs
    http://spacemacs.org/
    https://github.com/syl20bnr/spacemacs
    https://github.com/adobe-fonts/source-code-pro
    
    ELPA镜像
    http://elpa.emacs-china.org/
    https://mirrors.tuna.tsinghua.edu.cn/elpa/
    
    Spacemacs 用户
    添加下面的代码到~/.spacemacs的dotspacemacs/user-init()
    
      (setq configuration-layer-elpa-archives
          '(("melpa-cn" . "http://elpa.emacs-china.org/melpa/")
            ("org-cn"   . "http://elpa.emacs-china.org/org/")
            ("gnu-cn"   . "http://elpa.emacs-china.org/gnu/")))
    
    或者:添加下面的代码到~/.spacemacs的dotspacemacs/user-init()
    
    (setq configuration-layer-elpa-archives
        '(("melpa-cn" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/")
          ("org-cn"   . "http://mirrors.tuna.tsinghua.edu.cn/elpa/org/")
          ("gnu-cn"   . "http://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")))
    
    
    
    [macOS]
    安装Emacs
    $ brew tap d12frosted/emacs-plus
    $ brew install emacs-plus --with-modern-icon  // 此参数可选,可以用brew info emacs-plus查看参数
    $ ln -s /usr/local/opt/emacs-plus/Emacs.app /Applications
    安装SpaceEmacs
    $ git clone --recursive --depth 1 --single-branch -b develop https://github.com/syl20bnr/spacemacs ~/.emacs.d
    安装Source Code Pro字体
    $ brew tap caskroom/fonts && brew cask install font-source-code-pro
    安装ag
    $ brew install the_silver_searcher
    
    
    [linux]
    安装Emacs
    注:如果是centos桌面环境,需要安装一些开发包:
    $ sudo yum install gtk3-devel libXpm-devel libjpeg-devel giflib-devel libtiff-devel gnutls-devel -y
    
    $ sudo su
    # wget -P /usr/src/emacs-26.1 http://mirrors.ocf.berkeley.edu/gnu/emacs/emacs-26.1.tar.gz
    # chmod -R 755 /usr/src/emacs-26.1/
    # cd /usr/src/emacs-26.1/
    # tar xvzf emacs-26.1.tar.gz
    # ./configure
    # make
    # make install
    # whereis emacs
    emacs: /usr/local/bin/emacs /usr/libexec/emacs /usr/share/emacs /usr/share/man/man1/emacs.1.gz
    # cd ~
    # rm -rf /usr/src/emacs-26.1/
    # exit
    
    安装SpaceEmacs
    $ rm -rf ~/.emacs.d
    $ git clone --depth 1 https://github.com/syl20bnr/spacemacs ~/.emacs.d
    $ /usr/local/bin/emacs
    按提示一路回车完成配置。
    
    是否为默认的emacs
    $ which emacs       
    /usr/local/bin/emacs
    如果是其他的,需要检查PATH环境变量配置,或者重新登录会话。
    
    如果发送错误,用下面命令启动(走https)
    emacs --insecure
    
    安装Source Code Pro字体
    Pacman (Arch Linux)
    $ pacman -S adobe-source-code-pro-fonts
    Bower
    $ bower install git://github.com/adobe-fonts/source-code-pro.git#release
    npm 2.x
    $ npm install --fetch-only git://github.com/adobe-fonts/source-code-pro.git#release
    npm 3.x
    $ npm install git://github.com/adobe-fonts/source-code-pro.git#release
    其他方法
    https://github.com/adobe-fonts/source-code-pro/issues/17#issuecomment-8967116
    
    以CentOS/Debian为例:通过nodejs的npm下载字体,然后把字体复制到/usr/share/fonts里,然后执行fc-cache。
    先安装NodeJS:https://nodejs.org/en/download/package-manager/
    (centos)
    $ curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
    $ sudo yum -y install nodejs
    (debian)
    $ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
    $ sudo apt-get install -y nodejs
    然后用npm下载字体
    $ npm install git://github.com/adobe-fonts/source-code-pro.git#release
    以上也可以通过gitlab地址下载字体,而不是nodejs。
    然后复制字体
    $ sudo mkdir -p /usr/share/fonts/source-code-pro
    $ sudo cp -r node_moudles/source-code-pro/{EOT,OTF,TTF,WOFF,WOFF2} /usr/share/fonts/source-code-pro/
    $ sudo fc-cache
    
    [windows]
    http://mirror.rit.edu/gnu/emacs/windows/emacs-26/emacs-26.1-x86_64.zip
    spaceemacs配置目录:C:\Users\<username>\.emacs.d
    
    
    配置
    emacs ~/.spacemacs
    在dotspacemacs-configuration-layers中加入或者取消注释语言支持、自动完成等。
    
    dotspacemacs-elpa-timeout 5
    改为300
    
    将elpa源全部改为https开头
    
    安装markdown软件,支持markdown预览。
    brew install markdown

     

    转载于:https://www.cnblogs.com/Bob-wei/p/9749944.html

    展开全文
  • Emacs

    2015-06-13 11:53:35
    Emacs指令

    简单操作

    (事先申明:C 代表 Ctrl; M 代表 Alt)

    1,保存与关闭

    save: Ctrl + X + S || Ctrl+X and Ctrl+S
    close: Ctrl + X + C || Ctrl+X and Ctrl+C

    如果控制台(屏幕下方出现 I-Search 其实这是单独的Ctrl + S 等等情况),建议使用上面命令前先Esc + Esc…

    2,复制剪切粘贴

    cut: Ctrl + W
    copy: Alt + W
    paste : Ctrl + Y
    注意: emacs剪切或复制时,会将数据存入缓冲区中(不覆盖替代),也就是说粘贴的副本可以是有多种。使用方法是:在Ctrl + Y 之后 用 Alt + Y 选择适合的副本。

    3,撤销与重做

    undu: Ctrl + X U
    redu: Ctrl + G Ctrl + X U

    4,查找与替换

    search: Ctrl + S (向下查找) Ctrl + R (向上查找)
    按下后,会在最下方出现 ***search:(老手忽略:)输入要查找的关键字,按Ctrl + S 向下查找,按Ctrl + R 向上查找,按Ctrl + G 回到原位置(查找前)。

    replace: Alt + % (一般需要shift + 5) 输入被替换的关键词,回车,输入替换的词,回车。
    此时,按y表示替换并跳到下一个,按n忽略并跳到下一个,按^返回到上一个替换点,按q退出,按!表示替换剩下的所有。

    5,其他

    全选: Ctrl + X H


    进阶

    1,以二进制的形式查看文件:

    Alt + X hexl-mode
    想输入16进制的话:
    Alt + X hexl-insert-hex-char

    退出16进制模式
    Alt + X hexl-mode-exit
    参考来自:Emacs 16进制模式

    2, emacs编译c文件(其他语言都通用)

    Alt+x shell 进入shell模式;
    然后就是如同在shell中操作一样,gcc -o a.out sample.c
    注:尝试了使用mysql命令,可以执行,也就是这些指令并不是嵌套在emacs中的,而是Linux PATH 中的命令。
    操作结束后回编辑区,按 Ctrl+X B 后加buffername,此处输入当前文件名如(sample.c)即可,直接回车会到达默认区域(default)

    进阶请到(生活在Emacs中

    展开全文
  • EMACS

    2013-08-19 16:28:20
    掌握Emacs的快捷键可以说是Emacs爱好者的基本功,也是提高编辑速度和质量所必备的,但是初学者可能记不住那么多的快捷键必要时可以翻一下,最常用的快捷键数量也就数十个。Emacs的快捷键都是绑定于ctrl和alt(或称...

    掌握Emacs的快捷键可以说是Emacs爱好者的基本功,也是提高编辑速度和质量所必备的,但是初学者可能记不住那么多的快捷键必要时可以翻一下,最常用的快捷键数量也就数十个。Emacs的快捷键都是绑定于ctrl和alt(或称meta)上的,例如c-x就是ctrl+x,m-x就是alt+x。当然所有的按键都可以自定义。

    当要退出编辑时C-x C-c 代表着,先按C-x 再按C-c才可以退出编辑环境.

    文件操作

    • C-x C-v 打开一个文件,取代当前缓冲
    • C-x C-s 保存文件
    • C-x C-w 存为新文件
    • C-x i 插入文件
    • C-x C-q 切换为只读或者读写模式
    • C-x C-c 退出Emacs

    编辑操作

    • C-f 前进一个字符
    • C-b 后退一个字符
    • M-f 前进一个字
    • M-b 后退一个字
    • C-a 移到行首
    • C-e 移到行尾
    • M-a 移到句首
    • M-e 移到句尾
    • C-p 后退一行
    • C-n 前进一行
    • M-x goto-line 跳到指定行
    • C-v 向下翻页
    • M-v 向上翻页
    • M-< 缓冲区头部
    • M-> 缓冲区尾部
    • C-M-f 向前匹配括号
    • C-M-b 向后匹配括号
    • C-l 当前行居中
    • M-n or C-u n 重复操作随后的命令n次
    • C-u 重复操作随后的命令4次
    • C-u C-u 重复操作随后的命令8次
    • C-x ESC ESC 执行历史命令记录,M-p选择上一条命令,M-n选择下一条命令
    • C-d 删除一个字符
    • M-d 删除一个字
    • C-k 删除一行
    • M-k 删除一句
    • C-w 删除标记区域
    • C-y 粘贴删除的内容

    注意:C-y可以粘贴连续C-k删除的内容;先按C-y,然后按M-y可以选择粘贴被删除的内容

    • C-@ 标记开始区域
    • C-x h 标记所有文字
    • C-x C-x 交换光标位置和区域标记区开头
    • M-w 复制标记区域
    • C-_ or C-x u 撤消操作

    执行SHELL命令

    • M-x shell 打开SHELL
    • M-! 执行SHELL命令 (shell-command)
    • M-1 M-! 执行SHELL命令,命令输出插入光标位置,不打开新输出窗口
    • M-| 针对某一特定区域执行命令(shell-command-on-region), 比如 C-x h M-|uuencode

    窗口操作

    • C-x 0 关闭本窗口
    • C-x 1 只留下一个窗口
    • C-x 2 垂直均分窗口
    • C-x 3 水平均分窗口
    • C-x o 切换到别的窗口
    • C-x s 保存所有窗口的缓冲
    • C-x b 选择当前窗口的缓冲区
    • C-x ^ 纵向扩大窗口
    • C-x } 横向扩大窗口

    缓冲区列表操作

    • C-x C-b 打开缓冲区列表
    • d or k 标记为删除
    • ~ 标记为未修改状态
    • % 标记为只读
    • s 保存缓冲
    • u 取消标记
    • x 执行标记的操作
    • f 在当前窗口打开该缓冲区
    • o 在其他窗口打开该缓冲区

    目录操作

    • C-x d 打开目录模式
    • s 按日期/文件名排序显示
    • v 阅读光标所在的文件
    • q 退出阅读的文件
    • d 标记为删除
    • x 执行标记
    • D 马上删除当前文件
    • C 拷贝当前文件
    • R 重命名当前文件
    • + 新建文件夹
    • Z 压缩文件
    • ! 对光标所在的文件执行SHELL命令
    • g 刷新显示
    • i 在当前缓冲区的末尾插入子目录的内容
    • [n]m 标记光标所在的文件,如果指定n,则从光标所在的文件起后n个文件被标记
    • [n]u 取消当前光标标记的文件,n的含义同上
    • t 反向标记文件
    • %-m 正则标记
    • q 退出目录模式

    说明:在目录模式中,如果输入!,在命令行中包含*或者?,有特殊的含义。*匹配当前光标所在的文件和所有标记的文件,?分别在每一个标记的文件上执行该命令。

    程序编译

    • M-x compile 执行编译操作
    • M-x gdb GDB排错
    • M-x dbx DBX排错
    • M-x xdb XDB排错
    • M-x sdb SDB排错

    搜索模式

    • C-s key 向前搜索
    • C-s 查找下一个
    • ENTER 停止搜索
    • C-r key 反向搜索
    • C-s C-w 以光标所在位置的字为关键字搜索
    • C-s C-s 重复上次搜索
    • C-r C-r 重复上次反向搜索
    • C-s ENTER C-w 进入单词搜索模式
    • C-r ENTER C-w 进入反向单词搜索模式
    • M-x replace-string ENTER search-string ENTER 替换
    • M-% search-string ENTER replace-string ENTER 交互替换
    • C-r 在进入查找/替换模式后,该命令进入迭代编辑模式
    • C-M-x 退出迭代编辑模式,返回到查找/替换模式
    • C-M-s 向前正则搜索
    • C-M-r 向后正则搜索
    • C-M-% 正则交互替换

    SHELL模式

    • C-c C-c 相当于Bash下的C-c
    • C-c C-z 相当于Bash下的C-z
    • C-c C-d 相当于Bash下的C-d
    • M-p 执行前一条命令
    • C-n 执行下一条命令
    • C-c C-o 删除最后一条命令产生的输出
    • C-c C-r 屏幕滚动到最后一条命令输出的开头
    • C-c C-e 屏幕滚动到最后一套命令输出的结尾
    • C-c C-p 查看前一条命令的输出
    • C-c C-n 查看后一条命令的输出

    打印资料

    • M-x print-buffer 先使用pr,然后使用lpr
    • M-x lpr-buffer 直接使用lpr
    • M-x print-region
    • M-x lpr-region

    收发邮件

    • M-x mail 发送邮件, C-c C-s 发送,C-c C-c 发送并退出
    • M-x rmail 接受邮件

    EMACS编程

    emacs最大的问题在于入门门槛较高。它看起来和多数人想象中的IDE相差甚远,很多人看到emacs的第一眼就觉得它是个记事本(还是个非常难用的记事本),稍微好些的往往觉得emacs也就是个ultraEditor而已,真是暴殄天物了。

    本例基本编程环境是:

    • Debian GNU/Linux sid 操作系统
    • Gnome 2.10.0 桌面环境
    • GUN Emacs 23.0.0.1 for debian
    • 使用 Gnu tool chains(gcc,make,gdb等等)

    后面的叙述都基于上述环境。另外,本文主要针对C/C++程序开发,对其他语言有些也适用。

    基本流程

    写C++程序基本几个步骤:

    • 编辑代码
    • 编写Makefile
    • 编译代码,修改编译错误
    • 调试代码,修改逻辑错误

    当然,往往还需要阅读别人的代码。

    根据上述步骤,本文主要针对以下几个方面:

    • 配置Emacs,建立便利的代码编辑环境和Makefile编写环境。
    • 在Emacs中编译代码,并修改编译错误。
    • 在Emacs中配合GDB调试程序。
    • 利用cscope和ecb在emacs中阅读代码。

    基本环境设置

    编辑环境配置

    要写C++程序,当然要用到cc-mode插件。CC-Mode原本是支持C语言的,但现在也能支持很多语言,比如 C++,JavaObjective-CCORBAAWKPike等等。CC-Mode是gnu-emacs的标准插件。如果您要求不高,那么默认的配置或许就能满足。CC-Mode的各种行为都可以自由地定制.

    这里本例的.emacs文件中关于CC-Mode配置的部分,仅供参考:

    ;;;; CC-mode配置  http://cc-mode.sourceforge.net/
    (require 'cc-mode)
    (c-set-offset 'inline-open 0)
    (c-set-offset 'friend '-)
    (c-set-offset 'substatement-open 0)
    
    ;;;;本例的C/C++语言编辑策略
     
    (defun my-c-mode-common-hook()
      (setq tab-width 4 indent-tabs-mode nil)
      ;;; hungry-delete and auto-newline
      (c-toggle-auto-hungry-state 1)
      ;;按键定义
      (define-key c-mode-base-map [(control \`)] 'hs-toggle-hiding)
      (define-key c-mode-base-map [(return)] 'newline-and-indent)
      (define-key c-mode-base-map [(f7)] 'compile)
      (define-key c-mode-base-map [(meta \`)] 'c-indent-command)
      ;;  (define-key c-mode-base-map [(tab)] 'hippie-expand)
      (define-key c-mode-base-map [(tab)] 'my-indent-or-complete)
      (define-key c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu)

    注意一下,上面最后两行是代码自动补齐的快捷键。

    ;;预处理设置
    (setq c-macro-shrink-window-flag t)
    (setq c-macro-preprocessor "cpp")
    (setq c-macro-cppflags " ")
    (setq c-macro-prompt-flag t)
    (setq hs-minor-mode t)
    (setq abbrev-mode t)
    )
    (add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
     
    ;;;;我的C++语言编辑策略
    (defun my-c++-mode-hook()
    (setq tab-width 4 indent-tabs-mode nil)
    (c-set-style "stroustrup")
    ;;  (define-key c++-mode-map [f3] 'replace-regexp)
    )

    自动补齐

    自动补齐通常用的都是hippie-expand。不过有时候会觉得这个自动补齐“傻”了一点,常会补齐出一些毫不相干的东西,因为hippie-expand是根据你敲过的词和kill-ring等进行判断的,并不对程序语法进行分析。

    所以你还需要安装一个代码分析工具,然后把它加进hippie-expand的扩展策略里去。我们可以用semantic。

    Semantic是CEDET 中的一个工具,CEDET是Collection of Emacs Development Environment Tools的缩写,它包含了好几个工具,都挺不错的。

    您可以在.emacs中对Semantic进行配置,下面是本例的.emacs相关的配置,仅供参考:

    导入cedet:

    (load-file "~/lib/emacs-lisp/cedet-1.0pre3/common/cedet.el")
    

    配置Semantic的检索范围:

    (setq semanticdb-project-roots 
    (list
    (expand-file-name "/")))
    

    自定义自动补齐命令,如果在单词中间就补齐,否则就是tab。

    (defun my-indent-or-complete ()
      (interactive)
      (if (looking-at "\\>")
          (hippie-expand nil)
        (indent-for-tab-command))
      )
     
    (global-set-key [(control tab)] 'my-indent-or-complete)

    hippie的自动补齐策略,优先调用了senator的分析结果:

    (autoload 'senator-try-expand-semantic "senator")
     
    (setq hippie-expand-try-functions-list
          '(
            senator-try-expand-semantic
            try-expand-dabbrev
            try-expand-dabbrev-visible
            try-expand-dabbrev-all-buffers
            try-expand-dabbrev-from-kill
            try-expand-list
            try-expand-list-all-buffers
            try-expand-line
            try-expand-line-all-buffers
            try-complete-file-name-partially
            try-complete-file-name
            try-expand-whole-kill
            )
          )

    注意一下前面CC-Mode配置中有这么两行:

    (define-key c-mode-base-map [(tab)] 'my-indent-or-complete)
    define-key c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu)
    

    这样,我们在CC-Mode中就可以调用自定义的hippie补全了,快捷键是Tab。

    另外还把快捷键“Alt + / ”绑定到了semantic-ia-complete-symbol-menu命令上,这是semantic的命令,它会根据分析结果弹出补齐的菜单,效果如下图显示:

    Thumbs semantic-ia.jpg

    CEDET中还有一个不错的工具是speedbar,你可以用它在多个文件中快速切换。在本例的.emacs配置文件里,把speedbar关联到了F5上:

    (global-set-key [(f5)] 'speedbar)
    

    这样用F5就可以调出speedbar,效果如下:

    Thumbs speedbar.jpg

    编译和调试程序

    按上面的配置,写完程序和Makefile文件后,在Emacs源代码窗口中按F7就可以进行编译。因为在my-c-mode-common-hook()函数里,有这么一行:

    (define-key c-mode-base-map [(f7)] 'compile)
    

    默认情况下,emacs的compile命令是调用make -k,本例把它改成了make。你也可以把它改成其他的,比如gcc之类的。改下面的“make”就行了。

    '(compile-command "make")
    

    Emacs会划分一个窗格显示编译的消息,在编译结束后,emacs会自动将编译器的输出和程序关联起来,告诉你第几行的程序有问题。直接在出错的行号上按Enter,就可以跳转到相应文件的相应行。其实我通常都是用鼠标中键去点出错行号:)

    搞定了编译错误后,接着要和逻辑错误斗争了。其实对简单的程序来说,把中间结果打印到终端是最简单好用的调试办法:)不过稍微复杂点的程序就会晕菜了,这时我们就需要拿gdb跟踪程序流程了。

    你用下面的命令就可以启动gdb了。

    M-x gdb
    

    gdb的命令就不在这里说了,它的文档几乎到处都是。emacs把gdb的命令和快捷键做了绑定,对于常用的命令,还是输入快捷键比较方便。比如,C-c C-n是Next line,C-c C-s是step in,其实用的最多的快捷键也就是这两个。

    下面是本例的gdb效果图:

    Thumbs gdb.jpg

    阅读代码

    在emacs下读代码通常有三种工具,最简单的是etags,最复杂的是ecb(emacs code browser),位于中间的是cscope。

    etags和ctags一样,只不过前者是用于emacs的,后者是用于vi的。

    使用tags之前要先对源代码分析建立tags文件,在代码所在目录中运行:etags -R 即可。



    展开全文
  • emacs入门

    千人学习 2018-05-20 13:08:04
    emacs和vim一样是受欢迎的编辑器之一。目前国内用vim的用户较多,vim有编辑器之神的号称,而emacs被称为神的编辑器,开个玩笑,哈哈,希望通过这个教程可以让大家喜欢上emacs
  • Emacs教程Learn_GNU_Emacs

    2018-09-30 15:59:35
    emacs中文教程,emacs中文手册,Emacs基础教程,Learn_GNU_Emacs
  • Mastering Emacs

    2016-08-07 20:16:37
    Mastering Emacs
  • emacs .emacs GNU Emacs可能不是Unix上最古老的交互式文本编辑器-可以说它早于Vi编辑器或与之匹配-它也不是现存的唯一Emacs 。 但是,它肯定是POSIX上最受欢迎的Emacs和最好的编辑器之一。 或者它是直到全新的编辑器...

    emacs .emacs

    GNU Emacs可能不是Unix上最古老的交互式文本编辑器-可以说它早于Vi编辑器或与之匹配-它也不是现存的唯一Emacs 但是,它肯定是POSIX上最受欢迎的Emacs和最好的编辑器之一。 或者它直到全新的编辑器,如原子VSCode支架 ,来到今天的全新开源景观。 现在,健壮的文本编辑器有很多选择,其中许多迭代了Emacs的思想和传统,您可能想知道GNU Emacs是否仍然有用。

    自1983年以来的Emacs

    今天的开源与GNU Emacs于1983年动摇了编程世界时的情况有所不同。当时Emacs令人激动,因为它确实是同类产品中最好的,并且可以免费在昂贵且专有的Unix安装基础上共享。 如今,Emacs只是许多主要针对程序员而设计的编辑器之一,其中最好的也是开源的。

    使用Emacs,您不仅可以调整主题元素,也可以仅鼓吹一个很棒的插件。 当您入侵Emacs配置时,您正在改变Emacs的运行方式以及与之交互的方式。 您可以创建自己的Emacs体验,并且可以将体验保持尽可能长的时间。

    以文本形式远程运行

    以功能为特征,Emacs拥有的任何功能都可能出现在现代编辑器中。 软件的行为方式通常是这样:应用程序从其前辈那里借用并集成了功能,因为这些功能被认为是基线期望。 但是,关于Emacs的一件事很难克服:它可以在终端中作为纯文本界面运行而不会丢失任何功能。

    Emacs的核心是Lisp解释器。 您可以将其视为Python IDLE,但可以使用Lisp的方言而不是Python。 它可以作为终端中的文本界面,具有GTKAquaLucid或其他的GUI界面运行,也可以作为另一个Emacs会话中的客户端运行。 虽然您可能无法使用某些依赖于图形服务器的特殊功能(例如,仅终端不支持以图形文件形式打开PDF ),但所有核心功能和大多数扩展功能都与它们相同用GUI。

    无遥测

    并非所有的文本编辑器都会跟踪您,但是有些可以。 一些编辑者不仅会记录您对该产品的初始下载,还会主动跟踪您的使用情况,无论您是否意识到。 正是由于这个原因,存在像VSCodium这样的项目:几乎没有附带任何跟踪软件,即可帮助您编译编辑器。 不幸的是,编译“非官方”版本的编辑器的行为(在某种程度上,可以将真正的开源编辑器称为“官方”)使您无法运行某些扩展,因此有时您的选择是要么运行二进制文件,要么赞助公司提供或运行功能降低的编辑器。

    GNU Emacs帮助普及的免费软件许可的保证是,这不会发生。 您自己编译的GNU Emacs可以与GNU二进制文件或分发存储库提供的产品完全相同。 实话实说,有时自己进行编译可能会更好,因为您可以根据自己的特定需求调整其构建方式,但是您永远不必无意放弃其功能。

    黑客代码,而不是API

    开源意味着您无论如何都可以破解代码。 但是,在编辑器上进行黑客攻击和进行API调用之间有很大的不同。 对于许多现代文本编辑器,当他们宣称自己是“可入侵的”甚至“可扩展的”时,他们实际上是在指核心开发人员提供的API。 这绝不是问题,但是与修改引擎本身的代码不同。 使用Emacs,当您为编辑环境编写Lisp修改时,无论是.emacs配置文件中的单行代码还是为成千上万的其他用户提供的精美插件,都在重新编程运行内容。

    有时候,抽象是一件好事。 通过实现API,开发人员可以为扩展其产品提供许多切入点,例如为同一编辑器提供JavaScript,Python和Ruby接口。 另一方面,API是API,这意味着您只能使用所提供的内容。 如果API开发人员没有预期您要访问某些数据对象,那么除非您对API本身进行黑客攻击(使用开源程序,这是完全可能的),否则您就无法访问该数据对象。

    但是,Emacs是Lisp解释器,可确保您可以访问所有内容。 从某种意义上讲,这是Unix本身的承诺的实现:它赋予普通用户对其环境的最终控制权。 在Emacs中,您可以开发在Emacs中运行的整个应用程序。 如果您想开发应用程序但又没有时间设计GUI并构建使它们变得有意义的复杂代码,则可以将Emacs用作脚本语言和平台。 许多公司已经做到了这一点,有时取得的成功可以与Emacs本身的流行相媲美

    生产力最大化

    如果您使用的是在通用约定(例如Ctrl + C复制和Ctrl + V粘贴)之前发明的编辑器,那么您就可以学习了。 首先,Emacs键盘符号可能会令人困惑,例如Cx Cf打开文件或Md向前切割单词的指令。 有减轻这种情况的方法。 您可以激活CUA模式 ,该模式使用Ctrl + C之类的快捷键进行复制。或者您可以花时间创建其他键盘方案,以便使用自己喜欢的快捷键( Ctrl + O打开, Ctrl + Q退出,等等)。 但是,像大多数坚持使用它的人一样,您可能会发现,一旦学习了Emacs并将其有时晦涩的命令提交到内存中,就很难使用其他任何东西。 一位Emacs用户沉迷于Emacs按键绑定,以至于他创建了一个LibreOffice插件,因此他可以像Emacs一样使用LibreOffice!

    很好地使用Emacs时,键入单词和键入用于编辑这些单词的命令序列之间几乎没有任何区别。 您的大脑不必在撰写句子和返回几个单词之间进行快速切换,也无需保存文件,复制和粘贴等等。 对于Emacs来说都是一样的,而且您的手指永远不会闲着。 没有更好的方法来最大化生产率。

    要熟悉Emacs,需要进行练习,但不仅仅需要学习游戏机的控制器,还需要学习乐器。 但是,一旦将其内部化,Emacs就会释放出与游戏机相同的乐趣(尝试使用Mx tetris ),并且获得的灵感几乎与乐器一样。

    现代工具

    像在开源程序中一样,使用Emacs,您可以在他人的辛勤工作基础上发展。 通过正确组合Emacs软件包,您可以将Emacs转换为智能交互式开发环境(IDE),过于有用的打字机,角色扮演游戏(RPG)控制面板,议程,日历应用程序,多媒体播放器和多很多。

    从本质上讲,开放源代码不是一种非常有竞争力的野兽。 您可以根据需要使用Emacs,也可以使用其他编辑器。 您不受任何单一工具的忠诚度或合同约束。 GNU Emacs是现代重要的开放源代码编辑器,它以某些重要和重要的方式支持软件以及用户的自由和便利。 如果您尚未尝试过Emacs,请将其用于测试驱动器,以查看您可以如何使用它。

    翻译自: https://opensource.com/article/20/2/who-cares-about-emacs

    emacs .emacs

    展开全文
  • Emacs配置文件

    千次下载 热门讨论 2011-11-19 00:06:14
    这是我的emacs配置文件,和我的blog相对应的
  • emacs入门_Emacs入门

    2020-07-15 01:52:49
    emacs入门 许多人说他们想学习Emacs ,但是许多人在最短暂的相遇后就回避了。 这不是因为Emacs不好甚至如此复杂。 我认为,问题在于人们实际上并不想学习Emacs。 他们希望对Emacs的传统感到满意。 他们想了解神秘的...
  • emacs 学习

    2020-12-13 21:01:29
    @[TOC] emacs学习 emacs学习 hello, emacs
  • Mastering emacs

    2018-01-19 16:11:40
    高清,非影音版,PDF格式。是入门者的经典教材。 Mickey Petersen emacs lisp
  • emacs学习使用emacs

    2020-08-30 14:33:55
    文章目录emacs 帮助打开终端emacs emacs 帮助 快捷键 行为 <C-h ?> 帮助 <C-h T> 教程 <C-h m> 查看当前启用的模式 <C-h c><按键> 查看按键的功能名称 <C-h K>...
  • emacs .emacsHow to make emacs remember last editing positions in files. It will be convenient next time I open the same file the cursor automatically moves to the position I was last time editing the ...

空空如也

1 2 3 4 5 ... 20
收藏数 19,062
精华内容 7,624
关键字:

emacs