当前位置: 首页 > ds >正文

Fish shell的abbr命令行参数介绍和Bat文件查看工具

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 myabbrecho "缩写存在"
elseecho "缩写不存在"
end

函数缩写示例

# 首先定义一个函数
function current_datedate "+%Y-%m-%d"
end# 然后创建使用该函数的缩写
abbr -a -f current_date today

注意事项

  1. 持久化: 使用-U参数的缩写会自动保存到配置文件中
  2. 优先级: 命令行定义的缩写优先于配置文件中的缩写
  3. 触发时机: 缩写在按下空格或回车时触发展开
  4. 作用域: 全局缩写在当前会话有效,通用缩写跨会话持久化
  5. 正则表达式: 使用-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 gsabbr -a gs "git status"
endif not abbr -q llabbr -a ll "ls -la"
end
方法3: 批量导入缩写
# ~/.config/fish/config.fish# 定义一个函数来批量添加缩写
function setup_abbreviationsset -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_nameabbr -a $abbr_name $abbr_expansionendend
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

最佳实践建议

  1. 组织结构: 在config.fish中按类别组织缩写(Git、系统命令、导航等)
  2. 注释: 为复杂的缩写添加注释说明
  3. 避免冲突: 检查缩写名称是否与现有命令冲突
  4. 定期清理: 删除不再使用的缩写
  5. 版本控制: 将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
http://www.xdnf.cn/news/17613.html

相关文章:

  • 【QT】常⽤控件详解(七)容器类控件 GroupBox TabWidget 布局管理器 Spacer
  • 深度学习-卷积神经网络CNN-AlexNet
  • LeetCode 括号生成
  • Hadoop MapReduce过程
  • LeetCode - 搜索插入位置 / 排序链表
  • (LeetCode 面试经典 150 题) 104. 二叉树的最大深度 (深度优先搜索dfs)
  • 【Docker实战入门】从核心概念到镜像构建
  • JavaScript的 fetch() 方法 笔记250810
  • CSS优先级、HTTP响应状态码
  • Android的事件分发流程、Kotlin协程、4大组件、Handler机制、架构设计、性能优化、内存泄漏
  • 第4章 程序段的反复执行2while语句P128练习题(题及答案)
  • 智慧农业-无人机视角庄稼倒伏农作物倒伏检测数据集VOC+YOLO格式541张1类别
  • VSCode添加Python、Java注释技巧、模板
  • 疏老师-python训练营-Day40训练和测试的规范写法
  • NumPy性能飞跃秘籍:向量化计算如何提升400倍运算效率?
  • istio笔记03--快速上手多集群mesh
  • 【C语言】深入探索预处理
  • Matlab 基于BP神经网络结合Bagging(BP-Bagging)集成算法的单变量时序预测 (单输入单输出)
  • 带冷端补偿的热电偶采集方案MAX31855
  • Dell PowerEdge: Servers by generation (按代系划分的服务器)
  • 【渲染流水线】[几何阶段]-[图元装配]以UnityURP为例
  • C++2024 年一级
  • Cursor设置
  • 【机器学习深度学习】模型选型:如何根据现有设备选择合适的训练模型
  • 【面试场景题】微博热点新闻系统设计方案
  • 一个“加锁无效“的诡异现象
  • #C语言——刷题攻略:牛客编程入门训练(七):分支控制(一)-- 涉及 %c前加空格:忽略起首的空白字符
  • Spring Boot Starter 自动化配置原理深度剖析
  • 把大模型“关进冰箱”——基于知识蒸馏 + 动态量化的小型化实战笔记
  • 推客系统开发全攻略:从架构设计到高并发实战