2013-05-11 76 views
4

在gnuplot的,我键入历史自动完成在gnuplot的

gnuplot> set style data lines 

然后我跑几个其他线路:

gnuplot> plot "./data/traj1.dat" u 1:4, "" u 1:6, "" u 1:9, "" u 1:11, "" u 1:13, "" u 1:15 
gnuplot> plot "./data/traj2.dat" u 1:4, "" u 1:6, "" u 1:9, "" u 1:11, "" u 1:13, "" u 1:15 
gnuplot> plot "./data/traj3.dat" u 1:4, "" u 1:6, "" u 1:9, "" u 1:11, "" u 1:13, "" u 1:15 

现在我想改变风格。我开始与

gnuplot> set 

我想按例如CTRL-R(),并有命令完成,以

gnuplot> set style data lines 

然后我可以改变linespoints例如。

如何使此自动完成发生?

+0

您是否尝试过使用'--with-readline'选项为源代码创建gnuplot的配置脚本。在google上搜索readline和gnuplot以获取更多信息。 – psibar 2013-05-12 21:01:41

+0

@psib​​ar这将是我的最后一个选择。我更喜欢在Ubuntu上使用Ubuntu的包 – 2013-05-13 06:39:02

回答

4

部分解决方案的确是编译gnuplot和readline支持。你提到这是你评论中的最后一个选项,但我认为如果你不想自己编写一个gnuplot前端,这是你唯一的选择。也许这有助于知道从ubuntu源码编译gnuplot是非常容易的。我只是在< 10分钟内自己做了这个。只要(在你选择的目录)的命令

sudo apt-get purge gnuplot 
sudo apt-get build-dep gnuplot 
cd `mktemp -d` 
apt-get source gnuplot 
cd gnuplot* 
./configure --with-readline=gnu 
make 
sudo make install 

写的前几个字母将完成本单词后按Tab键运行,如果你按下Tab键两次,将打印的建议,你的列表从你的gnu-shell中知道它。不幸的是,并不是所有的readline功能似乎都适用于当前的gnuplot(我知道他们曾经做过)。例如。 Ctrl + r进行反向搜索(对gnuplot非常有用)对我不起作用。希望这可以帮助,虽然承认这可能只是你的一个部分解决方案。

+0

,最好使用'checkinstall',对吧? – 2013-05-15 21:12:27

+0

当然,如果你喜欢,你可以用'checkinstall'替换最后一个命令。 – highsciguy 2013-05-16 07:51:15

1

您可以使用rlwrap没有编译任何(与CTRL +[R,文件名和关键字自动完成历史搜索),以获得此功能。

sudo apt-get install rlwrap 

运行gnuplot的有:

rlwrap -a -N -c -b \' -D 2 -s 1000 gnuplot 

其中-a -N覆盖GNUPLOT内置的readline支持,-c为您提供了文件名后,-b \'如果你使用Ubuntu,通过运行宇宙仓库安装让您完成像plot 'incomp[TAB]lete',-D 2滴历史记录和-s 1000删除历史记录大小从默认300.

还是这行添加到你的启动脚本(即.bashrc.zshrc),所以你可以使用的gnuplot没有任何额外的打字:

alias gnuplot="rlwrap -a -N -c -b \' -D 2 -s 1000 gnuplot" 

而且,可以通过列出所有有关键字完成文件中的关键字$RLWRAP_HOME/gnuplot_completions。但是,使用rlwrap不可能完成上下文相关的完成。

您可能需要导出您的gnuplot的命令历史记录上rlwrap(这样你就不必从头开始),像这样:

tail -n +2 ~/.gnuplot_history | while read -r; do print $REPLY; done > $RLWRAP_HOME/gnuplot_history 

tail摆脱的gnuplot的头和print转换转义字符(我想知道为什么gnuplot的历史是这样存储的)。

+0

*另外,根据你的看法,内置的文件名完成比我目前看到的rlwrap的更好。*根据你的说法,rlwrap的文件名完成度怎么改进? (我是rlwrap的作者/维护者) – 2015-10-12 12:58:38

+0

@HansLub感谢您的回答,似乎rlwrap在处理文件名中的连字符时有问题,我刚刚提交了[github上的问题](https://github.com/hanslub42/rlwrap /问题/ 37)。当你写'plot'incompl [TAB]'时,它也不会完成文件名,也许是因为这会使它对上下文敏感,所以我没有将它包含在报告中,但它在gnuplot中是非常典型的用法,所以我认为这是值得一提的。 – arekolek 2015-10-13 11:40:05

+0

如需了解更多信息,请参阅[github上的问题](https://github.com/hanslub42/rlwrap/issues/37)。简短回答:使用'rlwrap'加上'--break-chars =“”'(或更短:'-b''')。这将使它认为空白作为破字,但不是'-'和'' – 2015-10-13 13:50:15