W skorupce ryby rzeczywista linia poleceń jest podświetlona:
Czy jest jakiś sposób na uzyskanie tego samego zachowania w bash?
Jest coś takiego, ale dla zsh, nie bash. Czy to możliwe, że można to przenieść do bash?
Aby wyjaśnić tym, którzy nie rozumieją zrzutu ekranu, objaśnienia lub linku: Chcę podświetlić tekst wprowadzony na terminalu. Polecenia, nawiasy, cytaty itp.
bash
syntax-highlighting
fish
Wuffers
źródło
źródło
Odpowiedzi:
Bash używa
readline
do interaktywnego wprowadzania danych, dlatego w tym programie trzeba będzie zaimplementować podświetlanie składni. Znalazłem dyskusję w Grupach dyskusyjnych Google na temat kodowania takiej funkcji.Ryba używa własnego edytora linii, który jest specyficzny dla tego programu i nie może być bezpośrednio przeniesiony.
Może się okazać, że
zsh
jest bardzo podobny do bash, a jego edytor linii jest rozszerzalny . Znalazłem podświetlanie składni zsh, aby włączyć tę funkcję w zsh.źródło
Nie ma prostego sposobu uzyskania podświetlenia składni w GNU Bash (lub GNU Readline), ale w zasadzie możliwe jest zaimplementowanie własnego edytora linii w skryptach Bash poprzez powiązanie wszystkich danych wejściowych użytkownika z funkcjami powłoki za pomocą wbudowanego polecenia
bind -x 'BYTE: SHELL-COMMAND'
. Oczywiście można zintegrować funkcję podświetlania składni z własnym edytorem linii.W rzeczywistości zaimplementowałem edytor linii
ble.sh
z funkcjami takimi jak podświetlanie składni i automatyczne sugestie. Obsługuje Bash 3.0--5.0. Ponieważ jest napisany w (prawie-) czystych skryptach Bash, możesz po prostusource
skrypt~/.bashrc
. Oto próbka do skonfigurowaniable.sh
w bashrc (szczegóły w README ):Uwaga : Wiem, że czasami odpowiadanie na pytania z linkami do własnych produktów jest uważane za autopromocję i jest niemożliwe, dlatego powstrzymałem się od odpowiedzi na to pytanie. Jednak żadne inne rozwiązanie nie pojawiło się długo, a także to pytanie ma wiele poglądów (co odzwierciedla jego znaczny popyt). Postanowiłem więc dzisiaj odpowiedzieć na to pytanie. Odnosząc się do następujących meta pytań / odpowiedzi, najpierw opisałem ten pomysł, a następnie podałem link do mojego projektu jako przykładową implementację.
Tak, muszę przyznać, że tak naprawdę jest to autopromocja , ale wierzę, że pomaga to ludziom, którzy chcą tej funkcji. Jeśli pojawią się problemy, byłbym wdzięczny, gdybyś mógł mi to powiedzieć w komentarzach.
źródło
Nie sądzę, że podświetlanie składni powinno odbywać się na poziomie powłoki, ale na poziomie interfejsu (tylko moja opinia - i wydaje się , że kogoś innego - ), więc szukałbym „wtyczek” dla Terminalu lub twojej ulubionej konsoli, na przykład tej wtyczki dla Kate może pomóc, lub ta inna, która oferuje podświetlanie składni w nano
Oto jeszcze więcej dyskusji na temat sposobu podświetlania składni w Terminalu:
chociaż tutaj lepiej wyjaśniono, jak to zrobić
Mam nadzieję, że to pomoże
źródło
ls
polecenia na podstawie typu pliku, który nie ma nic wspólnego ze składnią powłoki.