As teclas Home e End em um terminal interativo do gnuplot não movem o cursor

2

Ao trabalhar interativamente com o gnuplot, as teclas home e end não movem o cursor para o início e o fim de uma linha, mas produzem os caracteres "OH" e "OF", respectivamente. Qual é a razão para isso, e como posso fazer com que o cursor se mova para o início e o fim de um comando?

    
por akid 05.08.2014 / 16:46

4 respostas

1

Esta é uma resposta parcial, relativa à mudança para o início e o fim de uma linha. Consulte ajuda na edição de linha , para os atalhos corretos no gnuplot. Portanto, use Ctrl A para mover para o início e Ctrl E no final da linha.

      'Line-editing':
       ^B    moves back a single character.
       ^F    moves forward a single character.
       ^A    moves to the beginning of the line.
       ^E    moves to the end of the line.
       ^H    and DEL delete the previous character.
       ^D    deletes the current character.
       ^K    deletes from current position to the end of line.
       ^L,^R redraws line in case it gets trashed.
       ^U    deletes the entire line.
       ^W    deletes from the current word to the end of line.

Não consigo explicar por que mostra o que mostra no seu caso, no entanto, a página vinculada diz (esta mensagem parece ser dependente da versão)

(The readline function in gnuplot is not the same as the readline used in GNU Bash and GNU Emacs. If the GNU version is desired, it may be selected instead of the gnuplot version at compile time.)

    
por 05.08.2014 / 17:00
2

Existe um problema de licenciamento entre o GNU e o Ubuntu / Debian em relação à biblioteca readline. Com essa correção, é possível compilar o gnuplot a partir do código-fonte e usar as seguintes chaves: HOME, END, CTRL + Seta para a Esquerda, CTRL + Seta para a Direita

Isso não cria OH, OF, 1; 5D ou 1; 3D ou qualquer outra coisa.

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

Observação lateral:

./configure --with-readline=gnu

não funcionou para mim.

    
por 28.03.2015 / 04:06
1

Isso funcionou para mim, mas somente depois de instalar readline-devel :

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

Você pode verificar com ldd que a biblioteca readline apropriada está vinculada.

    
por 22.07.2015 / 16:49
1

O gnuplot não é um projeto GNU, embora esteja em desenvolvimento com esse nome desde 1986 , em retrospecto não muito tempo depois do manifesto GNU (1985). O verdadeiro projeto GNU começou em algum momento daquela época (eu vi uma variedade de datas para isso).

Não sendo um projeto GNU, não há razão para usar uma licença GNU. De fato, o aviso de direitos autorais é permissivo, mas com algumas restrições em relação a modificações e informações de contato:

 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.

A GPL proíbe quaisquer restrições (além das suas próprias, que incluem a interpretação de ligação dinâmica após o fato), portanto, não é permitido distribuir um executável para o gnuplot usando readline (atualmente GPLv3).

O problema não é específico do Debian e seus derivados, como o Ubuntu, mas o Debian é mais cuidadoso com o licenciamento do que algumas outras organizações. O arquivo README.Debian para notas do 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...

Links Debian gnuplot com libedit, descritos na página de James Bigler como

libedit is a replacement or alternative to the GNU readline commandline editing functionality. libedit is released under a BSD style licence, so you can use it in your proprietary code.

Para coisas simples como as feitas na pergunta, o libedit é capaz o suficiente. Mas ele lê a partir de um arquivo de configuração diferente do que readline ( ~/.editrc em vez de .inputrc ). As páginas de manual relevantes ajudariam (você pode ter o pacote libedit-dev instalado):

O problema imediato para o OP era que as chaves home / end não eram reconhecidas. O libedit tenta obter as informações relevantes do banco de dados do terminal (como o readline), mas algumas semelhanças do xterm não correspondem às teclas de função do xterm e, em qualquer caso, readline não entende que cerca de metade das descrições configurações do teclado do aplicativo (errando na metade do tempo).

Em vez de melhorar as bibliotecas, as pessoas decidiram adotar as coisas colando as configurações no arquivo .inputrc . Com o libedit, você pode começar tudo de novo, com o arquivo .editrc .

Leitura adicional:

por 25.11.2016 / 15:00