Як я можу повторити складання коду Vim?


28

Складання коду в Emacs

Іноді мені хочеться скласти блок тексту. У Vim у вас легке складання без пуху. Без додавання будь-яких спеціальних символів, таких як "маркери" або специфічні виразні символи {{{. Я хотів би вибрати регіон і скласти його, не псуючи структуру.

Оглядаючись, здається, що в Emacs вже виникали питання щодо складання коду. Хтось сказав, що "ідеального рішення не існує". Наприклад, я створив кліп простого кодування у Vim:

Vim звичайний складний

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

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

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

Сховати шоу

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

Зла альтернатива с hide-show minor mode. Я вважаю його непридатним:

- Я не в змозі вибрати регіон і скласти його. Він складається на кодові блоки.

- Немає високого бару чи чогось, щоб відвідувати вас, це складено. Ви могли легко пропустити це.

- Це не наполегливо. Якщо ви знову відкриєте файл, складки не будуть.

Є ще один пакет, складіть це :

Складіть це

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

- Це досить альтернатива. Однак, це псується з відступом, оскільки текст під складкою розміщується поруч із згином ... (?).

- Він здатний просто візуально вибрати регіон і скласти його. Але це порушує відступ, тому огляд псується. Не дуже зручно.

- Немає високого бару чи чогось, щоб відвідувати вас, це складено. Ви могли легко пропустити це.

У чому проблема?

Я хотів би повторити, як Vim робить складання. Але коли я обшукував, здається, що це дуже важко зробити в Emacs. Тож мені цікаво, чи є щось у emacs чи його архітектура, що ускладнює його копіювання? Які межі?


2
Я вважав, що питання занадто широке, тому я проголосував, щоб закрити цю групу. Я рекомендую оригінальному афіші вибрати пару бібліотек, які надають деякі шукані функції, а потім комбінувати / змінювати їх за бажанням. Якщо в ОП виникають проблеми з реалізацією / зміною певної функції , то опублікуйте конкретне питання, обмежене цим питанням. ОП може, ймовірно, досягти бажаних візуальних ефектів, але слід бути готовим до того, щоб він став постійним проектом, над яким над часом працювати.
законник

3
Чи можете ви поясніть, які функції складання ви хочете? Як правило, ви не можете очікувати, що люди на цьому веб-сайті знають, як працює складання коду Vim, і все одно ви повинні сказати нам, які функції ви хочете конкретно. Єдина інформація, яку ви надаєте про те, що ви хочете, - це анімація, яка показує лише один приклад, і я все одно не маю поняття, що це зображує: вони не показують, якими командами ви користувалися, чому ви перемістили курсор на ту чи іншу точку тощо. Плюс у звичайному браузері вони грають у циклі, і неможливо сказати, коли починається повтор.
Жил "ТАК - перестань бути злим"

3
затримку слід усунути з цього питання. на даний момент він є досить специфічним. відсутність відповіді на питання - це не вагомий привід закрити його.
Іста

2
ar-hid-region-atpt, ar-show-region-atpt від 'thing-at-point-utils.el', github.com/andreas-roehler/thing-at-point-utils - будь ласка, скасуйте блокування, щоб може бути звичайною відповіддю.
Andreas Röhler

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 ++? C режим? Режим Python? Режим Lisp? Режим ELisp? Режим JavaScript?
Reb.Cabin

1
@ Reb.Cabin, це не специфічний для пакету пакет, тому глобальні прив'язки ключів - найкращий вибір. Я використовую прив’язки клавіш, які не включають акорди клавіш, і більшість людей вважають їх трохи дивними, на даний момент у мене є: menu v fvimish-fold, menu v avimish-fold-avy, menu v uvimish-fold-unfold-all, menu v vvimish-fold-refold. Більшість моїх зв'язків клавіш виглядають так, це моя конфігурація .
Марк Карпов

Чи поєднується це зі злими рухами та текстовими об’єктами?
PythonNut

1
Гм ... Почну роботу над піаром.
PythonNut

1
Я, напевно, вважаю, що лобова складка є абсолютно непридатною. Можливо, це зрозуміло тим, хто вже знайомий зі складанням коду у vim ... Я не знаю. Також я не розумію, чому складання в org-режимі працює так добре, але Emacs ще не має гарного складання коду ...
kjo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.