Есть ли хороший режим emacs для отображения и редактирования огромных разделяемых разделов файлов?
Я искал, не найдя какое-то время для режима, который упрощает редактирование огромных разделов с разделителями/запятыми/двоеточиями. Мне нужен режим, который гарантирует, что столбцы всегда выстраиваются в линию, как и таблицы в режиме org-mode. Я знаю, что могу легко превратить весь файл в таблицу org-mode, а затем повернуть его обратно, когда закончите, но с огромными файлами это становится очень медленным, и это хлопот для быстрых изменений (также проблема о том, что происходит если поле содержит вертикальную полосу). Так кто-нибудь знает ни режим, ни встроенную функцию/переменную, которую я могу использовать, чтобы я мог получить файл вроде
col1\tcol2\tcol3
very long column1\tcol2\tcol3
отображается как
col1 col2 col3
very long column1 col2 col3
? (возможно, с некоторым цветом, выстилающим разделитель)
Ответы
Ответ 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))
)
)
)
)