2014-11-08 1 views
0

Я использую vim для редактирования файлов с разделителями, содержащих очень длинные строки (100000 символов). Vim очень медленный с таким входом. Если я отключу синтаксис , выделив (:syntax off), Vim уже не медленнее.Работа симулятора vim с очень длинными линиями

Причина в том, что некоторые из кодовых блоков содержат json, что содержат изображения, закодированные в base64. (На самом деле, я пытаюсь отредактировать markdown version ноутбука ipython).

Вот что текст обижая выглядит следующим образом:

```{.json .output n=41}                                                
[                                                      
{                                                     
"metadata": {},                                                  
"output_type": "display_data",                                              
"png": "iVBORw0KGgoAAAANSUhEUgAAAtAAAAFxCAYAAAB....long...long....line...." 
}                                                     
]                                                      
```   

То, что я хотел бы для Vim, чтобы не быть медленным.

Возможные решения, которые я надумал:

  1. set synmaxcol=250 - нет, нарушает подсветку синтаксиса после длинной линии

  2. Отключить подсветку синтаксиса выборочно для длинных строк (не знаю, как сделать это)

  3. Отключить подсветку синтаксиса для кодовых блоков, которые начинаются с {.json (не ноу-хау)

Я использую подсветку синтаксиса vim-pandoc . Это дает кодовым блокам синтаксическую группу pandocDelimitedCodeBlock или, например, pandocDelimitedCodeBlock_json если сделаете обнаружение языка.

Это также означает, что я складывающийся на группы синтаксических (foldmethod=syntax), который является возможным источником медлительности (см stackoverflow, github и superuser). Однако :set foldmethod=manual не решит проблему.

+0

У вас есть мягкая линейная обертка включена?другая мысль: читатели вашей книги, вероятно, тоже не будут наслаждаться длинными линиями, действительно ли они вам нужны? – mb21

+1

'set synmaxcol = {low value}' - единственное практическое решение: вы не хотите выделять синтаксис для этих двоичных blob. – romainl

+0

@ mb21 нет мягкой упаковки. Длинные линии только на производстве - они превращаются в образы в издательстве. – aaren

ответ

1

vim-pandoc широко использует синтаксис, и я уверен, что это проблема. Отключение vim-pandoc-синтаксиса и отключение фальцовки (let g:pandoc#modules#disables = ['folding']) снова делает vim быстрым.

Для синтаксиса highlightin Я использовал свою вилку tpope's vim-markdown. Я разветвил его, потому что оригинал не синтаксис выделяет блоки кода с атрибутами стиля pandoc (запрос на выгрузку here).

Для складывания на заголовках и блокированные блоки с использованием foldexpr. Я использовал свою вилку vim-markdown-folding. Вилка, потому что оригинал не складывается на кодовых блоках (запрос тяги here).

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

0

Это работает для меня:

let g:pandoc#modules#disabled = ["folding"] 

же, как @ Aaren отвечают, но двойные кавычки.

 Смежные вопросы

  • Нет связанных вопросов^_^