Doom-Emacs安装和基本使用方法

2023-05-16

1 Doom-Emacs用前须知

Doom-Emacs(下面称为Doom)是Emacs的一个比较复杂的配置包,主要目的是使Emacs拥有Vim的出色编辑能力,同时让新手配置起来相对容易些。 但后一个目标几乎是不可能的事情,因为你既要会用Emacs,还要会用Vim,而它们是全宇宙学习难度最高的两个编辑器。

如果这两个编辑器你都没有用过,建议:

  • 分别安装纯纯的Vim和Emacs
  • 按出厂配置(不更改配置不安装插件),学习使用一段时间

就算Doom把Emacs彻底打扮成别人家孩子的样子,Doom也还是Emacs的一个配置包。所以使用Doom的时候还是要求了解Emacs自家的东西多些,对Vim的要求并不高。 Vim相关的内容掌握下面的就可以顺利使用Doom(其实也不少):

  • Vim的模式概念:普通模式、插入模式、视图模式等
  • 模式的切换方法
  • 不同模式下的操作

2 安装和基本配置

2.1 安装

  • Doom要求Emacs版本26.3以上。本人操作系统使用的是Debian稳定版(buster),安装源中提供的版本较低,要从Emacs站点下载源代码编译。看说明编译安装即可,没有什么困难,不赘述。其他依赖的软件如git、ripgrep、find和fd都可以使用Debian官方源安装。
  • 参考项目主页的说明安装Doom就没有问题

       注意:Doom使用Emacs的配置目录“~/.emacs.d”,请把原配置文件移走备份好!

git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d
~/.emacs.d/bin/doom install

安装要下载很多软件包,耐心等待完成。

2.2 基本配置

  • Doom的个人配置文件在“~/.doom.d”目录下,原个人配置目录“~/.emacs.d”已被当成Doom的“系统”目录
  • .doom.d目录下初始有三个配置文件
    • init.el
    • packages.el
    • config.el

初次使用可完全不改配置,也可修改init.el文件,注释掉一部分不使用的配置。修改前两个文件都要运行下面命令,做一些“同步”设置:

~/.emacs.d/bin/doom sync

修改“~/.profile”文件,把“~/emacs.d/bin”路径添加到程序路径,方便直接使用doom命令。

NOTE:Doom配置文件的封装有点过份,可修改性太差,老Emacser要是感觉不方便,可考虑 bling/dotemacs (github)作为替代方案。

3 使用方法

3.1 理解Emacs的按键表示方法

  • C-x 表示同时按下Ctrl和x
  • M-x 表示同时按下Meta(Alt或者Esc键)和x键
  • SPC表示空格键
  • S 有时表示SHIFT键(放在连字号前时)
  • RET或者<return>表示回车键
  • TAB或者<tab>表示制表符键
  • 如果不是和控制键联合使用,表示顺序按键
    • C-c ab:表示先同时按下Ctrl和c键,再顺序按下a和b
    • C-c C-c a:表示同时按下Ctrl和c键两次,再按a
    • SPC f s:表示顺序按下SPC、f和s键

3.2 状态(state)切换

Vim的“模式”在Doom中称为“状态”(因为“模式”在Emacs中已有其他意义),是Evil包引入和实现。

  • 默认是普通状态(normal state),可进行vim普通模式下的操作
  • 按Esc键可从其他状态返回普通状态
  • 从普通状态切换到其他状态的按键
    • i:插入状态
    • v:视图状态
    • V:行视图状态(整行选取)
    • C-v:块视图状态(矩形框选取)
  • C-z:正常Emacs状态切换,可在所有模式中使用该按键。“Emacs状态”是没有打扮过的Emacs,该状态下可以使用原生Emacs的编辑方式。

除Emacs状态外,其他状态下的操作参考Vim的使用方法。

3.3 空格键(SPC)使用

  • SPC在Doom的普通状态和视图状态下有特殊用途,它相当于Emacs的Ctrl或Meta命令前缀,用于执行命令
  • 如果按下SPC键后不操作,窗口下方会出现命令提示菜单。

4 常用SPC命令

4.1 SPC f:文件操作

  • f:打开/查找文件
  • d:打开目录(Dired)
  • s:保存文件
  • r:最近文件列表
  • y:拷贝当前文件名(路径)
  • C:大写,拷贝当前文件(询问目标位置)
  • D:大写,删除当前文件
  • R:大写,重命名/移动文件
  • S:另存

4.2 SPC b:缓冲区操作

  • b:缓冲区列表
  • n/[:切换到前一个缓冲区
  • p/]:切换到后一个缓冲区
  • s:保存当前缓冲区(使用命令和 SPC f s 可能不同)
  • S:保存所有缓冲区
  • d/k:关闭当前缓冲区
  • O:关闭其他缓冲区
  • K:关闭所有缓冲区
  • z:隐藏/最小化当前缓冲区
  • Z:关闭所有隐藏的缓冲区

4.3 SPC w:窗口操作

此菜单命令非常多,常用的有:

  • v:垂直分割窗口
  • s:水平分割窗口
  • h/j/k/l:在窗口间移动光标(激活编辑窗口)
  • w/W:向前/后窗口移动光标(比hjkl顺手)
  • H/J/K/L:窗口位置置换/移动命令
  • T:撕开窗口(把当前撕出来,试试就知道什么效果了)
  • q:关闭当前窗口
  • n:和s作用相同
  • m:最大化当前窗口(全部、水平或垂直最大化,有提示)
  • =:等分所有窗口(其他调整大小的命令不大实用,不如自己绑定按键)

4.4 SPC o:打开其他程序/界面

  • p:打开/关闭treemacs目录树
  • T:打开终端
  • f:打开一个新窗口(显示当前缓冲区内容,等于在多窗口中同时编辑一个文件,内容同步!)
  • a:org agenda (SPC a A 等于 SPC o a a)

4.5 SPC t:切换(toggle)

  • l:行号
  • b:字体模式
  • F:全屏模式等

4.6 其他

  • SPC q q:退出程序
  • SPC h:帮助菜单,还有主题切换(SPC h t,不知道为啥放到这里)
  • SPC p:项目操作。本人不习惯此类操作,不介绍。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Doom-Emacs安装和基本使用方法 的相关文章

随机推荐

  • 【python】修改pip程序默认源为清华源

    一行代码实现pip源更换为清华源 Python原来的镜像源在国内速度非常慢 xff0c 因此直接将全局pip的源改为国内清华源 xff0c 将下列代码复制到cmd中 xff0c 运行即可 pip config set global inde
  • Mybatis+PageHelper自己手动写分页后,sql语句最后仍然自动加上了limit解决方案

    问题 xff1a 由于mysql查询语句涉及到多表联查 xff0c 因此自带的PageHelper分页返回的数目会不对 xff0c 需要自行分页 自行分页没有使用PageHelper start 后发现sql语句最后一行仍然自动加上了lim
  • 数据查询举例

    1 查询LIU老师所授课程的课程号和课程名 select cno cname from c where teacher 61 39 LIU 39 2 查询年龄大于23岁的男生的学号和姓名 select sno sname from s wh
  • swift对接整合ceph

    基本原理科普 xff1a ceph对象存储组件radosgw原生支持swift接口 xff0c 对接只是把openstack的权限认证配置到ceph里 xff0c 创建endpoint时指向ceph rgw地址就可以了 我们要做两件事儿 第
  • openstack octavia部署 ussuri U版

    注 xff1a 1 octavia源码下载地址 xff1a cd home git clone https a href http github com openstack octavia git github com openstack
  • 【Java中 任意几个数字获取其所有的排列组合】

    今天在工作中碰到一个问题 xff0c 在java 中输入比如1 2 3 三个数 我想要得到其所有的排列组合 比如 123 312 132 231 213 321 这些 上网找了找别人的算法 xff0c 稍加整理 xff0c 分享给大家代码
  • python-使用百度接口进行OCR

    1 先按照百度的接口模块 pip install baidu aip 要是速度慢的话 xff0c 直接使用清华源的安装方式 pip install i https pypi tuna tsinghua edu cn simple baidu
  • iOS UITableView cell自适应内容高度

    定义UITableView 并且遵守两个协议 firstTableView 61 UITableView alloc initWithFrame CGRectMake 0 64 kScreenWidth kScreenHeight 64 s
  • C++和python代码实现朗读文本的功能(附源代码)

    闲来无事 xff0c 平时就喜欢看看小说之类的 突发奇想 xff0c 好多小说软件上的听小说功能都是收费的 xff0c 咱们写个小程序读一读 xff0c 岂不是很哇塞 xff01 看了一些资料 xff0c 这里给大家分享出来 xff0c 已
  • linux 实现回收站功能

    话不多说 xff0c 直接代码 bin sh 创建回收站目录 MYRM 61 34 var tmp rm 34 if d MYRM then mkdir MYRM fi 移动文件到回收站 function mvFile filePath 6
  • Linux下的内网穿透+访问内网网站(利用阿里云)

    本人亲测 两台主机设置 xff1a 内网 xff1a 本地ubantu16 xff0c 外网 xff1a 阿里云centos7 4 xff08 点击购买一台阿里云实例 xff09 前提 xff1a 本地和阿里云 xff1a 关闭防火墙 xf
  • 来此加密增加对zerossl和buypass免费证书支持

    众所周知 xff0c 现在网站基本上都要开启HTTPS的访问 而目前提供免费的证书平台也越来越多 xff0c 其中Let 39 s Encrypt最为知名 xff0c 其提供了泛域名和多域名的证书申请 xff0c 给广大站长和企业节省了一大
  • buypass:可全民使用的免费六个月SSL证书

    一 缘起 自从Let 39 s Encrypt出圈以来 xff0c 由于其免费的特质深得大家的喜爱 随着大家广泛地使用 xff0c 对他的不满意也随之而来 一般来看不满意的有以下两点 xff1a 1 证书有效期比较短 2 域名数量限制 3
  • 关于Linux命令行环境下无线网卡的配置

    无线网卡的一种配置方法 xff0c 通过wpa supplicant并依据SSID及口令生成相关配置文件 xff0c 然后讲配置文件挂接进网卡的的配置即可 xff08 树莓派中也使用这种方法 xff09 当然也可以直接在interface无
  • 申请永久免费的域名SSL证书的方法

    现在主流都在推荐使用SSL证书 xff0c 部署了SSL证书能自动激活浏览器显示 锁 型标志 xff0c 我们可以在浏览器的地址栏看到 https 开头的网址 SSL证书意味着在客户端浏览器和Web服务器之间已建立起一条SSL安全加密通道
  • 免费域名证书最新申请方式大全

    目前市场环境下 xff0c 可获得域名SSL证书的方式有很多 xff0c 一般有付费和免费划分 对于想免费使用域名SSL证书的朋友 xff0c 这里收集整理了几个常用的SSL证书申请方式 对于SSL证书的用处 xff0c 简单的来说 xff
  • Let's Encrypt 在线证书申请:来此加密

    Let s Encrypt是国外一个公共的免费SSL项目 xff0c 由 Linux 基金会托管 xff0c 它的来头不小 xff0c 由Mozilla 思科 Akamai IdenTrust和EFF等组织发起 xff0c 目的就是向网站自
  • Setup Kubernetes on a Raspberry Pi Cluster easily the official way!

    转自 http blog hypriot com post setup kubernetes raspberry pi cluster Kubernetes shares the pole position with Docker in t
  • R语言网络分析1:BioC的graph图系

    BioC项目中 xff0c 网络图的处理通过不同的软件包进行 xff1a graph xff1a 图实现方法 类定义 xff08 graphNEL graphAM和graphBAM xff09 和基本函数RBGL xff1a 针对BioC
  • Doom-Emacs安装和基本使用方法

    1 Doom Emacs用前须知 Doom Emacs xff08 下面称为Doom xff09 是Emacs的一个比较复杂的配置包 xff0c 主要目的是使Emacs拥有Vim的出色编辑能力 xff0c 同时让新手配置起来相对容易些 但后