Dzieje się tak, ponieważ zwykle Vim przełącza się na alternatywny ekran i tam działa. Po wyjściu, Vim przełączy się z powrotem i dlatego nie zobaczysz nic z sesji Vima, ale wynik polecenia wykonanego nawet przed uruchomieniem Vima.
Ta funkcja jest wyjaśniona na :h xterm-screens
(link)
Więc w zasadzie nie chcesz tego i dlatego chcesz to wyłączyć. Możesz to zrobić, ustawiając :set t_ti= t_te=
kody terminali, które to wykonują, na puste.
Podsumowując, chciałbyś uruchomić Vima w ten sposób:
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
Resetujemy tę 'more'
opcję, abyś nie widział monitu o naciśnięcie klawisza Enter.
Christian Brabandt
źródło
less
są takie pagery . Po prostu potnij to w mniej podobny sposóbvim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!' | less
. Układ może być zepsuty na początku (jest w moim terminalu), ale po naciśnięciu <CL> wszystko jest ładne i eleganckie.vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
, jest tylko „szybki flash”, polecenie kończy się kodem 0, brak danych wyjściowych. Czy coś brakuje?Możemy również użyć
:redir
polecenia, aby przekierować wyniki poleceń vima do plikuNa przykład,
To przekierowuje wyjście
scriptnames
do pliku „vimout”źródło
Doceniam odpowiedź udzieloną przez Christiana Brabandta, ale myślę, że lepszym rozwiązaniem byłoby oddzielenie polecenia zakończenia za pomocą innego polecenia -c, takiego jak:
Użycie tej metody oznacza, że możesz połączyć razem kilka różnych poleceń, a następnie użyć końcowego „q!” wyjść z Vima.
źródło
W sytuacjach, gdy potrzebujesz pełnego załadowania vima, tak jakbyś uruchomił go ręcznie, działa to:
Na przykład chciałem przekierować wyjście
:map
do pliku z powłoki, ale chciałem uchwycić mapowanie, które vim-Airlines tworzy dopiero po wyświetleniu jego tabulatora (linia u góry pokazująca wszystkie otwarte nazwy buforów). Ponieważ wydaje się, że to robi to asynchronicznie po prostu uruchomienie-c
przekierowania do pliku nie dawało mu czasu na mapowanie. Może być lepszy sposób, ale to działa dla mnie, zwłaszcza, żeupdatetime
ustawiłem już100
(0,1 sekundy), co wpływa na to, jak długoCursorHold
zdarzenie się uruchomi . Domyślnie vim ustawia go na 4 sekundy.źródło