有时候,我在编辑文件(例如,Puppet清单)时要动态对齐缓冲区内容。例如,我知道只要选择以下代码,就可以使用align-regexp
或align
对齐代码:
# M-x align-regexp "=>" will line everything up nicely
file { "/etc/foo":
ensure => present,
mode => "0666",
source => "puppet:///modules/example/foo",
}
但是我真正想要的是让这种情况即时发生-无需选择区域或整个缓冲区。是否有可以执行此操作的程序包或模式,或者是否必须将这些内容内置到我感兴趣的模式中?
编辑:我问了有关Puppet和CFEngine的问题,因为这是我最近几天编写的代码,并且我非常喜欢对齐的文本。但是,我也很好奇(并没有很好地表达这一点)想知道即时对齐是否是Emacs模式(主要是用于编程语言的模式)中常见的功能,或者大多数人在保存时或在某些情况下会对齐吗?其他一点。
有expand-region,对于连续选择更大的范围很有用。
—
bastibe 2014年
您能否进一步说明通常要达成的目标?它只是等号而且处于人偶模式吗?您可以通过@Malabarba 修改此Emacs SE答案中的代码以进行自动缩进,以获取所需的内容。只需替换为
—
Kaushal Modi 2014年
indent-region
,align-to-equals
然后将此函数定义为(defun align-to-equals (begin end) (interactive "r") (align-regexp begin end "\\(\\s-*\\)=" 1 1 nil))
;并emacs-lisp-mode-hook
与puppet-mode-hook
。