Files
dotfiles/fish/add-on.fish
FlintyLemming cd95a21c87 add fish config
2025-12-19 14:13:57 +08:00

80 lines
2.1 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.
## 替换 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 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
# 自动化 Locale 修复逻辑 修复例如 nano 无法输入中文的问题
# 1. 如果 locale 命令执行报错
# 2. 或者 (LC_ALL 为空 并且 LANG 以 C 开头)
if not locale >/dev/null 2>&1
or begin
test -z "$LC_ALL"
and string match -qi "C*" "$LANG"
end
# 开始修复
if locale -a | string match -qi "C.utf8"
set -gx LANG C.UTF-8
set -gx LC_ALL C.UTF-8
else if locale -a | string match -qi "en_US.utf8"
set -gx LANG en_US.UTF-8
set -gx LC_ALL en_US.UTF-8
end
# 清理非法的 LC_CTYPE
set -e LC_CTYPE
end
abbr -a port 'sudo ss -tulnp | grep'
abbr -a process 'ps aux | grep'