2

20 列近くの非常に大きなテキスト ファイルがあります。残念ながら、ファイルを作成したプログラムは、-10 で始まる列を適切に処理しませんでした (合計 6 文字ではなく、合計 5 文字のデータのみが適切に配置されていました)。基本的に、私は次のようなものになりました。

-10.072-10.179-10.2190.002

私はそれが次のようになりたい:

-10.072     -10.179     -10.219     0.002

そして、ほとんどそうすることができました:

M-x replace-regexp RET -10\.... RET \&TAB RET

ただし、使用するTABと、タブではなくスペースに置き換えられるだけです。理想的には、タブ間のタブストップです。ファイル内のこれらの状況のいずれかに手動で移動しTAB、適切に入力すると、データを適切な列に揃えるためにタブからタブへの停止が適切に行われます。replace-regexp 内で tab-to-stop 関数を保持するにはどうすればよいですか?

4

1 に答える 1

1

検索と置換は確かにタブを挿入する必要があります。もちろん、タブの見た目のサイズはさまざまです。これが、スペースのように見える唯一の理由だと思います。whitespace-mode違いをより明確にするために使用できます。

に関してはtab-to-tab-stop、それは特別な種類のタブ文字ではなく動的関数であるため、検索と置換1でそれを行うことはできません。代わりにキーボード マクロを使用して、手動入力と同じ動的動作を取得することをお勧めします。

  • F3
  • M-C-s -10.... RET
  • M-x tab-to-tab-stop RET
  • F4

またはおそらく単に:F3M-C-s -10.... RETTABF4

次に、失敗するまでマクロを実行できますC-0F4

(バッファの一部でのみ実行したい場合は、最初に関連する領域に絞り込むことができます。)

1 Emacs では置換パターンの一部として任意の elisp を評価できるため、厳密には当てはまりません。しかし、これはタブからタブへの停止関数を呼び出す場合だけではないため、マクロは実際にははるかに単純です。

于 2012-04-07T07:41:03.943 に答える