我正在Emacs中编辑两个不同的代码库,一个使用设置为两个空格的制表符,另一个使用设置为八个空格的制表符( Linux内核)。由于内核使用制表符进行对齐,因此我想在处理内核文件时动态调整制表符的大小。
我希望能够按M-2将标签宽度设置为2,并按M-8将标签宽度设置为8。我希望这些键可以在所有模式下工作,无论我是在C代码上工作,还是在Makefile中工作,甚至是在普通的文本文件中工作。我希望我的活动Emacs编码风格的其余部分保持不变。
我有点卡住了,因为你在配置文件中使用了"setq“,但这不是M-x的有效命令,而且试图给全局键M-2分配一个函数并不会覆盖分配给这个键的默认函数,似乎我必须为我想要编辑的每一种类型的文件使用钩子或其他东西,这很快就让我摸不着头脑了!
发布于 2014-03-16 11:12:12
我最终结合使用了immerrr和camdez的答案来实现我想要的结果:
(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,或者按任何其他数字来设置不同的制表符宽度。
发布于 2013-04-30 11:23:30
我知道这并不完全是你想要的,但这是我在.emacs中用来完成同样任务的东西:
(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)它有一个相当符合逻辑的助记符,并且不会阻碍任何其他绑定。
https://stackoverflow.com/questions/16248563
复制相似问题