понедельник, 29 марта 2010 г.

Автодополнение в интерактивном Gnuplot с помощью rlwrap

В очень удобной программе построения графиков Gnuplot не работает автодополнение. По крайней мере, в сборке Debian Lenny.

> gnuplot --version
gnuplot 4.2 patchlevel 2

Очень непросто набивать полные названия файлов в интерактивном режиме без дополнения по TAB. Конечно, их можно копировать из вывода !ls с помощью мыши, но это весьма неудобно. Судя по всему, причина лежит в том, что gnuplot собран без поддержки readline.

Поскольку из сорцов пересобирать gnuplot не хотелось, надо было найти альтернативный путь. Оказалось, что существует такая замечательная программа rlwrap, которая позволяет связать readline с программами, в которой нет поддержки readline. Таким образом, программы, в которых не реализованы функции автодополнения, истории команд и т.п., начинают обладать таким функционалом.

Устанавливается эта прога в Debian стандартно:

> sudo aptitude install rlwrap

Запуск осуществляется, как следует из мана, таким образом:

> rlwrap [options] command

В нашем случае command есть gnuplot.

Если взглянуть на man-страницу, то следует обратить внимание на опцию -a, —always-readline. Что она делает более или менее ясно из её названия. Значит, будет использоваться readline независимо от настроек command. Для обеспечения автодополнения имён файлов есть опция -c, —complete-filenames.

Таким образом, запустив gnuplot следующим образом:

> rlwrap -a -c gnuplot
получим gnuplot с автодополнением.

Чтобы каждый раз не писать такую команду, имеет смысл сделать алиас, например, записав в файл ~/.bash_aliases:

alias gnuplot='rlwrap -a -c gnuplot'

Также rlwrap позволяет менять размер истории (см. опцию -s, —histsize), исключать из истории дубликаты (см. опцию -D, —history-no-dupes).

Описанное решение нашёл здесь, за что автору большое спасибо!

Копируете статью - поставьте ссылку на оригинал!

Комментариев нет:

Отправить комментарий