【问题标题】:Emacs replaces spaces with tabsEmacs 用制表符替换空格
【发布时间】:2014-09-03 15:54:03
【问题描述】:

问题是我希望 Emacs 在我将它们作为制表符输入时保存制表符,如果我将它们作为空格输入的话。但是当空格数达到tab-stop-list 中定义的 amonut 时,编辑器会用制表符替换我手动输入的空格,即当我输入时

   →func1() {
   →   →some_long_command_name -param1 -param2 \
   →   →→→→→→→→→→→→→→→→→→→→→→→→-param3 -param4

(其中 tab 是    → 而空格是 )Emacs 做到了

   →func1() {
   →   →some_long_command_name -param1 -param2 \
   →   →   →   →   →   →   →→→→-param3 -param4

如果制表符的长度发生变化,这会破坏我想要保留的缩进。

【问题讨论】:

  • Emacs 不会像您描述的那样将空格转换为制表符。要么你正在使用一些时髦的额外包,要么你正在做一些你所描述的以外的事情(例如,你重新缩进代码,也许?)。
  • @Stefan 现在我认为这可能是 ebuild-mode 错误。将尝试与其开发人员联系。

标签: emacs tabs


【解决方案1】:

自定义选项 indent-tabs-mode 以提供值 nil。这会阻止 Emacs 将缩进空格转换为使用 TAB 字符。您输入的SPC 字符和TAB 字符保持不变。

然后您需要将键 TAB 绑定到 self-insert-command 或使用 C-q TAB 插入 TAB 字符。这意味着您丢失了 TAB 键作为缩进命令。或者,您可以将其他键绑定到插入TAB 字符的命令,或者将除TAB 之外的其他键绑定到默认绑定TAB 的缩进命令。

【讨论】:

  • 我不想失去自动缩进,我只想摆脱 Emacs 之后插入的内容。我认为自动缩进和替换空格不应该相互依赖。我可以将其追溯到 indent.el 中的 'indent-relative 函数,但我不知道 elisp 是否更深入:D
【解决方案2】:

在我看来,你好像在寻找https://www.emacswiki.org/emacs/SmartTabs

【讨论】:

猜你喜欢
  • 2020-03-11
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 2010-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多