首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs:如何通过热键在两个选项卡宽度之间切换

Emacs:如何通过热键在两个选项卡宽度之间切换
EN

Stack Overflow用户
提问于 2013-04-27 13:04:34
回答 2查看 206关注 0票数 0

我正在Emacs中编辑两个不同的代码库,一个使用设置为两个空格的制表符,另一个使用设置为八个空格的制表符( Linux内核)。由于内核使用制表符进行对齐,因此我想在处理内核文件时动态调整制表符的大小。

我希望能够按M-2将标签宽度设置为2,并按M-8将标签宽度设置为8。我希望这些键可以在所有模式下工作,无论我是在C代码上工作,还是在Makefile中工作,甚至是在普通的文本文件中工作。我希望我的活动Emacs编码风格的其余部分保持不变。

我有点卡住了,因为你在配置文件中使用了"setq“,但这不是M-x的有效命令,而且试图给全局键M-2分配一个函数并不会覆盖分配给这个键的默认函数,似乎我必须为我想要编辑的每一种类型的文件使用钩子或其他东西,这很快就让我摸不着头脑了!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-16 11:12:12

我最终结合使用了immerrr和camdez的答案来实现我想要的结果:

代码语言:javascript
复制
(defun set-tab-width (len)
    (interactive "p")
    (setq tab-width len)
    (force-window-update)  ; Required or tabs are only updated line-by-line during editing
    (message "Tab width set to %d." len)
)
(global-set-key (kbd "C-c t") 'set-tab-width)

这允许我按C-8 C-c t键将制表符宽度设置为8,或者按C-2 C-c t键将制表符宽度设置为2,或者按任何其他数字来设置不同的制表符宽度。

票数 1
EN

Stack Overflow用户

发布于 2013-04-30 11:23:30

我知道这并不完全是你想要的,但这是我在.emacs中用来完成同样任务的东西:

代码语言:javascript
复制
(defun camdez/toggle-tab-width ()
  "Toggles `tab-width' between 8 and 2."
  (interactive)
  (setq tab-width
        (if (= tab-width 2)
            8
          2))
  (message "Tab width set to %d." tab-width))

(global-set-key (kbd "C-c TAB") 'camdez/toggle-tab-width)

它有一个相当符合逻辑的助记符,并且不会阻碍任何其他绑定。

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

https://stackoverflow.com/questions/16248563

复制
相关文章

相似问题

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