Код сворачивания регионов в ruby ​​на VIM? - PullRequest
3 голосов
/ 30 сентября 2011

Я знаю, что не всем нравится сворачивание кода, но, как преобразование в Rails и преобразование в VIM, я хочу вернуть одно из преимуществ, которое я имел в Visual Studio.Net. Я хочу иметь возможность размещать произвольные теги #region #endregion и заставлять VIM складывать их для меня, как и все остальное.

У меня включено свертывание синтаксического кода, и нормальное def..end сворачивание работает нормально, я просто хочу увеличить это с помощью # регионов.

Я немного погуглил и подумал, что могу сделать это в ruby.vim в моей папке синтаксиса, но это не сработало, и я не знаю достаточно, чтобы отладить, был ли это плохой код, который я скопировал или если это просто "не работает таким образом".

let b:match_words = '\s*#\s*region.*$:\s*#\s*endregion'

Это моя единственная строка в синтаксисе / ruby.vim. На самом деле, файла там не было до того, как я начал, хотя подсветка ruby ​​работает нормально. (который также бросает для меня большие красные флажки - я не имею понятия, где синтаксис ruby ​​/ rails, кроме как в плагине rails.vim, но я там тоже не могу его найти.

Может ли кто-нибудь одолжить мне нить, чтобы я мог проследить и понять это? Спасибо

UPDATE:

Я нашел несколько других фрагментов кода и попробовал эту версию вместо этого, что почти привело меня туда:

syn region vimFoldRegion
  \ start="#region"
  \ end="#endregion"
  \ skip=+"\%(\\"\|[^"]\)\{-}\%("\|$\)\|'[^']\{-}'+
  \ transparent fold
  \ keepend extend
  \ containedin=ALLBUT,@vimNoFold

Это позволяет мне свернуть область, но весь код внутри области отображается как комментарий. Я пробовал разные вариации параметров в syn, но я не зацикливался на этом.

1 Ответ

2 голосов
/ 30 сентября 2011

Vim может сворачивать регионы на основе маркеров, если вы установите foldmethod=marker.По умолчанию используются маркеры {{{ и }}}, хотя я вполне уверен, что вы можете переопределить их на #region и #endregion.Проблема в том, что вы теряете возможность складываться в зависимости от синтаксиса.Есть еще один вопрос переполнения стека, связанный с объединением двух методов сгиба [1], но из этого следует, что невозможно сделать оба одновременно.

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

[1] Foldmethod = marker и синтаксис вв то же время?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...