Как я могу повторить свертывание кода Vim?


28

Свертывание кода в Emacs

Иногда я хочу сложить блок текста. В Vim вы легко складываетесь без пуха. Без добавления каких-либо специальных символов, таких как «маркеры» или конкретного регулярного выражения, как {{{. Я хотел бы выбрать регион и сложить его, не мешая со структурой.

Оглядываясь вокруг, кажется, уже были вопросы о свертывании кода в Emacs. Кто-то сказал, что «идеального решения не было». Например, я создал клип простого кодирования в Vim:

Vim обычный складной

введите описание изображения здесь

+ Довольно просто, выберите регион и сложите его.
+ Это постоянно. Когда вы убьете буфер / закроете Vim. И снова откройте файл, сгибы все еще там.
+ Вы получаете полосу выделения, чтобы легко увидеть, что сложено.

Есть много других конфигураций складывания для Vim. Я доволен Emacs, но это одна вещь, по которой я скучаю. Другие альтернативы, которые я пробовал, например HideShow:

HideShow

введите описание изображения здесь

Альтернатива зла с hide-show minor mode. Я нашел это непригодным

- Я не могу выбрать регион и свернуть его. Он складывается на блоки кода.

- Там нет ни одного бара для бара или чего-то другого, чтобы присутствовать на нем, он свернут. Вы можете легко пропустить это.

- Это не настойчиво. Если вы снова откроете файл, сгибы исчезнут.

Есть еще один пакет, сложите это :

Сложите это

введите описание изображения здесь

- Это красивая альтернатива. Однако, это портит отступ, потому что текст под сгибом помещается рядом с сгибом ... (?).

- Он может просто визуально выбрать регион и сложить его. Но это нарушает неопределенность, поэтому обзор запутался. Не очень удобно.

- Там нет ни одного бара для бара или чего-то еще, чтобы присутствовать на нем, он свернут. Вы можете легко пропустить это.

В чем проблема?

Я хотел бы повторить, как Вим делает фолд. Но когда я искал вокруг, кажется, что это очень сложно сделать в Emacs. Так что мне интересно, есть ли что-то в emacs или его архитектуре, которое мешает воспроизвести это? Каковы пределы?


2
Я чувствовал, что вопрос был слишком широким, поэтому я проголосовал за его закрытие. Я бы порекомендовал оригинальному постеру выбрать пару библиотек, которые предоставляют некоторые из требуемых функций, а затем объединить / изменить их по своему желанию. Если у ОП возникают проблемы с реализацией / изменением определенной функции , тогда опубликуйте конкретный вопрос, ограниченный этой одной проблемой. ОП может, вероятно, достичь желаемых визуальных эффектов, но должен быть готов сделать его постоянным проектом, над которым нужно будет работать со временем.
— юрист

3
Не могли бы вы объяснить, какие функции складывания вы хотите? Как правило, вы не можете ожидать, что люди на этом сайте узнают, как работает свертывание кода Vim, и в любом случае вы должны сообщить нам, какие функции вы хотите конкретно. Единственная информация, которую вы предоставляете о том, что вы хотите, - это анимация, которая показывает только один пример, и в любом случае я понятия не имею, что она иллюстрирует: они не показывают, какие команды вы использовали, почему вы переместили курсор в ту или иную точку и т. Д. Плюс в типичном браузере они играют по циклу, и невозможно сказать, когда начинается повтор.
— Жиль "ТАК ... перестать быть злым"

3
трюм должен быть удален из этого вопроса. в его нынешнем виде это довольно специфично. отсутствие ответа на вопрос не является веской причиной, чтобы закрыть его.
— Иста

2
ar-hide-region-atpt, ar-show-region-atpt из 'thing-at-point-utils.el', github.com/andreas-roehler/thing-at-point-utils - пожалуйста, снимите блокировку, чтобы может быть обычный ответ.
— Андреас Рёлер

1
Вопрос, насколько я понимаю, в основном таков: « Кто-то: напишите, пожалуйста, целую библиотеку для Emacs, которая предоставит точные функции свертывания кода, найденные в Vim. » Я вижу из некоторых комментариев и голосований, что достаточно люди, которые хотели бы, чтобы это стало реальностью. Однако я не понимаю, как это могло бы вписаться в ответ - предложенная новая библиотека должна быть сохранена, с проблемами и исправлениями ошибок. Я тоже не против того, чтобы кто-то писал целую библиотеку с новыми замечательными функциями для свертывания кода
— юрист

Ответы:


16

Попробуй vimish-fold.

особенности

  • батарейки в комплекте: активируйте второстепенный режим, свяжите пару команд и все будет просто работать;

  • работает в выбранных вами регионах;

  • он постоянен: при закрытии файла ваши складки не исчезают;

  • Помимо того, что он постоянный, он хорошо масштабируется, вы можете работать с сотнями файлов с большим количеством сгибов без каких-либо побочных эффектов;

  • очевидно, какие части текста сложены;

  • это не ломает отступ или что-то;

  • он может складывать только развернутые складки (о мой);

  • для любителей avyпакета: вы можете использовать avyдля свертывания текста с минимальным количеством нажатий клавиш!

использование

Создайте привязку для некоторых из / всех этих функций:

  • vimish-fold - базовая складка выбранного региона;

  • vimish-fold-unfold- вам не нужно связывать это, просто используйте, C-gкогда точка находится на заголовке, представляющем сложенный текст;

  • vimish-fold-unfold-all - тем не менее это может быть полезно;

  • vimish-fold-refold - да, вы можете сложить его обратно;

  • vimish-fold-avy- используйте, avyчтобы сложить текст!

Вы можете включить vimish-fold-modeвыборочно для режимов, где вы хотите иметь постоянное сворачивание, или просто активировать его везде:

(vimish-fold-global-mode 1)

у вас есть какие-либо предлагаемые сочетания клавиш? Какие привязки вы используете, когда находитесь в режиме C ++? С режимом? Режим Python? Режим Lisp? Режим ELisp? Режим JavaScript?
— Reb.Cabin

1
@ Reb.Cabin, это не пакет, зависящий от режима, поэтому глобальные привязки клавиш - лучший выбор. Я использую привязки клавиш, которые не связаны с аккордами клавиш, и большинство людей сочли бы их немного странными, в настоящее время у меня есть: menu v f→ vimish-fold, menu v a→ vimish-fold-avy, menu v u→ vimish-fold-unfold-all, menu v v→ vimish-fold-refold. Большинство моих сочетаний клавиш такие, это мой конфиг .
— Марк Карпов

Это объединяется со злыми движениями и текстовыми объектами?
— PythonNut

1
Хм ... Я начну работу по пиару.
— PythonNut

1
Я, например, считаю Vimish-Fold совершенно непригодным для использования. Может быть, это интуитивно понятно тем, кто уже знаком со сворачиванием кода в vim ... Я не знаю. Кроме того, я не понимаю, почему сворачивание в режиме org работает так хорошо, но в Emacs пока нет хорошего свертывания кода ...
— kjo
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.