Files
dotfiles/fish/add-on.fish
FlintyLemming dc31dbd935 add fish config
2026-01-20 16:18:11 +08:00

141 lines
3.5 KiB
Fish
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 兼容性添加 PATH
if functions -q fish_add_path
fish_add_path ~/.flinty/bin
else
# 针对 Fish < 3.2.0 的版本
if not contains "$HOME/.flinty/bin" $PATH
set -gx PATH "$HOME/.flinty/bin" $PATH
end
end
set -gx LANG C.UTF-8
set -gx LC_ALL C.UTF-8
set -gx EDITOR nano
# 禁用 Fish 默认欢迎语
set -g fish_greeting ""
function fish_greeting
echo ""
# 1. 顶部欢迎与 UTC-8 时间
set_color -o cyan
echo "Welcome back, $USER"
# 在 TZ 环境变量中GMT+8 指向西八区 (UTC-8)
set -l current_time (env TZ="GMT-8" date "+%Y-%m-%d %H:%M:%S")
echo "Time (UTC-8): $current_time"
set_color normal
echo ""
# 3. 包管理器逻辑 (优先检查 oma)
set -l pm_name ""
if type -q oma
set pm_name (set_color -o green)"oma"(set_color normal)
else
# 回退到系统默认包管理器
if type -q brew
set pm_name "Homebrew"
else if type -q apt
set pm_name "apt"
else if type -q pacman
set pm_name "pacman"
else if type -q dnf
set pm_name "dnf"
else
set pm_name "Default PM"
end
end
echo "Package Manager: $pm_name"
echo ""
end
## 替换 ls 默认行为
function ls --description 'alias ls to eza if possible'
# 1. 优先使用系统安装的 eza (PATH 里的)
if type -q eza
eza -la --icons $argv
return
end
# 2. 如果系统没有,尝试根据架构寻找 ~/.flinty/bin 下的二进制文件
set -l arch (uname -m)
set -l target_bin ""
set -l bin_path "$HOME/.flinty/bin"
switch $arch
case x86_64
# 如果是 Alpine Linux通常需要用 musl 版本 (根据你提供的文件名)
if test -f /etc/alpine-release
set target_bin "eza_x86_64-unknown-linux-musl"
else
set target_bin "eza_x86_64-unknown-linux-gnu"
end
case aarch64 arm64
set target_bin "eza_aarch64-unknown-linux-gnu"
end
set -l custom_eza "$bin_path/$target_bin"
# 3. 检查文件是否存在且可执行
if test -n "$target_bin"; and test -x "$custom_eza"
$custom_eza -la --icons $argv
return
end
# 4. 既没有系统 eza 也没有本地二进制,回退到 command ls
command ls -la $argv
end
## 按修改时间排序列出文件
function lt --description 'ls sorted by time'
ls --sort=modified $argv
end
## 更新配置
function dotu
set -l current_dir (pwd)
cd $HOME/.flinty
if git pull
source ~/.config/fish/config.fish
echo "Config reloaded successfully!"
end
# 回到原位
cd $current_dir
end
## 修复光标消失
function restore_cursor --on-event fish_postexec
tput cnorm
end
function portcheck
# 设置起始端口,如果没有传入参数则默认为 8840
set -l port 8840
if test (count $argv) -gt 0
set port $argv[1]
end
# 循环检查端口是否被占用
# -t: TCP, -u: UDP, -l: Listening, -n: Numeric
while ss -tuln | grep -q ":$port "
set port (math $port + 1)
end
echo $port
end
function y
set -l tmp (mktemp -t "yazi-cwd.XXXXXX")
yazi $argv --cwd-file="$tmp"
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
builtin cd -- "$cwd"
end
rm -f -- "$tmp"
end
abbr -a port 'sudo ss -tulnp | grep'
abbr -a process 'ps aux | grep'
alias fastfetch="fastfetch --color-keys blue"