热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Emacs的简单配置与常用快捷键

本文由编程笔记#小编为大家整理,主要介绍了Emacs的简单配置与常用快捷键相关的知识,希望对你有一定的参考价值。在我的一篇日志中提到过Emacs,这里把我自己使用时的一些简单配
本文由编程笔记#小编为大家整理,主要介绍了Emacs的简单配置与常用快捷键相关的知识,希望对你有一定的参考价值。


在我的一篇日志中提到过Emacs,这里把我自己使用时的一些简单配置列出来以供大家参考。



  1. 界面配置
      1.1 安装插件
      先创建目录~/.emacs.d/plugins/,然后进入这个目录,这里用来摆放我们要下载和使用的插件(大家可以按照自己喜好设定,不一定非要这样设置)。
        1.1.1 下载window-numbering插件,用于窗口快速切换;

    git clone https://github.com/nschum/window-numbering.el.git

        1.1.2 下载emacs-neotree插件,用于显示左侧树形目录;

    git clone https://github.com/jaypei/emacs-neotree.git

        1.1.3 下载tabbar插件,用于设置标签栏;

    git clone https://github.com/dholm/tabbar.git

        1.1.4 安装emacs-goodies-el插件,用于配色主题。

    sudo apt install emacs-goodies-el

      下载安装好上述插件后,编辑~/.emacs文件(如果没有就创建)。文件内容如下:

    ;; ---------------------界面设置---------------------
    ;; 关闭启动画面
    (setq inhibit-startup-message 1)
    ;; 隐藏工具栏
    (tool-bar-mode 0)
    ;; 显示行号
    (global-linum-mode 1)
    ;; 设置行号格式
    (setq linum-format "%d ")
    ;; 显示列数
    (setq column-number-mode 1)
    ;; 当前行高亮
    (global-hl-line-mode 1)
    ;; 设置窗口的宽度与高度
    (set-frame-width (selected-frame) 120)
    (set-frame-height (selected-frame) 40)
    ;; 设置窗口切换快捷方式(通过Alt+1,2,3,...来快速切换窗口)
    (add-to-list ‘load-path "~/.emacs.d/plugins/window-numbering.el")
    (require ‘window-numbering)
    (window-numbering-mode 1)

    ;; 设置左侧树形目录
    (add-to-list ‘load-path "~/.emacs.d/plugins/emacs-neotree")
    (require ‘neotree)
    (neotree-toggle) ;; 让启动时就显示左侧目录
    (global-set-key [f8] ‘neotree-toggle) ;; 设置快捷键f8来打开隐藏目录
    (setq projectile-switch-project-action ‘neotree-projectile-action)

    ;; 垂直分屏,上面窗口分配的大小
    (windmove-right) ;; 切换到右边的窗口
    ;; 注意,window的尺寸比frame小,我这里window实际只有34,frame有40
    ;; 所以在划分大小时要计算好比例
    (split-window-vertically 25)

    ;; 设置标签栏
    (add-to-list ‘load-path "~/.emacs.d/plugins/tabbar")
    (require ‘tabbar)
    (tabbar-mode 1)
    (global-set-key [(meta k)] ‘tabbar-forward) ;; 快捷键M-k前翻
    (global-set-key [(meta j)] ‘tabbar-backward) ;; 快捷键M-j后翻
    ; close default tabs,and move all files into one group
    (setq tabbar-buffer-list-function
    (lambda ()
    (remove-if
    (lambda(buffer)
    (find (aref (buffer-name buffer) 0) " *"))
    (buffer-list))))
    (setq tabbar-buffer-groups-function
    (lambda()(list "All")))
    (set-face-attribute ‘tabbar-button nil)

    ;; 设置标签栏颜色
    (set-face-attribute ‘tabbar-default nil
    :background "gray23"
    :foreground "white")
    (set-face-attribute ‘tabbar-selected nil
    :inherit ‘tabbar-default
    :background "gray"
    :foreground "black"
    :box ‘(:line-width 2 :color "white") )
    (set-face-attribute ‘tabbar-unselected nil
    :inherit ‘tabbar-default
    :box ‘(:line-width 1 :color "gray"))
    ;; 设置标签之间的间距
    (custom-set-variables ‘(tabbar-separator (quote (0.4))))

    ;; 设置代码配色主题
    (require ‘color-theme)
    (color-theme-initialize)
    ;;(color-theme-bharadwaj-slate) ;; 配色方案
    ;;(color-theme-charcoal-black)
    (color-theme-goldenrod)
    ;;(color-theme-classic)

      其中的一些尺寸、颜色大家看自己的喜好,自行设置。保存、退出,再打开Emacs,效果如下:
    技术分享图片



  2. 功能配置
      2.1 下载插件auto-complete,用于代码补全。下载目录和上面的一样。

    git clone https://github.com/auto-complete/auto-complete.git

      2.2 然后还是编辑~/.emacs文件,增加以下内容:

    ;; ---------------------功能设置---------------------
    ;; 关闭自动备份
    (setq make-backup-files nil)
    ;; 把urdf文件做为xml文件模式处理
    (setq auto-mode-alist (cons ‘("\.urdf$" . nxml-mode) auto-mode-alist))
    ;; 把xacro格式的文件做为xml文件模式处理
    (setq auto-mode-alist (cons ‘("\.xacro$" . nxml-mode) auto-mode-alist))
    ;; 把launch格式的文件做为xml文件模式处理
    (setq auto-mode-alist (cons ‘("\.launch$" . nxml-mode) auto-mode-alist))
    ;; 自动缩进
    (global-set-key (kbd "RET") ‘newline-and-indent)

    ;; ---------------------代码补全---------------------
    ;; 配置auto-complete
    (add-to-list ‘load-path "~/.emacs.d/plugins/auto-complete/")
    (require ‘auto-complete-config)
    (add-to-list ‘ac-dictionary-directories
    "~/.emacs.d/plugins/auto-complete/dict/")
    (ac-config-default)

     
      上面那三个文件格式处理代码大家可以不用加,那是我用在ROS仿真建模用的。(以上代码被分成好几块摆放,是因为放在一块儿的话,博客显示会有问题)
      
      以上只是对Emacs很简单的一些配置,我目前也只是用到这些(其他功能在用其他工具),所以就没有进行更深入的订制了。网络上相关文章比较多,大家根据自己的实际需要进行取舍。此外,大家可以把配置好的~/.emacs.d目录与~/.emacs文件复制保存在自己的备份中(移动硬盘、U盘、云盘……),以后重装系统或在别的电脑上安装时直接复制粘贴过去就可以使用,不用再重新下载编辑。


  



  
  下面列出一些常用的快捷键,其中C-开头的表示是按Ctrl键,M-开头的表示是按Alt键。



  1. 基本命令

    a. 关闭Emacs:C-x C-c
    b. 强制取消当前操作:C-g


  2. 文件操作命令

    a. 打开/新建文件:C-x C-f
    b. 保存当前缓冲区:C-x C-s
    c. 当前缓冲区另存为:C-x C-w
    d. 关闭当前缓冲区并打开新文件:C-x C-v
    e. 关闭当前缓冲区:C-x k


  3. 窗口命令

    a. 切换窗口:C-x o
    b. 快捷窗口切换:M-1, 2, 3, ...(注意:需要下载配置window-numbering.el插件,前面已有介绍。)
    d. 进入shell模式:M-x shell(这里是按了Alt+x键后,再键盘输入shell命令)


  4. 编辑命令

    a. 复制标记区内容:M-w
    b. 粘贴:C-y
    c. 剪切:C-w
    d. 删除一行:C-k
    e. 撤销:C-x u
    f. 全选:C-x h


  5. 搜索命令

    a. 向下搜索:C-s
    b. 向上搜索:C-r



推荐阅读
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 在生产环境中进行高效部署与优化 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • 在Unity中进行3D建模的全面指南,详细介绍了市场上三种主要的3D建模工具:Blender 3D、Maya和3ds Max。每种工具的特点、优势及其在Unity开发中的应用将被深入探讨,帮助开发者选择最适合自己的建模软件。 ... [详细]
  • 优化后的标题:PHP分布式高并发秒杀系统设计与实现
    PHPSeckill是一个基于PHP、Lua和Redis构建的高效分布式秒杀系统。该项目利用php_apcu扩展优化性能,实现了高并发环境下的秒杀功能。系统设计充分考虑了分布式架构的可扩展性和稳定性,适用于大规模用户同时访问的场景。项目代码已开源,可在Gitee平台上获取。 ... [详细]
  • Python 数据分析领域不仅拥有高质量的开发环境,还提供了众多功能强大的第三方库。本文将介绍六个关键步骤,帮助读者掌握 Python 数据分析的核心技能,并深入探讨六款虽不广为人知但却极具潜力的数据处理库,如 Pandas 的替代品和新兴的可视化工具,助力数据科学家和分析师提升工作效率。 ... [详细]
  • RancherOS 是由 Rancher Labs 开发的一款专为 Docker 设计的轻量级 Linux 发行版,提供了一个全面的 Docker 运行环境。其引导镜像仅 20MB,非常适合在资源受限的环境中部署。本文将详细介绍如何在 ESXi 虚拟化平台上安装和配置 RancherOS,帮助用户快速搭建高效、稳定的容器化应用环境。 ... [详细]
  • 在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转
    本文探讨了在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转的技术细节。通过详细分析Swscale的工作原理和实际应用,展示了如何在Android环境中高效地进行图像格式转换。此外,还介绍了FFmpeg的全平台编译过程,包括x264和fdk-aac的集成,并在Ubuntu系统中配置Nginx和Nginx-RTMP-Module以支持直播推流服务。这些技术的结合为音视频处理提供了强大的支持。 ... [详细]
  • 在MFC开发过程中,利用Windows内置的文件对话框可以显著提高文件操作的效率。本文总结了使用文件对话框进行文件选择和处理的经验,详细介绍了相关API的调用方法和参数设置,如`CFileDialog`类的使用、结构体`OPENFILENAME`的配置以及如何获取选中的文件路径。通过这些技巧,开发者可以快速实现文件的打开、保存等功能,提升应用程序的用户体验。 ... [详细]
  • 本文探讨了将PEBuilder转换为DIBooter.sh的方法,重点介绍了如何将DI工具集成到启动层,实现离线镜像引导安装。通过使用DD命令替代传统的grub-install工具,实现了GRUB的离线安装。此外,还详细解析了bootice工具的工作原理及其在该过程中的应用,确保系统在无网络环境下也能顺利引导和安装。 ... [详细]
  • Docker网络基础探讨了如何通过高效的技术手段实现跨主机容器间的顺畅通信与访问。本文深入分析了Docker网络架构,特别是其在多主机环境下的应用,为Go语言开发者提供了宝贵的实践指导和理论支持。 ... [详细]
  • 技术日志:在Ubuntu 20.04上部署与移除MySQL 8的详细步骤
    技术日志:在Ubuntu 20.04上部署与移除MySQL 8的详细步骤 ... [详细]
  • Webpack与Babel的配置详解及优化策略深入探讨了这两个工具在现代前端开发中的应用。Babel作为一款强大的JavaScript编译器,能够将最新版的JavaScript代码转换为广泛兼容的版本,从而突破浏览器对ES规范的支持限制,确保开发者可以无缝使用最新的语言特性。本文不仅介绍了如何高效配置Webpack与Babel,还提供了多种优化策略,以提升构建性能和代码质量。 ... [详细]
  • tarzxvffilename.tar.gz顺便我们了解下linux下压缩与解压命令大全.tar解包:tarxvffilename.tar打包:tarc ... [详细]
  • 利用Mac上的Remote Desktop Manager实现与Ubuntu 16.04及Windows 10的远程桌面连接优化方案
    随着远程办公需求的增加,如何在不同操作系统之间高效地进行远程桌面连接成为了一个重要问题。本文介绍了一种利用Mac上的Remote Desktop Manager实现与Ubuntu 16.04及Windows 10远程桌面连接的优化方案。通过详细的操作步骤和配置方法,帮助用户在多平台环境中顺利进行远程工作,避免常见的技术障碍。 ... [详细]
author-avatar
-____Ddddear_534
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有