Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Znam trzy tego typu programy, od bardzo prymitywnych (more), przez niewiele mniej prymitywne (less), po byłby-super-gdyby-tylko... (most).
Most zasadniczo mi się podoba, ale odczuwam brak jednej możliwości — kolorowania składni. Zna ktoś jakiś pager, który potrafi to robić?
Odpowiedź: hej, możesz otworzyć plik w emacsie w trybie tylko do odczytu! nie jest punktowana. :)
Offline
Offline
Niezbyt uśmiechała mi się instalacja vima (całe 25 MB) tylko i wyłącznie by zrobić z niego pager. Jednak poszedłem tym tropem i znalazłem te dwa wpisy:
http://machine-cycle.blogspot.com/2007/10/syntax-hi … ng-pager.html
http://machine-cycle.blogspot.com/2008/02/syntax-hi … reloaded.html
Tak więc stanęło na:
highlight -A plik | most
później zrobię sobie z tego funkcję. Szkoda jedynie, że highlight nie chce współpracować z most -C, ale cóż... (dopisek: właściwie nic w tym dziwnego :])
PS. Czemu w FAQ robisz dowiązania i zmieniasz PATH, skoro wystarczyłoby dać alias vless='/usr/share/vim/vimcurrent/macros/less.sh'?
Ostatnio edytowany przez azhag (2008-11-17 00:51:02)
Offline
Hehe, to było ponad dwa lata temu jak pisałem to faq. Z resztą to nie był mój pomysł, co jest tam napisane. :)
BTW. Nie chcę uchodzić za malkontenta, ale highlight to mało co obsługuje i to jest zwykły konwerter. Vim w zestawie debianowym oferuje ponad 500 różnych składni - języków programowania, plików konfiguracyjnych, języków znaczników, changelogów, szblonów różnych framworków webowych. itp. IMHO warto poświęcić 25 MB dla takich możliwości. :)
Offline
Mimo wszystko nie potrzebuję dwudziestopięciomegowego pagera. Bo jako edytor vim zupełnie odpada. ;)
Nabazgrałem sobie taki skrypt, może komuś się przyda:
#!/bin/sh if which most >/dev/null 2>&1 ; then PAGER='most' elif which less >/dev/null 2>&1 ; then PAGER='less -r' elif which more >/dev/null 2>&1 ; then PAGER='more' else echo "No pager found!" exit 1 fi if [ -z "$2" ]; then # only one file highlight -A ${1} | eval $PAGER else # more files while [ ! -z "$1" ]; do highlight -A ${1} > /tmp/${1}.pager.ansi shift 1 done eval $PAGER /tmp/*.pager.ansi rm -f /tmp/*.pager.ansi fi
Offline
Jedna uwaga. Jak się chce wyświetlić plik, którego składni hightlight nie rozpozna, np. jakiś zwykły plik tekstowy to jest pusto w pagerze. Takie pliki mogło by puszczać bezpośrednio na pager.
Offline
Graffi napisał(-a):
a teraz naprawić mc żeby pod F4 był mcedit a nie vim?
bo mi się to zpsuło...
menu > opcje > konfiguracja > wewnętrzny edytor
czadman napisał(-a):
Jedna uwaga. Jak się chce wyświetlić plik, którego składni hightlight nie rozpozna, np. jakiś zwykły plik tekstowy to jest pusto w pagerze. Takie pliki mogło by puszczać bezpośrednio na pager.
opcja --force + przekierowanie stderr do null robi co trzeba :) (wcześniej jakoś mi umknął ten post)
#!/bin/sh if which most >/dev/null 2>&1 ; then PAGER='most' elif which less >/dev/null 2>&1 ; then PAGER='less -r' elif which more >/dev/null 2>&1 ; then PAGER='more' else echo "No pager found!" exit 1 fi if [ -z "$2" ]; then # only one file highlight --force -A ${1} 2>/dev/null | eval $PAGER else # more files while [ ! -z "$1" ]; do highlight --force -A ${1} > /tmp/${1}.pager.ansi 2>/dev/null shift 1 done eval $PAGER /tmp/*.pager.ansi rm -f /tmp/*.pager.ansi fi
PS. highlight -w listuje wzory kolorów, wie ktoś z jaką flagą trzeba potem takowy podać? -s wydaje się nie działać :/
pomyślałem jeszcze, że bardziej elegancko byłoby korzystać z globalnej zmiennej PAGER, tylko zamieniać less na less -r, ale to później zmienię
Ostatnio edytowany przez azhag (2008-11-20 00:24:44)
Offline
wersja (chyba) niemal finalna:
(...)
korzysta z globalnej zmiennej $PAGER, poprawiłem segregowanie plików przy większej ilości — będą wyświetlane w podanej kolejności (ograniczenie do stu plików, ale nikt przy zdrowych zmysłach nie powinien się nawet zbliżyć do tej granicy), nie będzie błędu jeśli poda się w nazwie katalog/
jedna rzecz tylko nie daje mi spokoju:
jak najłatwiej zamienić liczbę jednocyfrową w dwucyforwą (przez dostawienie zera na początku) lub wykonać działanie 01 + 1 tak, żeby otrzymać 02 (ale potem już 10, 11)? Na razie poradziłem sobie w ten sposób: [ $(printf $FOO | wc -m) -eq 1 ] && FOO=0${FOO} — jak widać jest dość brzydki
---
dopisek: dzięki milygesowi wiem jak ładniej zamienić liczbę
teraz chyba wszytko co potrzebne:
#!/bin/sh if [ -z $PAGER ]; then # $PAGER is empty, can't believe it, but it's true if which most >/dev/null 2>&1 ; then PAGER='most' elif which less >/dev/null 2>&1 ; then PAGER='less -r' elif which more >/dev/null 2>&1 ; then PAGER='more' else echo "No pager found!" && exit 1 fi elif [ ${PAGER} = 'less' ]; then # less need '-r' flag PAGER='less -r' fi if [ -z "$2" ]; then # only one file highlight --force -A ${1} 2>/dev/null | eval $PAGER else FOO=0 # more files while [ ! -z "$1" ]; do highlight --force -A ${1} > /tmp/pager_$(printf '%02d\n' ${FOO})-$(echo ${1} | tr '/' '_').ansi 2>/dev/null shift 1 FOO=$((FOO + 1)) done eval $PAGER /tmp/pageri_*.ansi rm -f /tmp/pager_*.ansi fi
Ostatnio edytowany przez azhag (2008-11-20 17:35:34)
Offline
printf %02d $FOO
(testowane w bashu, ale mysle ze w innych tez powinno dzialac)
Edit: troche sie spoznilem ...
Ostatnio edytowany przez bercik (2008-11-20 17:38:19)
Offline