新手的Emacs Doom

我曾经必须面对的最高学习曲线之一就是进入Emacs。 多亏了Urbint的所有同事,我终于破解了第一级的概念,实际上能够在这个庞大的编辑器(或* cough *操作系统)的范围内成为一名富有成效的开发人员。

在花了一些时间从头开始构建我自己的点文件之后,团队发现了一个名为Doom的惊人配置包(非常感谢Henrik Lissner将其组合在一起)。 对于任何阅读此书的Emacs纯粹主义者,您现在可能会厌恶地关闭该选项卡。 《毁灭战士》是围绕“ 邪恶模式”构建的,旨在使VI用户感到宾至如归。 对于希望真正开始使用Emacs进行生产的任何人,我认为编译我使用的最常用功能以及它们在Doom中的配置将很有帮助。 如果您是Emacs专业人士,并且只是想了解Doom,那么其中的一些内容将是重复性的,并且可能最好只是阅读Doom项目上的README,但如果您希望开始并仍然有点迷失在Emacs中,希望对您有所帮助。

要开始使用,请确保已安装Emacs ,然后按照Doom安装指南进行操作: https : //github.com/hlissner/.emacs.d

Emacs密钥绑定哲学

Emacs键绑定的三个核心概念是修饰符和弦序列

修饰键是以下任意一项。 其他都是“非修改者密钥”:

和弦由零个或多个修改键与一个非修改键同时按下组成。 例如,“ Cx”是用于同时按下Ctrl和“ x”然后释放它们的和弦。 “ Csv”是用于同时按下Ctrl,Command(或Windows)和v的和弦。

序列是一系列和弦,连续按下并释放。 Emacs中最重要的命令“ Cx Cc”是一个很好的序列示例。 您同时按下“ Ctrl”和“ x”,然后释放它们,然后同时按下“ Ctrl”和“ c”,然后释放它们,瞧,您正在退出Emacs。

毁灭注意: Emacs有一个称为“ evil模式”的特殊扩展,可模拟许多类似于vi的功能。 “毁灭战士”非常以邪恶模式为中心,本文的其余大部分内容都涉及使用为其配置的各种键绑定。 最大的部分是“邪恶领导者”的概念,它基本上是您在序列中第一步操作时所按的键,然后打开可能的命令的新分支。 在《毁灭战士》中,邪恶的首领默认设置为空格键。 因此,例如,要将屏幕拆分为两个并排的窗口,可以按“ SPC wv”。 在通过实际示例进行学习时,请牢记领导者的概念。

设置项目

如果您更熟悉Eclipse或IntelliJ之类的IDE,那么您可能已经想到了一个项目概念。 它基本上是一个特定代码库的文件夹(可能在版本控制下),该文件夹几乎是一个独立的内聚单元。 在Emacs中,这种分组和标识通常由Projectile进行管理。 对于Doom,默认情况下已安装。

为了在已有的项目中使用此功能,需要让Projectile知道项目所在的位置。 在Doom内部,您可以通过修改自己的自定义配置文件夹中的init.el来实现:

〜/ .emacs.d / modules / private / /init.el

例如,我的用户名是“ jdemaris”,所以我的文件夹是〜/ .emacs.d / modules / private / jdemaris是我的自定义文件夹。 将您所有的更改都保留在此处可以使新版本发布时更安全地更新Doom配置。 在init.el文件中,我添加了一些Projectile项目:

(弹丸添加已知项目“〜/ Projects / playground / elixir”)
(弹丸添加已知项目“〜/ Projects / playground / otp”)
(弹丸添加已知项目“〜/ Projects / playground / expostal”)
(弹丸添加已知项目“〜/ Projects / playground / benchfella”)

您还应该能够自己创建一个文件夹并添加一个init.el文件,指向您要使用Emacs编辑的一个或两个项目。

打开和浏览项目

完成此步骤后,打开Emacs,我们可以尝试切换到项目! 打开emacs后,尝试执行以下序列:

SPC页

即,按空格键,然后将其释放,按p,然后释放,然后再次按p并释放。 您将从底部看到一个小的模式幻灯片,列出您定义的项目!

您可以使用箭头键在其中进行选择,或者(如果您已经熟悉一些常用的键绑定)则按ctrl-j向下移动,而ctrl-k向上移动。 更好的是,如果要切换的项目列表很长,则可以开始输入名称以过滤列表! 找到要处理的项目并选择它后,可以按Enter。

这不会直接打开项目,因此当您还没有看到顶部的内容时,请不要感到惊讶。 相反,这将以底部的小模式(称为“迷你缓冲区”)打开该项目中的文件列表。 同样,您可以使用上面列出的相同导航方法选择要打开的第一个文件。 找到文件并按Enter键后,您将在主窗口中看到该文件,并且可以开始对其进行编辑。

默认情况下,屏幕将处于“正常”模式,这意味着它正在等待命令(就像您打开vi一样)。 如果您按“ i”键,它将转换为INSERT模式,您可以像在vi中一样键入文本。 要返回正常模式,请按Escape键。 回到正常模式后,您可以使用以下顺序导航到同一项目中的其他文件:

SPC SPC

这将打开已经熟悉的导航器,并让您选择另一个文件以切换到同一项目中。 如果要从其他项目打开文件,则可以再次使用前面的“ SPC pp”序列。 如果要在已打开的文件之间切换(在Emacs中这些当前打开的屏幕称为“缓冲区”),则可以使用:

SPC,

邪恶模式的emacs非常具有视觉冲击力,您的老朋友“:w”和“:q”也可以保存和退出。

窗口管理和导航

如果您一次只能在屏幕上显示单个内容,那么编辑器有什么好处? 效果不是很好,它会使您的4k显示器无法充分利用。 在Emacs中,您可以轻松地将屏幕水平和/或垂直拆分为包含不同数据的不同窗口 。 在后台,Emacs打开了一堆缓冲区 ,每个打开的要编辑的文件一个。 当您打开一个窗口时,它将为该窗口分配一个缓冲区。 如果碰巧在两个不同的窗口中打开了相同的文件,则实际上是在编辑相同的缓冲区! 因此,如果您编辑一个窗口的内容,则会看到在具有相同文件的所有其他窗口上发生的更改。 如果您有一个较长的文件,并且想在编辑另一部分时查看它的一部分,那么这实际上是超级有用的。

那么如何创建这些新窗口? 要将当前窗口分为两个与Doom并排的窗口,请按:

SPC wv

这样会为您打开一个拆分窗口,并在两个窗口中打开相同的缓冲区:

您可能会开始在这些按键中看到一种模式。 它们实际上是分类的! SPC是邪恶的领导者,因此它表示您想要执行某些命令。 “ w”实际上是“窗口”类别。 如果您确实忘记了要按哪个键,但是您仍然记得该类别,那么Doom会设置插件来指导您完成整个过程。 例如,按:

SPC w

将在迷你缓冲区中打开此指南部分:

您可以看到“ v”执行邪恶窗口vsplit 。 如果您想将窗口分为顶部和底部,您能看到要按哪个键而不是“ v”吗? 我会给您一个提示-它只是称为邪恶窗口拆分

打开一些窗口后,您需要能够在它们之间移动。 您的鼠标实际上可以工作,但这不是Emacs风格的。 有几种不同的方法,但我最喜欢移动的是:

而且,如果您想摆脱其中一些窗口怎么办? 要关闭当前选择的窗口:

SPC厕所

您也可以使用Ctrl-X 0(零)。 您可以使用这些窗口执行许多其他操作。 在按“ SPC w”后浏览显示的选项列表,然后尝试一下!

文件结构导航(新树)

如果您不太了解您的项目布局是什么样子,并且更愿意看到文件系统的树该怎么办? 不要害怕! Neotree是Emacs中使用最广泛的文件系统树状视图之一,并且预先配置了Doom。

要打开Neotree视图:

SPC开启

您几乎可以在任何地方进行此操作(插入模式除外-因此,请考虑可以在任何地方使用:w或:q)。 真正重要的是,这实际上是一个明智的选择! 如果您当前不在Projectile项目中,则它将从您的主文件夹开始。 但是,如果您已经选择了一个项目并在该上下文中工作,那么它将打开该项目的树状视图。

您可以使用箭头键在树上上下移动,或者如果您已经习惯了它-h,j,k和l也可以使用。 在文件上按ENTER键将在原始窗口中将其打开,并将光标焦点移至该窗口。

要在neotree中创建一个新文件,以便您可以开始对其进行编辑,请按“ c”键。 它将在迷你缓冲区中打开一个对话框,让您指定文件的路径。 键入路径后,按Enter键,它将关闭迷你缓冲区并在neotree中创建文件(和任何父文件夹)供您选择和打开。

要删除在neotree中选择的文件或文件夹,请按:

抄送

如果您当前在neotree窗口中并且想要关闭它,则只需按Escape键或“ q”键即可。 “ SPC wc”仍然可以使用,但是对我来说,转义更加直观,因为我感觉自己正在关闭一个临时对话框。

使用终端

最后,如果您想在CLI中执行您尚未(或不知道)键绑定的操作,该怎么办? 您是否需要为此离开Emacs? 不要害怕!! 您可以直接在Emacs中打开一个终端实例作为其窗口之一。 我个人觉得这对于执行与git相关的命令非常方便,因为我对git的肌肉记忆与CLI的联系远比与编辑器的联系多。

要打开CLI窗口,请按:

SPC OT

您可能早先已经有了这些类别的想法。 由于我们将“ SPC ot”用于终端,将“ SPC on”用于neotree,因此您可能会猜测“ o”是打开弹出窗口的类别。

您可以在此处执行所需的任何CLI操作,甚至可以使用窗口导航键在编辑窗口和CLI窗口之间切换。 一旦完成了终端,您可以按以下命令将其关闭:

Cx 0(零)

这会将其关闭,并返回到正常编辑状态。

结论

最后一条提示-如果您确定某个命令必须存在,但不确定该命令的名称,请按键盘上的Alt-X(或“ Mx”),您将获得缓冲区来实际键入命名的命令进入Emacs。 实际上,这里列出的每个键序列实际上都与一个函数名称相关联,您也可以通过搜索它来调用该函数。 如果您确定实际上根本不希望调用函数,则始终可以按Ctrl-G取消操作过程中的所有操作。

这只是勉强了解您可以使用的那种功能,但是希望它可以帮助您克服最初的学习曲线,并开始Emacs向导的道路!