Сворачивание 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.