これは...
プレフィックス引数を使用して、align-regexp
にデフォルトより多くのパラメータを要求するよう指示します。
詳細align-regexp
とC-HのValign-rules-list
fをC-Hを参照するが、要するに:
\(\s-*\)
は削除/拡張用のデフォルト 'グループ' です。私たちはパターンの最後に '='を追加します。 (\s-
は、空白のためのEmacs regexpの構文です。)
1
は、単に括弧で囲まれたグループ1(上記と同じ)を指します。これがデフォルトです。
0
行の2つの部分の間の間隔。デフォルトではこれは1です。なぜなら、あなたは追加のスペースで終わっていたのです。
n
各行の最初の後に続くパターンマッチングを揃えないようにする。
編集:実際には、あなたがにリンクQ & Aが同一の近くにある、とのEmacs 23.2.1上で私のために正常に動作しますので、このが重複しているが、キーバインディング側面を継続して答えること:
キーボードマクロを使用して、そのシーケンスをバインドすることができます。ここでは最終結果が得られます。これはおそらくあなたのinitファイルに追加することができますが、自分でプロセスを進めることをお勧めします。キーはC-c a
の代わりに好きなものを使用してください。 C-c (letter)
とF5-F9は、エンドユーザが望むようにバインドするために予約されているため、モードのキーマップが邪魔になることはありません。
(global-set-key (kbd "C-c a") (lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ([21 134217848 97 108 105 103 110 45 114 101 103 101 120 112 return 32 61 32 return return backspace 48 return 110] 0 "%d")) arg)))
私がでていることでした:
- テキストを選択します。
- F3録音を開始します。
- 上記のように
align-regexp
を実行してください(ミニバッファの履歴やヤンクを使用しないで、すべてそのまま入力してください)。
- F4記録を停止する。
- C-X C-K nはマクロ名をLispのを取得する
- M-X
insert-kbd-macro
RETalign-single-equals
RETを与えるalign-single-equals
RET。
(lambda)
発現を(global-set-key)
でラップして結合する。 (あなたが提供されるようにも(fset 'align-single-equals ...)
コードを使用して、そのシンボルにキーをバインドすることもできますが。
複雑なマクロを記録する際に間違えた場合は、Emacsは実際に提供して—を心配しないでくださいあなたは完璧である必要はありませんので、(単にCxとのCK Eを入力)録音を終了した後、あなたが間違いを修正するために使用することができます良いマクロエディタ
編集2:だけでなく、Aの例を追加することができますコメントに応じて、機能ごとに表示されます。
(defun my-align-single-equals()
"Align on a single equals sign (with a space either side)."
(interactive)
(align-regexp
(region-beginning) (region-end)
"\\(\\s-*\\) = " 1 0 nil))
(global-set-key (kbd "C-c a") 'my-align-single-equals)
ありがとうございます。私はあなたのソリューションを使用することができましたが、マクロの代わりに関数を作成しました。 – Karl
それはさらにうまくいっています:)もしあなたが幸いなことにlispを書いているのなら、関数は間違いなく望ましいですが、そうでなければマクロはとても便利です。 – phils
少し遅れてしまいましたが、これを解決する標準的な方法は、独自の関数を書くのではなく、 'align-rules-list 'にルールを追加することです。 –