【问题标题】:How to display indentation guides in Emacs? [closed]如何在 Emacs 中显示缩进指南? [关闭]
【发布时间】:2009-10-19 10:37:51
【问题描述】:

我正在尝试切换到 Emacs 作为我的主要源代码编辑器。我真的很想念一件事(在更简单的编辑器中很常见) - 缩进指南(显示缩进级别的不显眼的垂直线)。 Emacs 可以显示它们吗?

【问题讨论】:

  • 在阅读一些代码时很有帮助。
  • 在编辑 Lisp 代码时,缩进指南会非常有用。
  • @user181548 更多信息等于更少错误。在vim上我使用set listchars=tab:░\ (“\”之前的字符是一个块字符,我认为不会出现在这里,可以用“|”替换并且看起来仍然不错。在“\”之后是一个空格字符)
  • 令我惊讶的是,在 5 年内没有人提到 vline.el: emacswiki.org/emacs/VlineMode 或其修改,例如突出显示当前列 emacswiki.org/emacs/HighlightCurrentColumn 或 CrossHair Higlighting emacswiki.org/emacs/CrosshairHighlighting 用户可能希望实现当点位于特定列上时,他们自己修改以更改颜色(前景或背景) - 例如,与 tab-stop-list 匹配;或赔率;偶数;后填充列;或点位于第一条视线之后的任何环绕线上,或位于右窗口边缘。
  • 请参阅this answer 以获得最近的答案。 Melpa 上有一种可用的模式可以做到这一点。当前接受的答案可以追溯到 2010 年。这个问题是 Google 搜索“Emacs 显示缩进”时的第一个结果。

标签: emacs indentation


【解决方案1】:

我为此创建了一个函数highlight-indentation,code is on github。

当在没有前缀参数的情况下调用highlight-indentation 时,当前缩进级别是从主要模式(python、ruby 和基于 cc 模式的语言)天真地猜测的。仅适用于空间缩进。自定义highlight-indent-face以改变缩进线的外观。

示例(红宝石、python):

我也经常使用这个 sn-p 将所有代码折叠到比当前行更大的缩进级别。这是快速了解大纲的好方法。

(defun aj-toggle-fold ()
  "Toggle fold all lines larger than indentation on current line"
  (interactive)
  (let ((col 1))
    (save-excursion
      (back-to-indentation)
      (setq col (+ 1 (current-column)))
      (set-selective-display
       (if selective-display nil (or col 1))))))
(global-set-key [(M C i)] 'aj-toggle-fold)

【讨论】:

  • 为了自动加载 JavaScript 和 Python 文件,我在 .emacs 中添加了以下内容:(require 'highlight-indentation) (add-hook 'python-mode-hook 'highlight-indentation-mode) (add-hook 'js2-mode-hook 'highlight-indentation-mode)
  • 嗨,我已将它添加到我的 .emacs 中,但我的 python 文件看起来与屏幕上的不一样。我没有看到您的示例中的任何缩进线。你能建议吗?
  • +1 用于切换折叠。其他人请注意,如果您启用 highlight-indentation-mode 并没有看到任何内容,可能是因为您正在使用 tabs。
  • 这很棒...但是是否可以让它看起来像一条线或更像边缘点的东西?
  • 将highlight-indentation-face的字体设置为Arial使垂直线变细:(set-face-font 'highlight-indentation-face "Arial")(set-face-background 'highlight-indentation-face "#E0E0E0")(set-face-attribute 'highlight-indentation-face nil :height 54)
【解决方案2】:

现在有一个名为highlight-indent-guides 的模式似乎运行良好。

【讨论】:

  • 非常不错的模式。最近在梅尔帕。应该是新接受的答案!
【解决方案3】:

据我所知,到目前为止,还没有人为 Emacs 实现缩进指南。您可以获得的最接近的东西是使用空白包可视化 TAB,请参阅Show tabs with a different character (Emacs)。

【讨论】:

  • 请注意,您也可以可视化空格:M-x customize-variable RET whitespace-space 然后M-x customize-variable RET whitespace-style 并将这两个标记添加到 Lisp 表达式:spaces spaces-mark。例如我的whitespace-style 目前看起来像这样:'(tabs trailing lines-tail space-before-tab newline indentation empty space-after-tab tab-mark spaces space-mark)
  • @NoahSussman customize-variable 没有这样的变量o.o
【解决方案4】:

假设您可以根据需要调整ColumnMarker,但它会突出显示一列 不给你一个像素。

我缩进了 8 个空格,所以我从来没有考虑过;P

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-11
    • 2011-01-10
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2014-02-14
    • 2012-09-30
    • 2020-07-02
    相关资源
    最近更新 更多