首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在emacs 24.3.1的.emacs文件中定义自动缩进和自动配对?

如何在emacs 24.3.1的.emacs文件中定义自动缩进和自动配对?
EN

Stack Overflow用户
提问于 2016-03-06 05:40:31
回答 1查看 133关注 0票数 0

仅供参考,我是.emacs文件的新手。

我喜欢将我的.emacs文件设置为自动缩进和自动配对,这样可以使编写代码的速度更快。我已经找到了一些关于如何独立完成这些事情的信息,但我不确定如何在我拥有的emacs版本中将它们放在一起。最后,我想将这些定义设置为我正在用哪种语言编写代码。作为开始,我将使用java作为示例。

显然,自动配对",(,‘是相当直接的。我只想让它自动插入一个闭合",),’并将光标放在中间。

对于{,我希望它自动插入两个换行符和光标位于中间的结束}。

示例

代码语言:javascript
复制
while (true) {
  <--- cursor would be here with auto-indent of 2 spaces
}

我也希望这个工作嵌套花括号,其中适当的缩进。

示例

代码语言:javascript
复制
while(true) {
  if (...) {

  }
}

以下是到目前为止我在.emacs文件中的内容:

代码语言:javascript
复制
(defun java-autoindent ()
  (when (and (eq major-mode 'java-mode) (looking-back "[{;]"))
    (newline-and-indent)))
(add-hook 'post-self-insert-hook 'java-autoindent)

显然,这只是插入一行并自动缩进,但我也希望在下面的行中包含关闭的}。我也试过使用电子配对,但那不起作用。

我的愿望清单可能有点不切实际。我甚至不确定这是不是可能的,但我会很高兴我能得到最接近的。任何帮助我朝着正确的方向前进的人都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-03-06 11:18:41

Emacs为您编写代码的每种语言类型定义了模式。有些模式是从其他模式派生而来的,并且有一种称为prog-mode的模式,大多数编程模式都是从它派生而来的。

语言的模式是定义缩进之类的东西的地方,因为这些东西往往是特定于语言的。缩进的规则可能非常复杂,这就是为什么人们经常使用与父模式具有相似缩进样式的模式,并从中派生出新的模式。

看看emacs elisp手册中的模式和派生模式。

关于添加匹配/结束分隔符,请看一下电子对模式(我想是在emacs 24.4中-我正在运行25,忘记了它是什么时候引入的)。

考虑到您需要输入一些代码、一些换行符并将光标放在特定位置,您可能需要查看emacs的模板解决方案之一。yasnippet是一个流行的选择,在其中很容易定义新的模板。您还可以下载/安装许多已打包的yasnippet模板。如果你不喜欢yasnippet,google emacs模板,看看有几个框架。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35820243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档