了解emacs align-regexp

时间:2014-10-20 16:03:21

标签: regex emacs alignment text-alignment

我已阅读align-regexp的emacs文档,但仍难以理解其工作原理。我所说的是它的前缀形式 C-u M-x align-regexp ,而不是简单形式 M-x align-regexp 。我的问题是:

  • 第一个参数(正则表达式)是否必须匹配整个字符串?如果正则表达式只匹配字符串的一部分怎么办?
  • 要为第二个参数提供什么(要修改的括号组(如果为负,则对齐))?据我所知,我需要提供一个捕获的组号(从1开始),对吧?如果消极""是否合理意味着,如果我希望第3组右对齐,我会提供-3作为输入吗?
  • 第三个参数"间距量(或列如果为负)"意思?我完全不明白这个参数是做什么的。

我收集了一些文字示例来练习。如果有人可以使用下面的文字作为非常有帮助的例子。

发件人

class CreateStudents < ActiveRecord::Migration
  def change
    create_table :students, :comment => "学生信息表" do |t|
      t.string :political_status, :comment => "政治面貌"
      t.string :education_level, :comment => "培养层次"
      t.string :enroll_method, :comment => "入学方式"
      t.date :enrolled_at, :comment => "入学时间"
      t.string :charge_type, :comment => "收费类别"
      t.string :enrolled_year, :comment => "学籍年度"
      t.string :enrolled_place, :comment => "生源所在地"
      t.string :bank_card_number, :comment => "银行卡号"
      t.string :bank_account_number,  :comment => "银行账号"
      t.boolean :is_active_duty, :default => false, :comment => "是否现役军人"
      t.boolean :is_equivalent_degree, :default => false, :comment => "是否同等学历"
      t.boolean :is_on_record, :default => true, :comment => "是否在籍"
      t.boolean :is_at_school, :default => true, :comment => "是否在校"
      t.timestamps
    end
  end
end

class CreateStudents < ActiveRecord::Migration
  def change
    create_table :students, :comment => "学生信息表" do |t|
      t.string  :political_status,     :comment => "政治面貌"
      t.string  :education_level,      :comment => "培养层次"
      t.string  :enroll_method,        :comment => "入学方式"
      t.date    :enrolled_at,          :comment => "入学时间"
      t.string  :charge_type,          :comment => "收费类别"
      t.string  :enrolled_year,        :comment => "学籍年度"
      t.string  :enrolled_place,       :comment => "生源所在地"
      t.string  :bank_card_number,     :comment => "银行卡号"
      t.string  :bank_account_number,  :comment => "银行账号"
      t.boolean :is_active_duty,       :default => false,  :comment => "是否现役军人"
      t.boolean :is_equivalent_degree, :default => false,  :comment => "是否同等学历"
      t.boolean :is_on_record,         :default => true,   :comment => "是否在籍"
      t.boolean :is_at_school,         :default => true,   :comment => "是否在校"
      t.timestamps
    end
  end
end

发件人

my @primes = (
    1,2,3,5,7,
    11,13,17,19,23,
    29,31,37,41,43,
);

my @primes = (
    1,  2,  3,  5,  7,
    11, 13, 17, 19, 23,
    29, 31, 37, 41, 43,
);

1 个答案:

答案 0 :(得分:0)

对于第一种情况,请选择区域(create table下方)并尝试 Cu Mx align-regexp \(:\) {{ 1}} -1 1

对于第二种情况,选择区域并尝试 Cu Mx y align-regexp \([0-9]+\) -1 { {1}}。

如您所见,正则表达式不必匹配整个字符串。您对第二个参数的理解似乎是正确的。有关详细信息,请阅读1的帮助:

y
相关问题