[求助]如何使文字向中间或中间列对齐呢?

例如, 对中间的=对齐, 有这样的插件么? 或者用align-regexp 怎么写呢? VIM的vim-easy-align就很容易做到.

              int a = 5;
     static short b = 166;
             char c = 'c';

M-x align,可以得到:

int          a = 5;
static short b = 166;
char         c = 'c';

参见:

谢谢热心回复, 但这显然不是我想要的啊, 我想要的是向指定列或者说可以向右对齐. 比如这种向右对齐的也行(图来自vim-easy-align):

.

看链接里面:

Use M-x align-regexp (here, M-x align-regexp RET = RET ). You can also add an “alignment rule” to the variable align-rules-list , so that in future M-x align will do it. See the documentation ( C-h f align ) for details.

你有成功的代码例子么, 最简单的右对齐就行.

你看一下这个是不是你要的:

谢谢, 不是

这种看着不难受吗 :dog:

有没有用取决于具体的数据, 有的时候我会因为命名方式关注词尾

align-regexp有个complex模式,可以满足一定的复杂对齐需求。

如下是原始文本,来自vim-easy-align:

Lorem = ipsum
dolor = sit
amet += consectetur == adipiscing
elit -= sed != do
eiusmod = tempor = incididunt
ut &&= labore

运行C-u M-x align-regexp进入复杂模式:

  1. \(\w+\) 来匹配文本
  2. -1 对齐第1个匹配到的分组,负数表明对齐
  3. 0 不使用额外的空格来对齐
  4. y 重复执行

之后会得到这个结果:

  Lorem =         ipsum
  dolor =           sit
   amet +=  consectetur == adipiscing
   elit -=          sed !=         do
eiusmod =        tempor =  incididunt
     ut &&=      labore

不过看起来符号没有对齐 :rofl:

人工处理一下吧

5 个赞

给大佬跪了, 没错, 这就是我想要的!! 太凶残了!!!

但是我还是要问一下, 大佬是怎么学会的呢? 是align-rules-list的文档么? 也太晦涩了, 我是太无能没法从中读出怎么做到的…

第二条就是如果我想从交互模式中跳出来, 直接写一个指令绑快捷键该怎么写呢? 这些交互的输入怎么可以直接传入呢? 还是不能直接用align-regexp了, 要根据它的callee:align-region来重写?

包一下就行了,然后把 vim-easy-align 绑定到你喜欢的快捷键上

(defun vim-easy-align (beg end)
  (interactive "r")
  (align-regexp beg end "\\(\\w+\\)" -1 0 1))
(global-set-key (kbd "C-M-/") #'vim-easy-align)

我是平常有经常使用align-regexp的,不过一直都是用的简单版本。你说的这个问题很容易就联想到可以使用align-regexp来解决,因为只有它能处理多列。后来就试用了一下,就好了 :rofl:

第2条的话楼上已经回答了 :slight_smile:

欢迎关注

1 个赞
2 个赞