Клавиши Home и клавиши End в gnuplot интерактивном терминале не перемещают курсор

Отредактируйте или создайте (если не существующий) /etc/screenrc или (~/.screenrc) и добавьте ниже кода

autodetach on 
startup_message off 
hardstatus alwayslastline 
shelltitle 'bash'

hardstatus string '%{gk}[%{wk}%?%-Lw%?%{=b kR}(%{W}%n*%f %t%?(%u)%?%{=b kR})%{= w}%?%+Lw%?%? %{g}][%{d}%l%{g}][ %{= w}%Y/%m/%d %0C:%s%a%{g} ]%{W}'

shelltitle 'bash' может быть изменен, после того как экран создается. (Ctrla + A), имя сессии может измениться на SESSSIONNAME с :sessionname SESSIONNAME.

2
06.08.2014, 01:31
4 ответа

Это частичный ответ, относительно перемещения к началу и концу строки. См. help line-редактирование , для получения правильных ярлыков в гнуплот. Таким образом, используйте CtrlA для перехода к началу и CtrlE концу линии.

 `Линейное редактирование`:
 ^B перемещает назад один символ.
 ^F перемещает вперед один символ.
 ^A перемещается в начало строки.
 ^E перемещается в конец строки.
 ^H и DEL удаляют предыдущий символ.
 ^D удаляет текущий символ.
 ^K удаляется из текущей позиции в конец строки.
 ^L,^R перерисовывает строку на случай, если она будет разбита.
 ^U удаляет всю строку.
 ^W удаляет из текущего слова в конец строки.

Я не могу объяснить, почему она показывает то, что показывает в вашем случае, однако на странице, на которую делается ссылка, написано (это сообщение, кажется, зависит от версии)

(Функция чтения строки в gnuplot не то же самое, что и строка для чтения, используемая в GNU Bash и GNU Emacs. Если версия GNU желательна, ее можно выбрать вместо gnuplot версии во время компиляции)

1
27.01.2020, 21:57

Существует проблема лицензирования между GNU и Ubuntu / Debian в отношении библиотеки для чтения. С этим исправлением можно компилировать GNUPLOT от источника и использовать следующие ключи: Home, End, Ctrl + Arrow-левый, Ctrl + Arrow - вправо

Это не создает ОА, 1; 5D или 1 ; 3D или что-то еще.

./configure --with-readline=/lib/x86_64-linux-gnu/libreadline.so.6
make
make install

Сторона замечания:

./configure --with-readline=gnu

не работал для меня.

2
27.01.2020, 21:57

У меня это сработало, но только после установки readline-devel :

./configure --with-readline=gnu
make
make install

Вы можете проверить с помощью ldd , что правильная библиотека readline связана.

1
27.01.2020, 21:57

gnuplot не является проектом GNU, хотя он разрабатывался под этим именем с 1986 , оглядываясь назад, вскоре после GNU манифест (1985). Настоящий проект GNU начался где-то в ту эпоху (я видел разные даты для этого).

Не являясь проектом GNU, у него нет причин использовать лицензию GNU. В самом деле, уведомление об авторских правах разрешает, но с некоторыми ограничениями относительно модификаций и контактной информации:

 Permission to modify the software is granted, but not the right to
 distribute the complete modified source code.  Modifications are to be
 distributed as patches to the released version.  Permission to distribute
 binaries produced by compiling modified sources is granted, provided you
   1. distribute the corresponding source modifications from the released
      version in the form of a patch file along with the binaries,
   2. add special version identification to distinguish your version in
      addition to the base release version number,
   3. provide your name and address as the primary contact for the support
      of your modified version, and
   4. retain our contact information in regard to use of the base software.
 Permission to distribute the released version of the source code along
 with corresponding source modifications in the form of a patch file is
 granted with same provisions 2 through 4 for binary distributions.

GPL запрещает любые ограничения (помимо собственных, которые включают интерпретацию динамических ссылок постфактум), поэтому не разрешается распространять исполняемый файл для gnuplot, используя readline (в настоящее время GPLv3).

Проблема не является специфической для Debian и его производных, таких как Ubuntu, но Debian более осторожен в лицензировании, чем некоторые другие организации. Файл README.Debian для заметок gnuplot

Yes, the built in readline of gnuplot is bad. However, libreadline
cannot be used instead because it is licensed under the GPL, whereas
gnuplot has special licenses (patches only). Distribution of those
programs linked together is legally impossible but you may rebuild
your own custom package with readline. Please don't file bugs telling   
me to use libreadline in gnuplot...

Debian связывает gnuplot с libedit, описанным на странице Джеймса Биглера как

libedit является заменой или альтернативой редактированию командной строки GNU readline функциональность. libedit выпускается под лицензией в стиле BSD, поэтому вы можете использовать его в своем проприетарном коде.

Для простых вещей, таких как заданный в вопросе, libedit достаточно способна. Но он читает из другого файла конфигурации, чем из readline ( ~ / .editrc , а не .inputrc ).Соответствующие справочные страницы могут помочь (у вас может быть установлен пакет libedit-dev ):

Непосредственной проблемой для OP было то, что ключи home / end не были распознаны. libedit пытается получить соответствующую информацию из базы данных терминала (как и строка чтения), но некоторые двойники xterm не соответствуют функциональным клавишам xterm, и в любом случае строка чтения не понимает, что около половины описаний терминалов используют настройки клавиатуры приложения (в половине случаев ошибаясь).

Вместо того, чтобы улучшать библиотеки, люди стали поддерживать вещи, вставляя настройки в свой файл .inputrc . С libedit вы можете начать все сначала с помощью файла .editrc .

Дополнительная литература:

1
27.01.2020, 21:57

Теги

Похожие вопросы