この記事は Qiita に 2018/08/15 に投稿したものです。2020/3/26 移行しました。
Julia v1.0 への移行作業のために v0.7 と v1.0 を行ったり来たりしているのですが、色々と動作確認しているうちにどっちのバージョンを使っているのか失念することが度々あったため下図のようにプロンプトにバージョン番号を入れてみました。
今回はこのようなプロンプトの変更方法を紹介します。
目次
環境
$ julia -e "using InteractiveUtils; versioninfo()" Julia Version 1.0.0 Commit 5d4eaca0c9 (2018-08-08 20:58 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) CPU: Intel(R) Core(TM) i5-4460T CPU @ 1.90GHz WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-6.0.0 (ORCJIT, haswell) Environment: JULIA_SHELL = /bin/bash JULIA_EDITOR = nvim
本文とは関係ありませんが、 Julia v1.0 より versioninfo
は InteractiveUtils
に移ったのでスクリプト中に versioninfo
を入れる時は using InteractiveUtils
するのをお忘れなきよう。これを知らなかったせいで AppVeyor で幾度となくエラー吐かれました。
REPLを使う時は勝手に import されるので気にする必要はありません。
OhMyREPL
プロンプトを変える一番簡単な方法は OhMyREPL.jl を使うことでしょう。
using Pkg Pkg.add("OhMyREPL")
startup.jl
に下記を追加
using OhMyREPL OhMyREPL.input_prompt!("I love Julia>", :magenta)
OhMyREPL を使わない方法
OhMyREPL 使う方法は簡単ですが、若干 Julia の起動が遅くなるのでプロンプトを変えたいだけの人は startup.jl
に下記を追加すると良いでしょう。
こちらの場合だと Shell mode と help mode も変更できます。
import REPL atreplinit() do repl if !isdefined(repl, :interface) repl.interface = REPL.setup_interface(repl) end # prompt Base.active_repl.interface.modes[1].prompt = "julia-$(VERSION)> " Base.active_repl.interface.modes[1].prompt_prefix = get(Base.text_colors, :cyan, "\e[32m") # shell mode Base.active_repl.interface.modes[2].prompt = string(split(ENV["JULIA_SHELL"], '/')[end], "> ") Base.active_repl.interface.modes[2].prompt_prefix = get(Base.text_colors, :reverse, "\e[31m") # help mode Base.active_repl.interface.modes[3].prompt = "help???> " Base.active_repl.interface.modes[3].prompt_prefix = get(Base.text_colors, :red, "\e[33m") end
package mode もこの調子で変更できると思ったのですが、startup.jl
中に書くとエラーが出てうまく行きませんでした。Julia 起動後に直接打つと変わるんですけど。対処方法は私にはわかりません。
Base.active_repl.interface.modes[6].prompt = () -> "(pkg mode)> " Base.active_repl.interface.modes[6].prompt_prefix = get(Base.text_colors, :light_magenta, "\e[34m")
注意
上記のいずれの方法を使った場合でも、パッケージの install や build をすると下記のようなエラーが出ることがあるので注意。
┌ Error: Error building `GR`: │ ERROR: LoadError: ArgumentError: Package REPL not found in current path: │ - Run `Pkg.add("REPL")` to install the REPL package.
現状の回避策は julia --startup-file=no
で Julia を起動すること。Julia v1.0.1 では修正される模様。
参考
- Julia の Slack 中での Kristoffer Carlsson さんのコメント
- Error with Pkg with using statement in startup.jl