1

csv 値の 1 行のテキスト ファイルがあります。

ファイルを「きれいに印刷」して、複数行にまたがって読みやすくしたいと考えています

1番目の番号。いいえを表します。次のセクションの csv 値など

例えば

3,1,2,3,3,4,5,6

次のように変換されます。

3,1,2,3
3,4,5,6

マクロの作成について少し知っています。

C-x (
C-s RET ,
C-x )

これを使用して、次のことができます。

C-u 3 C-x e3つのcsv値を移動する

私のこだわりは、ファイルからの値を使用して引数に貼り付ける方法ですC-u

おそらく、emacs セッション全体で継続的に使用するために「保存」したい関数として、代わりに e-lisp 関数を使用する必要があります。マクロをそのまま保存することはできますか?

感謝して受け取ったアイデア

4

2 に答える 2

4

キーボード マクロよりも elisp の方が考えやすいと思います。これはどう:

(defun csv-line-breaks ()
  (interactive)
  (while (search-forward "," nil t 
                         (1+ (string-to-number (thing-at-point 'word))))
    (delete-char -1)
    (insert "\n")))

(global-set-key (kbd "C-c b") 'csv-line-breaks)

これを使用して.emacs(またはスクラッチ バッファー内のコードを評価するだけで)、行の先頭にポイントを置き、ヒットC-c bして行を必要なチャンクに分割します。

これが何をするか:

  1. 値がなくなるまでバッファをループし、ループごとに次のようにします。
  2. 最初の値を読み取ります。(thing-at-point 'word)句読点の空白の間にあるものを (多かれ少なかれ) 取得します。
  3. 実際には文字列である値を数値に変換します
  4. その数に 1 を加えて、その数のコンマを進めます
  5. 前のカンマを削除
  6. 新しい行を挿入する
于 2012-04-26T16:11:39.470 に答える
0

Emacs の csv-mode を参照してください: http://emacswiki.org/emacs/CsvMode

探しているものとまったく同じではないかもしれませんが、読みやすいように書式設定する機能や、さまざまな方法で csv ファイルを変更するその他の機能があります。

于 2012-04-27T21:12:11.663 に答える