Nushell 环境配置文件:自定义提示符和环境变量
这是一个 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')
原文地址: https://www.cveoy.top/t/topic/oamk 著作权归作者所有。请勿转载和采集!