Fish Shell abbr命令详细参考
基本语法
abbr [OPTIONS] WORD EXPANSION
abbr [OPTIONS] --add WORD EXPANSION
abbr [OPTIONS] --erase WORD
abbr [OPTIONS] --list
abbr [OPTIONS] --show
所有参数详解
基本操作参数
-a, --add WORD EXPANSION
- 作用: 添加新的缩写
- 示例:
abbr -a ll "ls -la"
- 说明: 创建一个名为
ll
的缩写,展开为ls -la
-e, --erase WORD
- 作用: 删除指定的缩写
- 示例:
abbr -e ll
- 说明: 删除名为
ll
的缩写
-l, --list
- 作用: 列出所有已定义的缩写名称
- 示例:
abbr -l
- 输出: 显示所有缩写的名称列表
-s, --show
- 作用: 显示所有缩写及其完整定义
- 示例:
abbr -s
- 输出: 显示格式为
abbr -a name expansion
的完整列表
作用域参数
-g, --global
- 作用: 设置全局缩写(所有会话共享)
- 示例:
abbr -g -a gst "git status"
- 说明: 创建的缩写在所有fish会话中都可用
- 默认行为: 如果不指定作用域,默认为全局
-U, --universal
- 作用: 设置通用缩写(跨所有fish实例持久化)
- 示例:
abbr -U -a gc "git commit"
- 说明: 缩写会被保存并在所有fish实例中同步
位置参数
-p, --position anywhere|command
- 作用: 指定缩写的触发位置
- 选项:
command
: 仅在命令位置触发(默认)anywhere
: 在任意位置都可以触发
- 示例:
abbr -a -p command gc "git commit"
(只在命令开头触发)abbr -a -p anywhere teh "the"
(在任意位置触发)
类型参数
-r, --regex
- 作用: 使用正则表达式模式匹配
- 示例:
abbr -a -r "gc[0-9]+" "git checkout"
- 说明: 支持正则表达式匹配,如
gc1
,gc2
,gc123
等都会触发
-f, --function FUNCTION
- 作用: 使用函数来生成缩写展开
- 示例:
abbr -a -f myfunction myabbr
- 说明: 当触发缩写时,调用指定函数来生成展开内容
查询参数
-q, --query WORD
- 作用: 查询指定缩写是否存在
- 示例:
abbr -q ll
- 说明: 如果缩写存在返回0,不存在返回1(可用于脚本判断)
帮助参数
-h, --help
- 作用: 显示帮助信息
- 示例:
abbr -h
实用示例
基本使用
# 添加简单缩写
abbr -a ll "ls -la"
abbr -a gs "git status"
abbr -a gp "git push"
# 删除缩写
abbr -e ll
# 查看所有缩写
abbr -l
abbr -s
高级使用
# 全局缩写
abbr -g -a myalias "echo 'Hello World'"
# 通用缩写(持久化)
abbr -U -a gc "git commit"
# 正则表达式缩写
abbr -a -r "gc[0-9]+" "git checkout"
# 任意位置触发的缩写
abbr -a -p anywhere teh "the"
# 查询缩写是否存在
if abbr -q myabbr
echo "缩写存在"
else
echo "缩写不存在"
end
函数缩写示例
# 首先定义一个函数
function current_date
date "+%Y-%m-%d"
end
# 然后创建使用该函数的缩写
abbr -a -f current_date today
注意事项
- 持久化: 使用
-U
参数的缩写会自动保存到配置文件中 - 优先级: 命令行定义的缩写优先于配置文件中的缩写
- 触发时机: 缩写在按下空格或回车时触发展开
- 作用域: 全局缩写在当前会话有效,通用缩写跨会话持久化
- 正则表达式: 使用
-r
参数时,WORD应该是有效的正则表达式模式
配置文件位置
缩写配置通常保存在:
~/.config/fish/config.fish
(手动添加)- fish的内部配置系统 (使用
-U
参数时自动管理)
在Fish默认启动文件中配置缩写
配置文件路径
- 用户配置:
~/.config/fish/config.fish
- 系统配置:
/etc/fish/config.fish
(需要管理员权限)
创建和编辑配置文件
1. 创建配置目录(如果不存在)
mkdir -p ~/.config/fish
2. 编辑配置文件
# 使用你喜欢的编辑器
nano ~/.config/fish/config.fish
# 或者
vim ~/.config/fish/config.fish
# 或者
code ~/.config/fish/config.fish
在config.fish中添加缩写的方法
方法1: 直接在config.fish中定义
# ~/.config/fish/config.fish
# Git相关缩写
abbr -a gs "git status"
abbr -a ga "git add"
abbr -a gc "git commit"
abbr -a gp "git push"
abbr -a gl "git log --oneline"
# 系统命令缩写
abbr -a ll "ls -la"
abbr -a la "ls -la"
abbr -a l "ls -CF"
# 导航缩写
abbr -a .. "cd .."
abbr -a ... "cd ../.."
abbr -a .... "cd ../../.."
# Docker缩写
abbr -a d "docker"
abbr -a dc "docker-compose"
abbr -a dps "docker ps"
# 其他实用缩写
abbr -a h "history"
abbr -a c "clear"
abbr -a e "exit"
方法2: 条件性添加(避免重复)
# ~/.config/fish/config.fish
# 检查缩写是否已存在,避免重复定义
if not abbr -q gs
abbr -a gs "git status"
end
if not abbr -q ll
abbr -a ll "ls -la"
end
方法3: 批量导入缩写
# ~/.config/fish/config.fish
# 定义一个函数来批量添加缩写
function setup_abbreviations
set -l abbreviations \
"gs" "git status" \
"ga" "git add" \
"gc" "git commit" \
"gp" "git push" \
"ll" "ls -la" \
"la" "ls -la"
for i in (seq 1 2 (count $abbreviations))
set abbr_name $abbreviations[$i]
set abbr_expansion $abbreviations[(math $i + 1)]
if not abbr -q $abbr_name
abbr -a $abbr_name $abbr_expansion
end
end
end
# 调用函数设置缩写
setup_abbreviations
使用通用缩写(-U参数)的优势
# 在任意终端中执行,会自动持久化
abbr -U -a gs "git status"
abbr -U -a ll "ls -la"
# 这些缩写会自动保存,无需手动编辑config.fish
管理和维护
1. 备份当前缩写
# 导出所有缩写到文件
abbr -s > ~/.config/fish/my_abbreviations_backup.fish
2. 恢复缩写
# 从备份文件恢复
source ~/.config/fish/my_abbreviations_backup.fish
3. 重新加载配置
# 重新加载config.fish
source ~/.config/fish/config.fish
# 或者重启fish shell
exec fish
最佳实践建议
- 组织结构: 在config.fish中按类别组织缩写(Git、系统命令、导航等)
- 注释: 为复杂的缩写添加注释说明
- 避免冲突: 检查缩写名称是否与现有命令冲突
- 定期清理: 删除不再使用的缩写
- 版本控制: 将config.fish加入版本控制系统进行管理
示例配置文件结构
# ~/.config/fish/config.fish
# Fish shell配置文件
# ===================
# 环境变量
# ===================
set -gx EDITOR vim
# ===================
# 缩写定义
# ===================
# Git命令缩写
abbr -a gs "git status"
abbr -a ga "git add"
abbr -a gc "git commit"
# 系统命令缩写
abbr -a ll "ls -la"
abbr -a la "ls -la"
# 其他配置...
bat 命令完整使用手册
基本语法
bat [OPTIONS] [FILE]...
主要选项参数
显示选项
参数 | 长参数 | 说明 |
---|---|---|
-A |
--show-all |
显示不可打印字符 |
-n |
--number |
显示行号 |
-p |
--plain |
纯文本模式,不显示装饰 |
--paging=<when> |
分页模式:auto, always, never | |
--pager=<command> |
指定分页器程序 | |
--wrap=<mode> |
文本换行:auto, never, character | |
--tabs=<T> |
设置 tab 宽度 |
主题和样式
参数 | 长参数 | 说明 |
---|---|---|
--theme=<theme> |
设置主题 | |
--list-themes |
列出所有可用主题 | |
--style=<components> |
设置输出组件 | |
--color=<when> |
颜色输出:auto, never, always | |
--italic-text=<when> |
斜体文本:always, never |
语言和语法
参数 | 长参数 | 说明 |
---|---|---|
-l |
--language=<language> |
指定语法高亮语言 |
--list-languages |
列出支持的语言 |
行范围和高亮
参数 | 长参数 | 说明 |
---|---|---|
-r |
--line-range=<N:M> |
显示指定行范围 |
-H |
--highlight-line=<N> |
高亮指定行 |
文件处理
参数 | 长参数 | 说明 |
---|---|---|
--file-name=<name> |
指定显示的文件名 | |
--diff |
只显示 git diff 的内容 | |
--diff-context=<N> |
diff 上下文行数 |
输出控制
参数 | 长参数 | 说明 |
---|---|---|
--terminal-width=<width> |
设置终端宽度 | |
--no-config |
忽略配置文件 | |
--config-dir |
显示配置目录 | |
--config-file |
显示配置文件路径 | |
--cache-dir |
显示缓存目录 |
帮助选项
参数 | 长参数 | 说明 |
---|---|---|
-h |
--help |
显示帮助信息 |
-V |
--version |
显示版本信息 |
样式组件 (–style)
可用的样式组件:
auto
- 默认组件full
- 所有组件plain
- 无组件changes
- Git 变更标记header
- 文件名头部header-filename
- 只显示文件名header-filesize
- 显示文件大小grid
- 垂直网格线rule
- 水平分隔线numbers
- 行号snip
- 省略标记
组合使用示例:
bat --style=numbers,changes file.py
常用主题
内置主题包括:
1337
DarkNeon
Dracula
GitHub
Monokai Extended
Monokai Extended Bright
Monokai Extended Light
Monokai Extended Origin
Nord
OneHalfDark
OneHalfLight
Solarized (dark)
Solarized (light)
Sublime Snazzy
TwoDark
ansi
base16
zenburn
实用示例
基本使用
# 查看文件
bat README.md
# 查看多个文件
bat src/*.rs
# 纯文本模式
bat --plain config.json
语法高亮
# 指定语言
bat --language=json data.txt
# 查看支持的语言
bat --list-languages
行号和范围
# 显示特定行范围
bat --line-range=40:60 file.py
# 高亮特定行
bat --highlight-line=25 script.sh
# 高亮多行
bat --highlight-line=10 --highlight-line=20 file.txt
主题设置
# 使用特定主题
bat --theme=Dracula file.py
# 查看所有主题
bat --list-themes
# 预览主题效果
bat --list-themes | bat --language=txt
Git 集成
# 显示 git diff 风格
bat --diff file.py
# 只显示变更内容
git show HEAD:file.py | bat --diff --file-name=file.py
输出控制
# 禁用分页
bat --paging=never file.log
# 强制分页
bat --paging=always file.txt
# 自定义分页器
bat --pager="less -RF" file.txt
样式自定义
# 只显示行号和变更
bat --style=numbers,changes file.py
# 完整样式
bat --style=full file.py
# 最小样式
bat --style=plain file.py
配置文件
bat 支持配置文件来设置默认选项。配置文件位置:
- Linux/macOS:
~/.config/bat/config
- Windows:
%APPDATA%\bat\config
配置文件示例:
# 设置默认主题
--theme="Dracula"
# 显示行号
--style="numbers,changes"
# 设置 tab 宽度
--tabs=4
# 自动换行
--wrap=auto
环境变量
BAT_THEME
- 设置默认主题BAT_STYLE
- 设置默认样式BAT_TABS
- 设置 tab 宽度BAT_PAGER
- 设置分页器BAT_CONFIG_PATH
- 配置文件路径
快捷键(分页模式下)
当使用内置分页器时,支持以下快捷键:
q
- 退出j
/↓
- 向下滚动一行k
/↑
- 向上滚动一行f
/Space
/Page Down
- 向下翻页b
/Page Up
- 向上翻页g
- 跳到文件开头G
- 跳到文件结尾/
- 搜索n
- 下一个搜索结果N
- 上一个搜索结果h
- 显示帮助
与其他工具结合
# 与 find 结合
find . -name "*.py" -exec bat {} \;
# 与 grep 结合
grep -r "function" . | bat --language=grep
# 管道输入
curl -s https://api.github.com/users/github | bat --language=json
# 与 tail 结合查看日志
tail -f /var/log/nginx/access.log | bat --paging=never --language=log
性能优化
对于大文件:
# 只查看前几行
bat --line-range=:100 large-file.txt
# 禁用 Git 集成以提高性能
bat --style=numbers large-file.txt