Тут я попытаюсь собрать конвертеры текстовых документов, для возможности просмотра во встроенном редакторе FAR Manager.
Примечания:
в качестве вспомогательных утилит я использовал пакет UnxUtils. (не обязательно его устанавливать полностью, достаточно будет надергать нужные программки)
утилита fmt.exe – из пакета UnxUtils используется лишь для того чтоб выровнять текст по ширине редактора (для вьювера не нужна).
"магическое" число 140 - ширина редактора ФАРа в символах: изменить значение под себя или воспользоваться
Тут приводятся примеры командных строк: by wolf (используя штатные средства): far:view < %comspec% /v /q /c "for /f "skip=4 tokens=2" %a in ('mode con') do 1>nul set /a width=%a-1 & zd2t.exe /ZN /n1 /zw /wC /r!!width!! "!\!.!" & exit "
by HaRT (используя gawk из пакета UnxUtils): для русской локали: far:view < for /f %W in ('"mode con | gawk /Столбцы:/{print($2-1)}"') do @zd2t.exe /ZN /n0 /zw /wC /r%W "!\!.!" для английской локали: far:view < for /f %W in ('"mode con | gawk /Columns:/{print($2-1)}"') do @zd2t.exe /ZN /n0 /zw /wC /r%W "!\!.!"
by MDM (используя sed из пакета UnxUtils):(не учитывается возможная полоса прокрутки) far:view < for /f "tokens=*" %i in ('mode con ^| sed -n "5 s/\(.* \)\([0-9]*$\)/\2/p"') do @zd2t.exe /ZN /n0 /zw /wC /r%i "!\!.!"
Настройки приведены такие чтоб на выходе получать кодировку 1251(win). Те утилиты, что поддерживают юникод, конечно можно настроить на вывод UTF-8. Но мне попадаются такие файлы где кириллица записана не в юникодном формате, а в кодировке 1251 и поэтому на выходе получаю нечитабельный текст.
Те утилиты, которые в настройках отмечены значком , используются мною повседневно. Отметил для того, чтоб людям было легче сделать выбор из этой кучи... м-м-м... программ.
Всё протестировано на такой конфигурации: WinXPsp3 x32 FAR 2.0. Vista, Семерка и их 64-битные версии не проверялись.
Дык с самого начала добавил. Даже 2 штуки (GetText 2.3, GetTextIFilter 0.0.1.24023 alpha). Лежат, правда, в остальном. И MS-овский fitdump дома лежит, не рассматривал его еще. ИМХО, и-фильтровские тулзы не очень удобны, так как текст распаковывается без форматирования.
А ссылку на FarWDS пожалуй можно добавить. Ведь добавил же HyperView, RTFView и подобные.
SlashNet wrote:И MS-овский fitdump дома лежит, не рассматривал его еще.
Его проблематично где-либо скачать.
Может, имеет смысл где-то выложить?
Кстати, насчёт http://unxutils.sourceforge.net: на сайте присутствуют ссылки на обновления некоторых утилит. Но ссылки битые, видимо файлы поудалялись при очередной реорганизации sourceforge.net.
Лично у меня обновления сохранились.
John Doe wrote:Кстати, насчёт http://unxutils.sourceforge.net: на сайте присутствуют ссылки на обновления некоторых утилит. Но ссылки битые, видимо файлы поудалялись при очередной реорганизации sourceforge.net.
Лично у меня обновления сохранились.
К сожалению, те обновления датированы 2003-им годом.
:: Win Batch version by mitry
@echo off
:: @(#) man - unix man emulator
:: Syntax:
:: man {[section] topic} | {manfile}
:: Requires:
:: * groff.exe and grotty.exe (see http://gnuwin32.sourceforge.net/packages/groff.htm)
:: * cmd.exe with extentions (tested with WinXP.sp1)
:: Limitation:
:: * Simplest command line syntax
:: * No search in multiple man dirs (ToDo:???)
::
setlocal enableextensions
setlocal
if "%1"=="" goto :usage
:: !!! For VIM Man script not supported options
for %%x in ( a c d D f F h k K t W ) do if %1 == -%%x shift /1
if not defined MANPATH set MANPATH=c:\usr\share\man
if not defined MANSECT set MANSECT=1 8 2 3 4 5 6 7 9 tcl n l p o
if not defined PAGER set PAGER=less -C
set GROFF_FONT_PATH=c:/usr/share/groff/font
set GROFF_TMAC_PATH=c:/usr/share/groff/tmac
set GROFF=groff -P -c -Tlatin1 -mandoc
::set LESS= --ignore-case --hilite-search --squeeze-blank-lines --CLEAR-SCREEN --no-init -z 60
set LESS=--ignore-case --hilite-search --squeeze-blank-lines --no-init --no-lessopen --underline-special --status --window=60
set LESSCHARSET=koi8-r
set COLUMNS=96
set PATH=%~dp0
::set LESS=++!"title %* - Man"
::title %* - Man
set PIPE=
set FINDSECT=
:: Show file (not dir) in the current dir if some exists
if exist %1 if not exist %1\nul call :show %1 %~x1
if not "%2"=="" call :dosect %1 %2
::::::::::::::::::::::::::::::::::::::::::::
:findsect
set FINDSECT=1
for %%S in (%MANSECT%) do call :dosect %%S %1
call :notfound %1
::::::::::::::::::::::::::::::::::::::::::::
:: dosect - Search secttion %1 for %2
:: %1 - section character
:: %2 - topic
:dosect
::echo Searching sect %1 for %2 >&2
for %%F in ( %MANPATH%\man%1\%2.* ) do call :show %%F %%~xF
if exist %MANPATH%\catman\cat%1\%2.%1.txt call :showTXT %MANPATH%\catman\cat%1\%2.%1.txt
if defined FINDSECT goto :EOF
call :notfound %2(%1)
::::::::::::::::::::::::::::::::::::::::::::
:: Subroutine show - filter file through groff utility
:: %1 - file to show
:: %2 - file extention
:show
if "%2"==".gz" set PIPE=gzip -dc
if "%2"==".bz2" set PIPE=bzip2 -dc
if defined PIPE goto :showpipe
:showfile
%GROFF% %1 2> nul | %PAGER% -
goto :finish
:showpipe
%PIPE% %1 | %GROFF% - 2> nul | %PAGER% -
goto :finish
::::::::::::::::::::::::::::::::::::::::::::
:: Subroutine show - filter file through groff utility
:: %1 - file to show
:showTXT
%PAGER% %1
goto :finish
::::::::::::::::::::::::::::::::::::::::::::
:: Subroutine usage - show usage info and exit
:usage
echo %~nx0 - search and display unix manual pages >&2
echo Usage: >&2
echo ^ %~n0 {[section] topic} ^| manfile >&2
exit 1
::::::::::::::::::::::::::::::::::::::::::::
:: Subroutine notfound - shoe error message and exit
:notfound
echo %~n0: No man page for %1 >&2
exit 3
:finish
exit 0
rem In .bashrc i have alias:
rem alias man='${COMSPEC//\\//} //c "c:\\usr\\bin\\man.cmd $*"'
Что интересно, Groff содержит в себе и Deroff и PolyglotMan, причём бинарники почему-то свежее чем в соответствующих самостоятельных пакетах.
http://lynx-win32-pata.sourceforge.jp/, как и десяток других подобных сайтов, поддерживает только морально-устаревшие версии 3-5-летней давности. соответственно, не может являться первоисточником.