这是一个 Nushell 环境配置文件,用于自定义 Nushell 命令行界面的提示符和环境变量的转换方式。该文件包含了一些 Nushell 函数,用于定义左右提示符,并设置了环境变量的转换方式和用于搜索脚本和插件的目录。其中,左提示符显示当前工作目录,右提示符显示当前时间和最后一个退出代码。该文件还包含了一个示例,用于添加路径到 PATH 环境变量的方法。

# Nushell 环境配置文件
# version = 0.79.0

def create_left_prompt [] {
    mut home = ""
    try {
        if $nu.os-info.name == "windows" {
            $home = $env.USERPROFILE
        } else {
            $home = $env.HOME
        }
    }

    let dir = ([ 
        ($env.PWD | str substring 0..($home | str length) | str replace -s $home "~"),
        ($env.PWD | str substring ($home | str length)..)
    ] | str join)

    let path_segment = if (is-admin) {
        $'(ansi red_bold)($dir)'
    } else {
        $'(ansi green_bold)($dir)'
    }

    $path_segment
}

def create_right_prompt [] {
    let time_segment = ([ 
        (ansi reset)
        (ansi magenta)
        (date now | date format '%m/%d/%Y %r')
    ] | str join)

    let last_exit_code = if ($env.LAST_EXIT_CODE != 0) {([ 
        (ansi rb)
        ($env.LAST_EXIT_CODE)
    ] | str join)
    } else { ""
    }

    ([$last_exit_code, (char space), $time_segment] | str join)
}

# 使用 Nushell 函数定义左右提示符
let-env PROMPT_COMMAND = {|| create_left_prompt }
let-env PROMPT_COMMAND_RIGHT = {|| create_right_prompt }

# 提示符指示器是表示提示符状态的环境变量
let-env PROMPT_INDICATOR = {|| "> " }
let-env PROMPT_INDICATOR_VI_INSERT = {|| ": " }
let-env PROMPT_INDICATOR_VI_NORMAL = {|| "> " }
let-env PROMPT_MULTILINE_INDICATOR = {|| "::: " }

# 指定环境变量如何:
# - 在 Nushell 启动时从字符串转换为值 (from_string)
# - 在运行外部命令时从值转换回字符串 (to_string)
# 注意: 转换发生在 config.nu 加载之后
let-env ENV_CONVERSIONS = {
  "PATH": {
    from_string: { |s| $s | split row (char esep) | path expand -n }
    to_string: { |v| $v | path expand -n | str join (char esep) }
  }
  "Path": {
    from_string: { |s| $s | split row (char esep) | path expand -n }
    to_string: { |v| $v | path expand -n | str join (char esep) }
  }
}

# 当调用 source 或 use 时要搜索脚本的目录
# 
# 默认情况下,添加 <nushell-config-dir>/scripts
let-env NU_LIB_DIRS = [
    ($nu.default-config-dir | path join 'scripts')
]

# 当调用 register 时要搜索插件二进制文件的目录
# 
# 默认情况下,添加 <nushell-config-dir>/plugins
let-env NU_PLUGIN_DIRS = [
    ($nu.default-config-dir | path join 'plugins')
]

# 要将条目添加到 PATH(在 Windows 上你可能会使用 Path),可以使用以下模式:
# let-env PATH = ($env.PATH | split row (char esep) | prepend '/some/path')
Nushell 环境配置文件:自定义提示符和环境变量

原文地址: https://www.cveoy.top/t/topic/oamk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录