Jak mogę replikować składanie kodu Vima?

28

Składanie kodu w Emacsie

Czasami chcę złożyć blok tekstu. W Vimie możesz łatwo składać bez fuzzów. Bez dodawania żadnych znaków specjalnych, takich jak „znaczniki” lub konkretnych wyrażeń regularnych, takich jak {{{. Chciałbym wybrać region i złożyć go, bez bałaganu w strukturze.

Rozglądając się, wydaje się, że już były pytania dotyczące składania kodu w Emacsie. Ktoś powiedział, że „nie ma idealnego rozwiązania”. Na przykład utworzyłem klip prostego składania kodu w Vimie:

Vim zwykłe składanie

wprowadź opis zdjęcia tutaj

+ Dość proste, wybierz region i złóż go.
+ Jest trwały. Kiedy zabijesz bufor / zamkniesz Vima. I ponownie otwórz plik, fałdy nadal tam są.
+ Otrzymasz pasek podświetlenia, aby łatwo zobaczyć, co jest złożone.

Istnieje wiele innych konfiguracji składania dla Vima. Jestem zadowolony z Emacsa, ale tęsknię za jedną rzeczą. Inne alternatywy, które wypróbowałem, na przykład HideShow:

Hide Show

wprowadź opis zdjęcia tutaj

Alternatywa zła z hide-show minor mode. Znalazłem to bezużyteczne:

- Nie jestem w stanie wybrać regionu i go złożyć. Składa się na bloki kodu.

- Nie ma baru higienicznego ani czegoś takiego, aby się z tobą spotkać, jest złożony. Możesz łatwo tego przegapić.

- To nie jest trwałe. Po ponownym otwarciu pliku fałdy znikną.

Istnieje inna paczka, Złóż to :

Złożyć to

wprowadź opis zdjęcia tutaj

- To całkiem alternatywa. Jednak bałagan z wcięciem, ponieważ tekst pod zakładką zostaje umieszczony obok zakładki ... (?).

- Jest w stanie wizualnie wybrać region i złożyć go. Ale łamie to założenie, więc przegląd się psuje. Niezbyt przydatny.

- Nie ma słupka higienicznego ani czegoś takiego, aby się z Tobą skontaktować, jest złożony. Możesz łatwo tego przegapić.

W czym problem?

Chciałbym powtórzyć, jak Vim składa. Ale kiedy się rozejrzałem, wydaje się, że bardzo trudno to zrobić w Emacsie. Zastanawiam się więc, czy jest coś w emacsie lub jego architekturze, które utrudnia to odtworzenie? Jakie są granice?

ReneFroger
źródło
2
Czułem, że pytanie jest zbyt ogólne, dlatego głosowałem za jego zamknięciem. Poleciłbym, aby oryginalny plakat wybrał kilka bibliotek, które zapewniają niektóre z poszukiwanych funkcji, a następnie połączył / zmodyfikował je zgodnie z potrzebami. Jeśli PO napotka problem z implementacją / modyfikacją określonej funkcji , opublikuj konkretne pytanie ograniczone do tego jednego problemu. Program operacyjny prawdopodobnie może osiągnąć pożądane efekty wizualne, ale powinien być przygotowany na to, aby z czasem był to projekt, nad którym należy pracować.
prawnik
3
Czy możesz wyjaśnić, jakich funkcji składania potrzebujesz? Z reguły nie można oczekiwać, że ludzie na tej stronie będą wiedzieć, jak działa składanie kodu Vima, a mimo to powinieneś nam powiedzieć, które funkcje chcesz konkretnie. Jedyne informacje o tym, czego chcesz, to animacja, która pokazuje tylko jeden przykład, a poza tym nie mam pojęcia, co to ilustruje: nie pokazują, jakich poleceń użyłeś, dlaczego przesunąłeś kursor w to lub tamto itp. Dodatkowo w typowej przeglądarce grają w pętli i nie można powiedzieć, kiedy zaczyna się powtórzenie.
Gilles „SO- przestań być zły”
3
blokada powinna zostać usunięta z tego pytania. w obecnym stanie jest dość konkretny. brak odpowiedzi na pytanie nie jest dobrym powodem do jego zamknięcia.
Ista
2
ar-hide-region-atpt, ar-show-region-atpt z 'thing-at-point-utils.el', github.com/andreas-roehler/thing-at-point-utils - proszę odblokować, aby może być zwykłą odpowiedzią.
Andreas Röhler,
1
Pytanie, jak rozumiem, brzmi w zasadzie: „ Ktoś: Napisz całą bibliotekę dla Emacsa, która zapewni dokładne funkcje składania kodu znalezione w Vimie. ” Z niektórych komentarzy i głosów popierających wynika, że ​​jest wystarczająco dużo ludzie, którzy chcieliby to zobaczyć, stają się rzeczywistością. Nie rozumiem jednak, w jaki sposób można to rozsądnie dopasować do odpowiedzi - proponowana nowa biblioteka będzie musiała być utrzymywana, z problemami i poprawkami. Ja też nie miałbym nic przeciwko, że ktoś napisze całą bibliotekę z nowymi, fajnymi funkcjami składania kodu.
prawnik

Odpowiedzi:

16

Wypróbować vimish-fold.

cechy

  • dołączone baterie: aktywuj tryb pomocniczy, powiąż kilka poleceń i wszystko będzie działać;

  • działa w wybranych regionach;

  • jest trwały: po zamknięciu pliku fałdy nie znikają;

  • oprócz tego, że jest trwały, dobrze się skaluje, możesz pracować na setkach plików z dużą ilością zagięć bez negatywnych skutków;

  • oczywiste jest, które części tekstu są złożone;

  • nie łamie wgłębienia czy coś;

  • może ponownie złożyć tylko rozwinięte fałdy (o mój);

  • dla fanów avypakietu: możesz użyć avydo złożenia tekstu przy minimalnej liczbie naciśnięć klawiszy!

Stosowanie

Utwórz powiązanie dla niektórych / wszystkich tych funkcji:

  • vimish-fold - podstawowe składanie wybranego regionu;

  • vimish-fold-unfold- tak naprawdę nie musisz tego wiązać, po prostu użyj, C-ggdy punkt jest umieszczony na nagłówku reprezentującym złożony tekst;

  • vimish-fold-unfold-all - może to jednak być przydatne;

  • vimish-fold-refold - tak, możesz go złożyć;

  • vimish-fold-avy- użyj, avyaby złożyć tekst!

Możesz przełączać się vimish-fold-modeselektywnie w trybach, w których chcesz mieć trwałe składanie, lub po prostu aktywować go wszędzie:

(vimish-fold-global-mode 1)
Mark Karpov
źródło
czy masz jakieś sugerowane powiązania klawiszy? Jakich powiązań używasz, gdy jesteś w trybie C ++? Tryb C? Tryb Python? Tryb Lisp? Tryb ELisp? Tryb JavaScript?
Reb.Cabin
1
@ Reb.Cabin, nie jest to pakiet zależny od trybu, więc globalne powiązania klawiszy są najlepszym wyborem. Używam powiązań klawiszy, które nie zawierają akordów-klawiszy, a większość ludzi uważa je za nieco dziwne, obecnie mam: menu v fvimish-fold, menu v avimish-fold-avy, menu v uvimish-fold-unfold-all, menu v vvimish-fold-refold. Większość moich skrótów klawiszowych jest taka, to moja konfiguracja .
Mark Karpov,
Czy to integruje się ze złymi ruchami i obiektami tekstowymi?
PythonNut
1
Hm ... zacznę pracę nad PR.
PythonNut
1
Ja, na przykład, uważam, że fałdowanie Vimish jest całkowicie bezużyteczne. Może jest to intuicyjne dla tych, którzy już znają składanie kodu w vimie ... Nie wiem. Ponadto nie rozumiem, dlaczego składanie w trybie org działa tak dobrze, ale Emacs nie ma jeszcze dobrego składania kodu ...
kjo