目次 | Experiment |
Simulations非線形力学 |
---|
趣味です.ただの趣味.
人によっては全く興味がないと思うのですが,個人的にJupyter Notebookは見た目がださかったり,ちょっと使い勝手が悪いと思うことがあったのでカスタムの仕様と方法を貼っておきます.
備忘録兼,筆者のスクリーンショットを見て気になった人のためのページになります.
早速ですが,Jupyter Notebookって背景真っ白でちょっとださいし,何より目が疲れますよね.
なので,ここではそんなJupyterの見た目をおしゃれに,目に優しくしていきます.時代はSDGsです.
こんな感じになりました.色なんかは各自である程度好きに変える事ができます.
conda install -c conda-forge jupyter_contrib_nbextensions
で,まずはJupyterの拡張機能をいじるためのnbextensionを追加します.
condaコマンドなことに注意です.
これで,色々といじれるようになります.
上手くいくと,Jupyter notebookのHomeを開くと
のように,Nbextensions
タブが作成されます.
jupyterの見た目を良い感じにしてくれるカラーテンプレートをいれます.
conda install -c conda-forge jupyterthemes
これでいれるのは完了です.選べるカラーテーマの一覧は
jt -l
で表示できます.
選ぶ際には,
jt -t chesterish
などとします.更に,他にも細かい設定を加えることができますので,自分は
jt -t chesterish -T -cellw 90% -f roboto -fs 9 -tf merriserif -tfs 11 -nf ptsans -nfs 11 -dfs 8 -ofs 8
としています.お好みで色々調べてみてください.
筆者はvimmerです.Emacsなんてものを使う変人もいるようですが,vimの方が圧倒的に便利です.chromeの拡張機能なんかにもvimをいれているのですが,これがないと作業なんてできたものじゃないので必須です.
jupyter notebookでも,操作をいちいちマウス触らずに,しかもホームポジションから手を動かさずに行いたいので,拡張でvim key-bindをいれます.
jupyter --data-dir
で,jupyterが入っている場所を特定します.表示されたパスを使って
mkdir -p $(jupyter --data-dir)/nbextensions
cd $(jupyter --data-dir)/nbextensions
git clone https://github.com/lambdalisue/jupyter-vim-binding vim_binding
jupyter nbextension enable vim_binding/vim_binding
を続けて実行します.これで,Jupyterでvimのkey-bindが使えるようになりました!万歳.
このままでも結構便利になっている(たとえばhjklでの移動)のですが,モード切り替えのためにEscを押さないといけないのは面倒です.せめてそれくらいはカスタムしておきたい.ということで,
~/.jupyter/custom/custom.js
を編集しました.
コードは
// Configure CodeMirror Keymap
require([
'nbextensions/vim_binding/vim_binding', // depends your installation
], function() {
CodeMirror.Vim.map("jj", "<Esc>", "insert"); // jj setting!
});
// Configure Jupyter Keymap
require([
'nbextensions/vim_binding/vim_binding',
'base/js/namespace',
], function(vim_binding, ns) {
// Add post callback
vim_binding.on_ready_callbacks.push(function(){
var km = ns.keyboard_manager;
// Allow Ctrl-2 to change the cell mode into Markdown in Vim normal mode
km.edit_shortcuts.add_shortcut('ctrl-2', 'vim-binding:change-cell-to-markdown', true);
// Update Help
km.edit_shortcuts.events.trigger('rebuild.QuickHelp');
});
});
にまとめました.これによって,とりあえずjjでの挿入モード抜け出しを可能とし,あとはセルのマークダウンとコードモード変更をCtr-2で変更できるようにしました.
しかし,vimキーバインド有効にしてしまうと,選択中のセルが白くハイライトされることになってしまい,とても見にくくなります.
なので改めて,ハイライト時の色を設定する必要があります.
~/.jupyter/custom/custom.css
を調整していきます.
div.cell.edit_mode {
という行を見つけ,その直前に下記をいれます.
/* Jupyter cell is in normal mode when code mirror */
.edit_mode .cell.selected .CodeMirror-focused.cm-fat-cursor {
background-color: #000000 !important;
}
/* Jupyter cell is in insert mode when code mirror */
.edit_mode .cell.selected .CodeMirror-focused:not(.cm-fat-cursor) {
background-color: #000000 !important;
}
これで,ハイライトされたセルの色が白く塗りつぶされないようになりました.闇のvim環境の完成です.
その他にも導入している機能です.Nbextensions
タブからOn/Offを切り替えることが出来ます.
(まとめながら他にも便利なの見つけて導入しているので一貫性がないです)
この画面で,チェックマークを入れているものが有効化されている機能です.先程コードベースで有効化したVIM bindingにもチェックが入っていますね.
Collapsible headings は,マークダウンを使ってメモやタイトルを入れている人にとっては嬉しくなる機能で,マークダウンの#ごとにセルを折りたたむことが出来るようになります.
うれしい
楽しそうな名前.これはコードの自動補完です.
エラーメッセージをみじかく畳みます.
もちろん,ちゃんと見たい際にはプルダウンから
見れます.
Jupyter notebookのHomeでファイルを検索できます.
これ,地味に嫌だったのでとても助かる.
コードのフォントサイズを変更するボタンを追加します.
虫眼鏡で調整します.
プロジェクタとかに写すとき助かる.あと眼鏡忘れてきたときとか.
頻出のコードをスニペットとして登録しておき,引っ張ってくることが出来ます.デフォルトで色々ありますが,自前のを定義することも可能です.
たとえば
をクリックすると(これまた僕の環境と色が...面倒な...)
こうやっていれてくれます.
コードを折りたたむ機能です.
こういうfor文が...
こうやって折りたためます.
各セルの実行時間を出してくれます.コードの速さを追及したい時なんかに便利になります.あとついでに,最後に実行されたのがいつだったかも記録してくれるのでversion管理とかにも役立ちます.
目次を作成してくれます.
ここを押すと...
このように,マークダウンから目次を引っ張ってきてくれます.なんか僕のだと位置が被っちゃってイラつきますが,調整自体はできるはずです.
設定次第で,1版最初のセルに自動で目次を作るといった事もできます.
あまりに便利.変数一覧をだしてくれます.
メニューバーの目次の隣のひし形のマークを押すとでます.型やサイズなども見れるのでとても重宝します.
【シミュレーション】