Ctrl+ rto świetne małe narzędzie do wyszukiwania .bash_history
wcześniej uruchomionych poleceń.
Jednak gdy używam go w moim OS X Terminal.app, widzę dziwne zachowanie i zastanawiałem się, czy ktoś inny widzi to samo lub wie, jak to naprawić.
- Ctrl+r
- wpisz coś takiego
find
- och spoko, patrz ... to polecenie, które chciałem
find . -exec grep -q "hello world" '{}' \; -print
- Chcę uruchomić to polecenie, ale zmień Witaj świecie na coś innego.
- Więc uderzyłem ←lub→
- Teraz polecenie to SORTA w wierszu polecenia, ale zawsze wygląda jak jakaś uproszczona wersja polecenia, taka jak ta:
-q "blog_posts_by" '{}' \; -print
gdzie jest całe polecenie i mogę używać klawiszy kursora do poruszania się po linii, ale nie wszystkie jest drukowane. Istnieje rozdźwięk między tym, co jest wyświetlane na linii, a tym, co terminal myśli, że edytuję.
Czy ktoś ma pojęcie, dlaczego tak się dzieje? Przeszukiwanie sieci nie jest łatwym zjawiskiem.
Odpowiedzi:
Prawdopodobnie masz sekwencje specjalne dla kolorów w pytaniu, które nie są odpowiednio rozdzielane. Muszą być zamknięte w
\[
i\]
.Długość nie drukowanych sekwencji znaków nie jest uwzględniana w długości monitu, gdy są one w ten sposób ujęte, a pozycja poprzednich poleceń musi zostać obliczona dla poprawnego wyświetlenia po zawinięciu.
źródło
PS1
, ale już nie po znaku nowej linii w środku.Może to wynikać ze sposobu, w jaki klawisze Escape są skonfigurowane w twoim terminalu, zwykle używam lewej lub prawej strzałki na iTerm lub Terminal.app, ponieważ nie jestem fanem natychmiastowego powrotu, czy to działa dla ciebie? ?
źródło
Inną możliwą przyczyną tego problemu jest niewłaściwa
TERM
wartość. Na przykład zdarzyło mi się to, kiedy korzystałem z kolorów na PS1, ale mójTERM
był ustawionyxterm
. Zmieniłem to na,xterm-256color
a następnie CTRL-r znów zaczął działać poprawnie.źródło