Good UX Life

人生のUXを高めるための知見

Nushellのソースコードを軽く読んだまとめ

Nushellのソースコードを読んだので少しだけまとめます。

実行時引数

➜ nu -help
nushell 0.5.0

USAGE:
    nu [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
        --debug <debug>...        
        --develop <develop>...    
    -l, --loglevel <LEVEL>         [possible values: error, warn, info, debug, trace]

-hでhelp表示、-Vでバージョン表示。オプションとして--developと-loglevelと--debugがありますね。(なぜかVSCodeのターミナルに設定するときは--loglevelがrequiredされてた。)

指定がない場合はWarnが設定され、nu本体が実行されます。

コマンド一覧

コマンド一覧はhelp commandsで確認することができます。

個々の説明はhelp rmといった感じで見ることができます。

history fuzzy search

Ctrl-rで履歴を表示することができます。Enterで実行、tabで編集

Configファイル

configファイルはmacOSでは$HOME/Library/Application Support/nu/config.tomlにあります。他のOSでは分かりませんが、env | get configでconfig.tomlのパスを調べることができます。 path = ["hoge/huga", "huga/hoge"]という形式でPathを設定することができます。 envも設定できるが、tomlの書き方がわからない。。テーブルと配列で書いてみたけどクラッシュした。 ちなみに下記のコマンドで直接パスを追加することもできます。

> echo $nu:path | prepend "/my/new/directory" | config --set_into path

> echo $nu:env | insert GREETING hello_world | config --set_into envでenvに追加できると紹介されているが、insertコマンドがないと怒られてしまう。。 www.jonathanturner.org

いろいろ

プロンプトフォーマット

プロンプトは以下のフォーマットで表示される。 /Users/hoge(master)>といった形ですね。

let prompt = &format!(
            "{}{}> ",
            cwd,
            match current_branch() {
                Some(s) => format!("({})", s),
                None => "".to_string(),
            }
        );

また読んだら追記します。