Текстовые редакторы Linux, способные работать с очень-очень длинными строками и записями фиксированной длины

Текстовые редакторы Linux, способные работать с очень-очень длинными строками и записями фиксированной длины

У меня тут довольно простая проблема: у меня есть фрагмент текста, представляющий собой одну гигантскую строку (~150 000 символов). Никаких переносов строк, и это плоский файл фиксированной длины (т. е. он был создан программой COBOL), поэтому введение переносов строк не только неудобно, но и активно бесполезно, если я пытаюсь внести изменения в файл.

Большинство текстовых редакторов испытывают трудности с обработкой даже одной строки такого размера ( lessне нравится, Geditне нравится, nanoне нравится, я слышал, vimчто не нравится и т. д.), хотя они и работают.

Есть ли у кого-нибудь предложения по редактору, который лучше подойдет для данных, с которыми я работаю? Это всего лишь одна строка, но она все равно вызывает больше проблем, чем текстовый файл размером 1GiB+ со строками нормальной длины...

Было бы еще лучше, если бы он работал с EBCDICнулевыми байтами, а не блевал, когда сталкивался с ними, или искажал их при обратной записи (некоторые поля представляют собой двоично-десятичные числа).

Обратите внимание, что речь идет не о файлах, которые имеют большой размер (файл содержит только одну строку), а о том, что большинство редакторов не оптимизированы для работы с очень длинными строками.

решение1

Я думаю, что файл, подобный описанному вами, с практической точки зрения действует как двоичный файл, и с ним следует обращаться соответствующим образом.

Вы можете атаковать его с помощью шестнадцатеричного редактора, но это не поможет вам с частью EBCIDC.

Если вам предстоит много редактировать этот файл и вы хорошо знакомы с его форматом записи фиксированной длины, возможно, стоит потратить время и написать что-нибудь на Perl или другом языке (я предлагаю Perl, потому что он старый и, скорее всего, имеет модули, преобразующие UTF-8 и т. д. в EBCIDC), что будет работать с конкретным форматом этого файла.

решение2

я вообще-тотолько что попробовалvim на файле с одной строкой из 150000 символов, и все прошло гладко, как по маслу.

Так что, я думаю, вам действительно стоит попробовать, если вы этого еще не сделали, просто потому что you heard vim doesn't like such kind of files...

Вот как я получил свой файл:

seq 150000 | while read num; do echo -n "b" ; done > megaline.txt

решение3

Я попробовал тот же метод, что и Dakatine, с моей установкой emacs, и он отлично сработал. Никаких зависаний, ничего. Если вы редактируете простой текст (т. е. не делаете никакого анализа, который требуется режимом для языка программирования, в text-mode), будет очень, очень сложно заблокировать emacs. Поведение, которое вы видите с Eclipse, вероятно, является отражением того факта, что Eclipse пытается выполнить какой-то анализ текста при его рендеринге — то же самое и с Gedit. Я также не могу воспроизвести вашу проблему less— у меня все отлично получается.

решение4

Попробуйте:JEdit — редактор для программистов

Он имеет некоторые расширенные функции буферизации и высокооптимизированный ввод-вывод, но требует некоторого времени для запуска (из-за JVM). Я использовал его для просмотра и редактирования файлов размером более 1GiB без каких-либо проблем - по крайней мере, на Debian. Я не могу гарантировать, что он будет вести себя так же хорошо на Windows... :)

Связанный контент