Подтвердить что ты не робот

Есть ли хороший режим emacs для отображения и редактирования огромных разделяемых разделов файлов?

Я искал, не найдя какое-то время для режима, который упрощает редактирование огромных разделов с разделителями/запятыми/двоеточиями. Мне нужен режим, который гарантирует, что столбцы всегда выстраиваются в линию, как и таблицы в режиме org-mode. Я знаю, что могу легко превратить весь файл в таблицу org-mode, а затем повернуть его обратно, когда закончите, но с огромными файлами это становится очень медленным, и это хлопот для быстрых изменений (также проблема о том, что происходит если поле содержит вертикальную полосу). Так кто-нибудь знает ни режим, ни встроенную функцию/переменную, которую я могу использовать, чтобы я мог получить файл вроде

col1\tcol2\tcol3
very long column1\tcol2\tcol3

отображается как

col1               col2  col3
very long column1  col2  col3

? (возможно, с некоторым цветом, выстилающим разделитель)

4b9b3361

Ответ 1

Возможно, вы могли бы рассказать нам, что вы уже нашли и отклонили?

Если вы искали, то вы наверняка видели http://emacswiki.org/emacs/CsvMode? Вы не говорите об этом или не говорите, почему это было нехорошо, однако.

SES (Simple Emacs Spreadsheet) может быть полезным:

C-h i g (ses) RET

Вы можете создать в нем ses-mode буфер и yank-данные с разделителями табуляции (что механизм импорта).

Это, вероятно, больше хлопот, чем вы, но я не уверен, насколько хорошо он будет работать с "огромными" файлами.

Ответ 2

Попробуйте csv-mode, который работает, по крайней мере, с Emacs 24.

Вы можете установить переменную csv-separators для изменения разделителя, если вы не используете значение по умолчанию (запятая).

См. EmacsWiki.

Ответ 3

csv-mode приятно, любая идея, как его расширить:

  • поддерживать файлы с блоками табличных данных вместо непрерывной таблицы? Это означает, что align fields into colums будет выровняться по блокам не глобально.

  • цвета! предоставляют возможность отображать столбцы в разных цветах и ​​менять цвета между последовательными строками, чтобы облегчить визуализацию.

  • Он также имеет ошибку, если столбец содержит только один ,, он не отображает его.

Ответ 4

Как уже упоминалось @choroba, используйте csv-mode. Чтобы ответить на ваш вопрос конкретно:

  • Убедитесь, что ваш разделитель находится в csv-separators, который, например, вы можете установить с помощью

    (setq csv-separators '("," "    "))
    
  • Используйте csv-align-fields (связывание ключей по умолчанию Cc Ca), чтобы csv-align-fields значения полей в столбцы.

Комментарий @unhammer о выравнивании только видимых линий - это здорово. Их код правильно с отступом:

(add-hook 'csv-mode-hook
          (lambda ()
            (define-key csv-mode-map (kbd "C-c C-M-a")
              (defun csv-align-visible (&optional arg)
                "Align visible fields"
                (interactive "P")
                (csv-align-fields nil (window-start) (window-end))
                )
              )
            )
          )