指定された文字列をインクリメンタルに置き換える


12

以下のようなテキストがあるとします。

AC(nn)
AC(nn)
AC(nn)
AC(nn)
AC(nn)
AC(nn)
AC(nn)
AC(nn)
AC(nn)
AC(nn)
AC(nn)

今私はそのnnような数字で置き換えたいです

AC(0)
AC(1)
AC(2)
AC(3)
AC(4)
AC(5)
AC(6)
AC(7)
AC(8)
AC(9)
AC(10)

私は以前M-x replace-regexp nn RET \# RETこれを達成していました。

質問:

  1. 交換番号をから1ではなく、から始めたい0。むしろ、指定された数字から始めると言う25。上記のコマンドをどのように変更すればよいですか?
  2. 、... 、などのnn数字に置き換える方法-先行ゼロを意味します001002998999

これはあなたが望んでいることではありませんが、これを行う別の方法は、レジスタと一緒にマクロを使用することです。
キャタピラー

回答:


12

一般的なテクニック

置換文字列には、任意のlispコードを含めることができます。replace-regexpのドキュメントから:

対話的な呼び出しでは、置換テキストは '\'を含み、その後に置換テキストの一部として使用されるLisp式が続きます。その式の中で、「\&」は完全一致を示す文字列、「\ N」は部分一致、「#&」および「#N」は「string-to-number」からのそれぞれの数値、および「#」です。 'それ自体は' replace-count 'であり、ゼロから始まる、これまでに発生した置換の数。

この手法はさまざまな方法で使用できます。

から始まる 1

実行したいWatはnnreplace-countで使用したものより1つ多く置き換えます\#

#'replace-regexp引数を指定して呼び出します\,(1+ \#)

C-M-% nn \,(1+ \#)NN置換する1最初の、そして23など

で始まる 25

これを追加するだけでなく、(例では)25を変更することができます。

C-M-% nn \,(+ 25 \#)

先行ゼロ

またはformat、先行ゼロを追加するために使用できます。これは置き換えられますnn000001002で開始する上で、などあなたが他のLispコードを組み合わせることができ001025またはあなたが好き。

C-M-% nn \,(format "$03d" \#)


5

も使用できますcua-mode

長方形領域(すべてnn)を選択してから、を選択しますM-x cua-rectangle-mark-mode

次に、M-nデフォルト値を受け入れます。


私もこれを答えとして受け入れることができればいいのですが
Prasanna
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.