Przypadek użycia emulatora terminala neovim?

10

Jedną z dużych różnic między neovimem a Vimem jest to, że neovim zawiera emulator terminala, który działa asynchronicznie.

Nie widzę jednak, jak mogę skorzystać z tej funkcji. Do czego mogę tego użyć? Czy możesz podać kilka przypadków użycia funkcji terminalu neovim, aby zrozumieć, w jaki sposób mogę go najlepiej wykorzystać?

W normalnym Vim normalnie używać :read !{command}, :write !{command}, Ctrl+Zi fgjak tmux okien dzielonych.

cbaumhardt
źródło
Jednym z problemów <C-z>jest to, że proces Vima jest zawieszony przez system operacyjny: nic nie robi (w tym odpowiada na polecenia serwera).
Martin Tournoij,
Że to pomoże korzystać :shellz exitzamiast lub vim jest zawieszony tutaj też?
cbaumhardt
1
@Carpetsmoker, czego oczekujesz od edytora tekstu, gdy go nie używasz?
romainl,
@romainl Cóż, na przykład mam skrypt, który skupi sesję Vima na edycji konkretnego pliku; to zawiesi się na zawieszonych procesach Vima ...
Martin Tournoij
1
To nie jest problem <C-z>, tylko problem ze skryptem.
romainl

Odpowiedzi:

10

Uruchomienie terminala w Vimie pozwala na użycie poleceń Vima na wejściu i wyjściu do programów uruchamianych w tym terminalu. Dostajesz wyszukiwanie, kopiowanie-wklejanie, makra, kolorowanie składni itp. Używanie :read !{command}i :write !{command}daje to dla poleceń jednorazowych, ale asynchroniczne wejście / wyjście staje się przydatne, gdy chcesz przesłać dane wejściowe do zewnętrznego programu kawałek po kawałku.

Typowym przypadkiem użycia jest pętla REPL ( read-eval-print ), którą zapewnia wiele języków programowania wysokiego poziomu. W kodzie źródłowym wpisujesz zwrotkę, a następnie podajesz ją do REPL w celu uzyskania natychmiastowej informacji zwrotnej. Ponieważ REPL wciąż działa od jednego zgłoszenia do drugiego, przesłany fragment kodu jest wykonywany w kontekście.

Gilles „SO- przestań być zły”
źródło
6

Myślę, że opcja tworzenia mapowań tylko na terminalach jest cenna i rozszerza opcje, które masz w innych emulatorach terminali, np. Mapowanie t, aby uruchamiać unittesty z określoną konfiguracją, co można osiągnąć tylko poprzez złożone aliasy lub funkcje bash.

Beka
źródło
4

Najbardziej oczywistym przypadkiem, o którym myślę, jest programowanie. Czy kiedykolwiek chciałeś uruchomić testy w VIM, skompilować lub użyć dowolnego narzędzia konsoli? Wiem, że ludzie używają Tmux, ale wiem, że możesz to zrobić w NeoVIM, muszę powiedzieć. To jest niesamowite!

Jeśli korzystasz z buforów, możesz dowolnie dodawać, usuwać, ukrywać i pokazywać terminale. To jest zysk;)

Uruchamianie powłoki w NeoVIM

Gildardo Adrían Maravilla
źródło
3

Najlepszy przypadek użycia, jaki mogę wymyślić, to oryginalny ADM-3a na linii 110 bps! Czasami naprawdę nie ma substytutu dla patrzenia na rzeczy obok siebie i :!rtego nie wycina.

cxw
źródło
3
Powodzenia w wykonywaniu czegokolwiek w dwóch oknach 39x12 (lub 39x24!) ;-)
romainl