Почему этот vim regex такой дорогой: s / \ n / \\ n / g - PullRequest
0 голосов
/ 03 июля 2018

Попытка выполнить это для достаточно большого файла (скажем, 80 000+ строк и около 500 000+) может привести к сбою или в конечном итоге к остановке как на моем сервере, так и на моем локальном Mac.

Я тоже пробовал это в командной строке, с тем же результатом:

vim -es -c '%s/\n/\\n/g' -c wq $file

Кроме того, проблема, кажется, связана с выбором (\n), а не с заменой (\\n).

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

Я ценю, что есть другие способы сделать это - sed и т. Д., - но у меня есть похожие и дополнительные проблемы, и я хотел бы иметь возможность сделать это с vim.

1 Ответ

0 голосов
/ 19 июля 2018

Я добавляю свой комментарий в качестве ответа:

Текстовые редакторы, как правило, не любят «гигантские» строки (что вы и получите при этой замене).

Чтобы проверить, что это связано с «большой линией», а не с самой подстановкой, я провел этот тест:

Я создал простой файл размером ~ 500 КБ со скриптом. Никаких символов новой строки, только одна строка. Затем я попытался загрузить файл с помощью vim. Результат? Я должен был убить его: -).

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

Также можно попробовать следующее: в vim замените \n на \n\n, если это быстро, то это также должно подтвердить проблему с «большой линией».

...