Сворачивание JavaScript на vim не работает

Я начал использовать Vim 7.4 в Ubuntu и очень доволен, но меня сводит с ума только одна вещь: сворачивание кода не работает (по крайней мере, для javascript)!

Синтаксис автоматически устанавливается на javascript, когда js-файл открывается, и подсветка синтаксиса работает, поэтому я его не понимаю. Фолдметод изначально установлен на "ручной", и установка его на "синтаксис" не имеет значения, что меня озадачивает. Я добавил "let javaScript_fold=1" в мой файл.vimrc.

Любая подсказка? Я был бы очень благодарен. Спасибо!

3 ответа

Трудно сказать точную причину этой проблемы, но если у вас нет файла javascript.vim, вам, вероятно, следует это сделать. Я предлагаю начать с этой расширенной конфигурации синтаксиса JavaScript. Скорее всего, это исправит проблему сворачивания JavaScript и многое другое.

Если вы просто хотите сосредоточиться на проблеме сворачивания, попробуйте создать свой собственный файл javascript.vim в ~/.vim/syntax/javascript.vim это содержит код в соответствии с тем, что я дал ниже. Вы можете настроить уровень сгиба по своему вкусу (0 полностью сложен). Тем не менее, эта простая версия не будет хорошо работать с комментариями, содержащими фигурные скобки, и именно здесь вы захотите использовать более надежный javascript.vim, такой как тот, который я связал.

syntax region foldBraces start=/{/ end=/}/ transparent fold keepend extend
setlocal foldmethod=syntax
setlocal foldlevel=0

Я должен добавить, что и я, и другой респондент предполагают, что вам нужен javascript.vim, и на самом деле некоторые из тех же авторов. Однако последний вариант, который я предлагаю, был обновлен в декабре 2015 года, а не в 2009 году.

Я не знаю, почему ваше решение не работает, но возможное решение состоит в том, чтобы использовать пользовательский vimscript, доступный по адресу http://www.vim.org/scripts/script.php?script_id=1491

Только что ответили на эту же проблему на Vim Stack Exchange, и ответ заключается в том, что если вы используете акции syntax/javascript.vimфайл , то вы должны установить

          vv
let g:javaScript_fold = 1
    ^^

Разница между командой в вопросе и здесь заключается в g:часть (выделено выше). Я новичок в написании сценариев Vim, но я считаю, что разница в том, что let javaScript_fold=1устанавливает локальную переменную скрипта, делая ее ограниченной вашим .vimrcфайл, а приведенный выше пример делает его глобальным (что, похоже, подтверждается этим потоком Stackoverflow ). Подробнее об этом см. в разделе 41.2 Переменные в :help usr_41.txtа также:help internal-variables.

Эта ветка Reddit также была поучительной; это не связано с JavaScript, но свертывание также полезно для файлов JS.

Другие вопросы по тегам