历史记录在gnuplot中自动完成

时间:2013-05-11 00:27:00

标签: autocomplete gnuplot readline

在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(http://www.bigsmoke.us/readline/shortcuts)并完成命令

gnuplot> set style data lines

然后我可以将lines更改为points

如何进行自动完成?

2 个答案:

答案 0 :(得分:4)

部分解决方案确实是使用readline支持编译gnuplot。您提到这是评论中的最后一个选项,但我认为如果您不想自己编写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非常有用)对我不起作用。希望这有助于尽管这可能只是你的部分解决方案。

答案 1 :(得分:1)

您可以使用rlwrap来获取此功能(使用 CTRL + R 进行历史记录搜索,文件名和关键字完成),而无需编译任何内容。如果您使用Ubuntu,请通过运行

universe 存储库安装它
sudo apt-get install rlwrap

使用以下命令运行gnuplot:

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

其中-a -N覆盖gnuplot内置readline支持,-c为您提供文件名完成,-b \'可让您完成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的历史会像这样存储)。