Żeby było jasne, nie chcesz „szybkiego sposobu przesuwania kursora w wierszu poleceń terminala ”. To, czego naprawdę chcesz, to szybki sposób poruszania się po linii poleceń w twojej powłoce programie .
Na przykład Bash jest bardzo popularną powłoką. Używa Readline biblioteki do implementacji danych wejściowych wiersza poleceń. Można powiedzieć, że znajomość powiązań Readline jest bardzo wygodna, ponieważ jest używana nie tylko w bash. Na przykład gdb używa również Readline do przetwarzania danych wejściowych.
W dokumentacji Readline można znaleźć wszystkie powiązania związane z nawigacją (i nie tylko):
http://www.gnu.org/software/bash/manual/bash.html#Readline-Interaction
Krótkie kopiowanie i wklejanie, jeśli powyższy link nie działa:
Najpotrzebniejsze rzeczy
- Ctrl-b Cofnij się o jeden znak.
- Ctrl-f Przejdź do przodu o jeden znak.
- [DEL] lub [Backspace] Usuń znak po lewej stronie kursora.
- Ctrl-d Usuń znak pod kursorem.
- Ctrl-_ lub Cx Cu Cofnij ostatnie polecenie edycji. Możesz cofnąć całą drogę z powrotem do pustej linii.
Ruch
- Ctrl-a Przejdź na początek wiersza.
- Ctrl-e Przejdź na koniec wiersza.
- Meta-f Przechodzi do przodu o słowo, które składa się z liter i cyfr.
- Meta-b Cofnij słowo.
- Ctrl-l Wyczyść ekran, ponownie drukując bieżącą linię u góry.
Zabijaj i szarp
- Ctrl-k Zabij tekst od aktualnej pozycji kursora do końca linii.
- Md Zabij od kursora do końca bieżącego słowa lub, jeśli między słowami, do końca następnego słowa. Granice słów są takie same, jak te używane przez Mf.
- M- [DEL] Zabija od kursora początek bieżącego słowa lub, jeśli jest między słowami, początek poprzedniego słowa. Granice słów są takie same, jak te używane przez Mb.
- Ctrl-w Zabij od kursora do poprzedniej białej spacji. To jest inne niż M-, ponieważ granice słów są różne.
- Ctrl-y Yankuje ostatnio zabity tekst z powrotem do bufora przy kursorze.
- Mój Obróć pierścień zabijania i szarp za nowy szczyt. Możesz to zrobić tylko wtedy, gdy poprzednie polecenie to Cy lub My.
M to klucz Meta. W terminalu Max OS X możesz włączyć opcję „Użyj opcji jako klucza meta” w Ustawieniach / Klawiatura. W przypadku Linuksa jest to bardziej skomplikowane.
Aktualizacja
Zwróć również uwagę, że Readline może działać w dwóch trybach:
- tryb emacs (który jest domyślny)
- tryb vi
Aby przełączyć Bash na tryb vi:
$ set -o vi
Osobiście wolę tryb vi, ponieważ używam vim do edycji tekstu.
Premia
W aplikacji Terminal macOS (a także w iTerm) możesz przesunąć kursor z naciśniętym klawiszem Option (kursor przesunie się do klikniętej pozycji). To działa nawet w środku vim
.
Przytrzymaj klawisz Option i kliknij miejsce, w którym chcesz przesunąć kursor, a Terminal przesuwa kursor w to dokładne miejsce.
źródło
Zwykle wolę tryb edycji vi (ponieważ te naciśnięcia klawiszy są teraz osadzone w moim rdzeniu kręgowym (mózg w ogóle nie jest używany), razem z CTRL-K, CTRL-X z WordStar 3.3 :-). Możesz użyć wiersza poleceń,
set -o vi
aby go aktywować (iset -o emacs
przywrócić).W Vi byłoby to (oczywiście ESC-K, aby ustawić linię jako pierwszą) "
f5;;B
" (bez podwójnych cudzysłowów).Oczywiście musisz zrozumieć, co się dzieje, aby ujść z tego na sucho. Zasadniczo tak
Zobaczmy, czy miłośnicy emacsa mogą wymyślić lepsze rozwiązanie, mniej niż 5 naciśnięć klawiszy (chociaż nie chcę rozpoczynać wojny religijnej).
Czy zastanawiałeś się, czy może chciałbyś umieścić to przerażająco długie polecenie w skrypcie? :-)
Właściwie mogę pójść o jedną lepszą niż to: "
3f5B
" znaleźć trzecie wystąpienie "5", a następnie cofnąć się do początku słowa.źródło
Użyj Meta-b / Meta-f, aby przejść odpowiednio do tyłu / do przodu o słowo.
W OSX Meta tłumaczy się jako ESC, co jest do bani.
Ale alternatywnie możesz otworzyć preferencje terminala -> ustawienia -> profil -> klawiatura i zaznaczyć „użyj opcji jako klawisz meta”
źródło
Po jednokrotnym uruchomieniu polecenia uruchom
fc
Uruchomi się
$EDITOR
z poprzednim poleceniem, a następnie możesz użyć zwykłego edytora do zmodyfikowania polecenia. Po zapisaniu i wyjściu plik zostanie wykonany.... ale, jak powiedział Pax - wiersz poleceń nie jest szczególnie dobry do edycji absurdalnie długich wierszy - dlaczego nie przekształcić polecenia w skrypt?
źródło
Jeśli chcesz przejść do przodu o określoną liczbę słów, naciśnij
M-<n>
(M-
dotyczy Meta i zwykle jest to klawisz Escape), a następnie naciśnij liczbę. Spowoduje to wysłanie argumentu powtarzania do readline, więc możesz powtórzyć dowolne polecenie - jeśli chcesz przejść do przodu, naciśnij,M-<n> M-f
a kursor przesunie się do przodu o<n>
liczbę słów.Na przykład
Więc dla twojego przykładu od kursora na początku linii, którą byś uderzył,
M-26 M-f
a twój kursor byłby na--option25|
-lub- od końca liniiM-26 M-b
umieści kursor na--|option25
źródło
Przyrostowe przeszukiwanie historii
w terminalu wprowadź:
następnie skopiuj wklej i zapisz
wszystko, co musisz zrobić, aby znaleźć poprzednie polecenie, to wpisać, powiedz pierwsze 2 lub 3 litery, a strzałka w górę szybko przeniesie Cię tam, mówiąc chcę:
wszystko, co muszę zrobić, to wejść
i naciśnij strzałkę w górę polecenie wkrótce się pojawi
źródło
Jedną z opcji jest użycie
M-x shell
wemacs
. Zapewnia to wszystkie funkcje edycji i naciśnięcia klawiszyemacs
, dzięki czemuC-s
można gooption25
na przykład użyć do wyszukiwania tekstu .(Ale nadal wolałbym być w prawdziwej powłoce terminala, jeśli ktoś może wskazać mi dobre funkcje wyszukiwania i edycji).
źródło
Użyj myszki
Czasami najłatwiejszym sposobem edycji wiersza poleceń jest użycie myszy. Niektóre poprzednie odpowiedzi dają polecenie, aby otworzyć bieżącą linię w twoim $ EDITOR. Dla mnie (zhs z grml config) ta kombinacja to
Alt+e
. Jeśli włączysz mysz w swoim edytorze, możesz z niej skorzystać.Aby włączyć mysz w Vimie, dodaj to do swojego ~ / .vimrc
Jeśli następnie chcesz dokonać zaznaczenia tekstu w terminalu (zamiast przekazywać kliknięcie myszą do vim), przytrzymaj Shift podczas klikania; jest to oczywiście specyficzne dla terminala.
Administratorzy systemów nie powinni bać się myszy.
źródło
W Cygwin możesz aktywować taką funkcję, klikając prawym przyciskiem myszy okno. W wyskakującym okienku wybierz Opcje ... -> Mysz -> aktywuj Kliknięcia umieść kursor wiersza poleceń -> Zastosuj.
Od teraz, po prostu kliknięcie lewym przyciskiem myszy w jakimś miejscu w linii poleceń umieści tam kursor.
źródło
pierwszy: export EDITOR = 'nano -m'
następnie: CTRL + X CTRL + E w kolejności.
Bieżąca linia zostanie otwarta w edytorze nano z włączoną myszą. Możesz kliknąć dowolną część tekstu i edytować
następnie CTRL + X, aby wyjść i y, aby potwierdzić zapis.
źródło
Zrobiłem skrypt, aby kursor wiersza poleceń poruszał się po kliknięciu myszą :
Można go znaleźć na githubie
Więcej informacji w innym poście
Działa, jeśli
echo -e "\e[?1000;1006;1015h" # Enable tracking
drukuje sekwencje ucieczki na terminalu po kliknięciu mysząźródło
Może nie jest to najszybsze, ale to musi być tutaj, trochę czytania o ruchach kursora ANSI
Sekwencje specjalne ANSI umożliwiają dowolne przesuwanie kursora po ekranie. Jest to bardziej przydatne w przypadku pełnoekranowych interfejsów użytkownika generowanych przez skrypty powłoki, ale może być również używane w monitach . Sekwencje ucieczki przed ruchem są następujące:
(...)
Spróbuj wstawić następujący wiersz kodu po znaku zachęty (jest trochę jaśniejsze co robi jeśli znak zachęty znajduje się kilka linii w dół terminala, kiedy to umieścisz):
echo -en "\033[7A\033[1;35m BASH \033[7B\033[6D"
Powinno to przesunąć kursor o siedem linii w górę ekranu, wypisać słowo "BASH ”, a następnie wróć do miejsca, w którym zaczął wyświetlać normalny monit.Przykłady :
Przesuń kursor wstecz o 7 linii:
Przenieś kursor do wiersza 10, kolumny 5:
Szybkie wyświetlanie kodów kolorów w celu pokolorowania programu:
źródło