Używanie tekstu z wyników poprzednich poleceń


16

EDYCJA Kwiecień 2015: Jeśli masz to samo pytanie, polecam również sprawdzenie http://xiki.org/


Wiem, że nie tak działają terminale, ale często żałuję, że nie ma łatwego sposobu na użycie tekstu (kopiowanie, modyfikowanie itp.), Który jest już w historii mojego okna terminala z poprzednich wyników komend.

Wyobraziłem sobie to tak:

Jestem przy mojej powłoce bashowej, aby wprowadzić polecenie i zdaję sobie sprawę, że muszę wpisać coś, co jest już na ekranie, kilka linii powyżej. Mogę sięgnąć po mysz i ją wybrać, ale nienawidzę tego. W tej chwili naprawdę chciałbym, aby cały mój terminal stał się gigantycznym buforem Vima, a wszystko to: podpowiedzi, polecenia, które wpisałem i wyniki tych poleceń. Wszystko. A potem mógłbym przeskoczyć kilka wierszy w górę, może trochę edytować i szarpać trochę tekstu. Następnie wróć do trybu powłoki bash i wklej wszystko, co szarpnąłem do bieżącego wiersza poleceń.

Wiem, że istnieją pewne opcje:

  • Oczywiście, przenieś tekst, którego potrzebuję, bezpośrednio z danych wyjściowych niektórych poleceń do pliku lub bezpośrednio do następnego polecenia. Ale w tym celu musisz wcześniej zaplanować lub ponownie wykonać polecenie z historii (zakładając, że dane wyjściowe nie zmienią się między wywołaniami).

  • Aby sięgnąć po mysz i wybierz tekst do skopiowania. Kulawy, irytujący, chciałbym tego nie robić (to nie jest strona wymiany stosów GUI, prawda? =)

  • Aby użyć opcji „Eksportuj tekst jako ...” w mojej aplikacji (Mac OS X) Terminal i zapisz tekst terminalu w pliku. Następnie otwórz plik i pracuj z nim. Prawie, ale po co przechodzić przez etap zapisywania do pliku na dysku?

Pytanie brzmi: co robisz w tej sytuacji? Czy jest jakaś sztuczka, narzędzie lub funkcja powłoki, które mogą być przydatne w tym scenariuszu? Czy po prostu rezygnujesz z używania myszy lub ponownie wpisujesz wszystko, co chcesz wpisać?

Być może problem polega na tym, że nie robię rzeczy „w sposób uniksowy”, ale no cóż, to jest rok 2010 i nie mogę łatwo skopiować tekstu z kilku linii od mojego kursora?



Odpowiedzi:


4

Możesz użyć skryptu (użyj -f, aby upewnić się, że za każdym razem opróżnia się) i możesz mieć wszystkie dane wyjściowe w pliku.

Użyj terminalowego multipleksera (screen, tmux itp.). Na przykład dla ekranu http://web.mit.edu/gnu/doc/html/screen_11.html#

Polecenie: kopiuj Wejdź w tryb kopiowania / przewijania. Pozwala to skopiować tekst z bieżącego okna i jego historii do bufora wklejania. W tym trybie aktywny jest edytor pełnoekranowy podobny do vi, z elementami sterującymi opisanymi poniżej.

Inne terminale z pewnością mają bardziej zaawansowane możliwości.


Dobrze. Właśnie dowiedziałem się, że „Multiplekser terminali” jest prawdopodobnie tym, czego potrzebuję. Dzięki. Dziękujemy również za wskazówkę dotyczącą polecenia „skrypt”.
Sergio Acosta,

5

W tmux (terminal multiplekserze) możesz nacisnąć Ctrl + A- [, aby przejść do trybu bufora Vi, w którym możesz poruszać się po ekranie, przewijać bufor tam iz powrotem, kopiować tekst itp. Domyślnym skrótem jest Ctrl + B- [ale to oczywiście miało zostać zrekonfigurowane. Domyślnym trybem bufora jest Emacs, ale można go skonfigurować tak, aby był Vi.

Sprawdź tmux, to naprawdę świetny nowoczesny multiplekser terminali. Oprócz pracy z buforem możesz podzielić ekran na wiele okien, połączyć się z tą samą sesją z wielu terminali itp. Dla maksymalnej wygody możesz nawet ustawić ją jako powłokę logowania, jeśli powiesz jej, jaka jest twoja rzeczywista powłoka.

Na OpenBSD tmux został nawet włączony do systemu podstawowego.

Więcej informacji na stronie man dla tmux. Zobacz także zrzuty ekranu na http://tmux.sourceforge.net/


tmux jest najfajniejszy!
Gabe.

4

W emacsie powłoka Mx obsługuje edycję poprzednich wyników. Możesz łatwo skopiować wyniki poprzednich poleceń wklej lub dowolną część bufora, jak zwykły bufor. Jestem prawie pewien, że powinien istnieć odpowiednik vim.


1
To bardzo blisko tego, czego chcę, ale muszę już być w Emacsie lub Vimie. +1
Sergio Acosta

Tak, może to być domyślny termin + powłoka. :) Wtedy użyjesz tam co najmniej zwykłych klawiszy nawigacyjnych po tekście. Jeśli nauczyłeś się więcej klawiszy specjalnych, możesz uzyskać dostęp do następujących funkcji Emacsaeshell .
imz - Ivan Zakharyaschev

1

Jak wspomniano tutaj, Emacs eshellmoże być twoim domyślnym terminem + shell. :) Wtedy użyjesz tam co najmniej zwykłych klawiszy nawigacyjnych po tekście. Jeśli nauczyłeś się więcej klawiszy specjalnych, eshellmożesz uzyskać dostęp do następujących funkcji Emacsa :



1

Spróbuj użyć vima jako swojego CLI? Po prostu wybierz wyjście z kilku linii w górę i przeprowadź przez:!.


Przepraszam, nie podążam za tobą. Czy możesz opracować, proszę?
roaima
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.