【问题标题】:Emacs command to indent code by 4 spaces to format for paste into stackoverflow postsEmacs 命令将代码缩进 4 个空格以格式化粘贴到 stackoverflow 帖子中
【发布时间】:2010-08-20 14:04:26
【问题描述】:

必须有一种更好的方法来使用 Emacs 为 stackoverflow 帖子缩进一段代码。我目前的策略是:

  1. 选择文本区域
  2. 执行 M-x indent-code-rigidly
  3. 运行 C-x z 三次以重新缩进区域

这似乎是脑死亡。请告诉我如何以一种聪明而优雅的方式实现这一点。

【问题讨论】:

  • C-x C-z???这会暂停活动的 Emacs 框架......您应该不需要任何比 indent-code-rigidly 更多的东西
  • 错字:C-x z 就是我的意思。而且,其他线程已经用几种不同的方式回答了这个问题。
  • 您可以使用 M- 为命令添加数字前缀。所以你可以做 M-4 M-x indent-code-rigidly,甚至更简单的 M-4 C-x (因为 C-x 绑定到 indent-rigidly)。

标签: emacs


【解决方案1】:

我最近创建了这个有用的命令:

(defun stackoverflow-copy-code-snippet (begin end)
  (interactive "r")
  (let ((buffer (current-buffer)))
    (with-temp-buffer
      (insert-buffer-substring-no-properties buffer begin end)
      (indent-rigidly (point-min) (point-max) 4)
      (clipboard-kill-ring-save (point-min) (point-max)))))

我只是用它来将它自己的源代码复制到这篇文章中。多么元!

【讨论】:

  • 由于某种原因,当我执行 stackoverflow-copy-code-sn-p 时,它不会将缩进的字符串复制到剪贴板。相反,它将“stackoverflow-copy-code-sn-p”复制到我的剪贴板。这是在 emacs 23.2.1
  • 我使用的是 22.3,但我刚刚下载并编译了 23.2,stackoverflow-copy-code-sn-p 仍然适用于我。我可能应该提到该例程缩进该区域的内容并将其复制到系统剪贴板中,因此您需要在调用它之前设置该区域。这可能解释了你的行为。
【解决方案2】:

这与 scottfrazer 的答案并没有本质上的不同,但它更容易输入:C-u C-x C-i

【讨论】:

  • 我见过的内置解决方案最少的击键,而且不难记住。
  • 我从来不知道 C-u 的默认前缀是 4。非常有用
猜你喜欢
  • 2012-09-25
  • 2010-09-09
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多