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
常用主题
内置主题包括:
1337DarkNeonDraculaGitHubMonokai ExtendedMonokai Extended BrightMonokai Extended LightMonokai Extended OriginNordOneHalfDarkOneHalfLightSolarized (dark)Solarized (light)Sublime SnazzyTwoDarkansibase16zenburn
实用示例
基本使用
# 查看文件
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
tmux 详细使用文档
目录
简介
tmux(Terminal Multiplexer)是一个终端多路复用器,它允许您在单个终端窗口中运行多个会话。主要特性包括:
- 会话持久化:断开连接后会话继续运行
- 多窗口管理:在一个会话中创建多个窗口
- 窗格分割:将窗口分割为多个窗格
- 会话共享:多个用户可以连接到同一个会话
安装
Ubuntu/Debian
sudo apt-get install tmux
CentOS/RHEL
sudo yum install tmux
# 或者(较新版本)
sudo dnf install tmux
macOS
brew install tmux
从源码编译
git clone https://github.com/tmux/tmux.git
cd tmux
./autogen.sh
./configure
make && sudo make install
基本概念
层级结构
服务器 (Server)
├── 会话 (Session)
│ ├── 窗口 (Window)
│ │ ├── 窗格 (Pane)
│ │ └── 窗格 (Pane)
│ └── 窗口 (Window)
└── 会话 (Session)
前缀键(Prefix Key)
- 默认前缀键:
Ctrl+b - 所有 tmux 命令都需要先按前缀键,然后按命令键
- 表示方法:
C-b表示Ctrl+b
会话管理
创建会话
# 创建新会话
tmux new-session
tmux new
tmux
# 创建带名称的会话
tmux new-session -s session_name
tmux new -s session_name
# 创建会话并指定起始目录
tmux new-session -s session_name -c /path/to/directory
查看会话
# 列出所有会话
tmux list-sessions
tmux ls
# 在 tmux 内部查看会话
C-b s
连接会话
# 连接到最近的会话
tmux attach-session
tmux attach
tmux a
# 连接到指定会话
tmux attach-session -t session_name
tmux a -t session_name
# 连接到指定会话(按编号)
tmux a -t 0
断开会话
# 断开当前会话(会话继续运行)
C-b d
# 断开指定客户端
tmux detach-client -t session_name
删除会话
# 删除指定会话
tmux kill-session -t session_name
# 删除所有会话
tmux kill-server
# 在 tmux 内部删除当前会话
C-b x (然后确认)
重命名会话
# 重命名会话
tmux rename-session -t old_name new_name
# 在 tmux 内部重命名当前会话
C-b $
窗口管理
创建窗口
# 创建新窗口
C-b c
# 创建窗口并指定名称
C-b c (然后立即按 C-b , 重命名)
窗口导航
# 下一个窗口
C-b n
# 上一个窗口
C-b p
# 切换到指定窗口(按编号)
C-b 0-9
# 切换到指定窗口(按名称)
C-b '
# 然后输入窗口名称
# 列出所有窗口
C-b w
# 查找窗口
C-b f
窗口操作
# 重命名当前窗口
C-b ,
# 关闭当前窗口
C-b &
# 移动窗口位置
C-b .
# 然后输入新的窗口编号
# 交换窗口位置
C-b t (选择目标窗口)
窗格管理
创建窗格
# 水平分割(上下分割)
C-b "
# 垂直分割(左右分割)
C-b %
# 在命令行中分割
tmux split-window -h # 垂直分割
tmux split-window -v # 水平分割
窗格导航
# 切换到下一个窗格
C-b o
# 使用方向键切换窗格
C-b ↑↓←→
# 切换到指定窗格
C-b q (显示窗格编号,然后按对应数字)
# 切换到上一个活动窗格
C-b ;
# 显示窗格编号
C-b q
窗格操作
# 关闭当前窗格
C-b x
# 将当前窗格转为窗口
C-b !
# 显示窗格信息
C-b i
# 切换窗格布局
C-b Space
# 预定义布局切换
C-b Alt+1 # 水平平铺
C-b Alt+2 # 垂直平铺
C-b Alt+3 # 主窗格在左
C-b Alt+4 # 主窗格在上
C-b Alt+5 # 平铺
调整窗格大小
# 调整窗格边界(按住 Alt 键)
C-b Alt+↑↓←→
# 精细调整(逐步调整)
C-b Ctrl+↑↓←→
# 调整到预设大小
C-b z # 最大化/恢复当前窗格
窗格同步
# 同步所有窗格(同时输入到所有窗格)
C-b :setw synchronize-panes on
C-b :setw synchronize-panes off
常用命令汇总
系统级别命令
| 命令 | 功能 |
|---|---|
tmux | 启动新的 tmux 会话 |
tmux ls | 列出所有会话 |
tmux a -t <session> | 连接到指定会话 |
tmux kill-session -t <session> | 删除指定会话 |
tmux kill-server | 停止 tmux 服务器 |
会话操作
| 快捷键 | 功能 |
|---|---|
C-b d | 断开当前会话 |
C-b s | 列出并切换会话 |
C-b $ | 重命名当前会话 |
C-b ( | 切换到上一个会话 |
C-b ) | 切换到下一个会话 |
窗口操作
| 快捷键 | 功能 |
|---|---|
C-b c | 创建新窗口 |
C-b n | 切换到下一个窗口 |
C-b p | 切换到上一个窗口 |
C-b 0-9 | 切换到指定编号窗口 |
C-b w | 列出并选择窗口 |
C-b , | 重命名当前窗口 |
C-b & | 关闭当前窗口 |
窗格操作
| 快捷键 | 功能 |
|---|---|
C-b % | 垂直分割窗格 |
C-b " | 水平分割窗格 |
C-b o | 切换到下一个窗格 |
C-b ; | 切换到上一个活动窗格 |
C-b ↑↓←→ | 方向键切换窗格 |
C-b q | 显示窗格编号 |
C-b x | 关闭当前窗格 |
C-b z | 最大化/恢复窗格 |
C-b ! | 将窗格转为窗口 |
其他有用命令
| 快捷键 | 功能 |
|---|---|
C-b ? | 显示帮助信息 |
C-b : | 进入命令模式 |
C-b [ | 进入复制模式 |
C-b ] | 粘贴缓冲区内容 |
C-b ~ | 显示消息 |
配置文件
配置文件位置
- 系统配置:
/etc/tmux.conf - 用户配置:
~/.tmux.conf
常用配置示例
# ~/.tmux.conf
# 设置默认 shell 为 fish
set-option -g default-shell /usr/bin/fish
set-option -g default-command fish
# 设置前缀键为 Ctrl+a
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 设置起始索引为1(默认为0)
set -g base-index 1
set -g pane-base-index 1
# 启用鼠标支持
set -g mouse on
# 设置默认终端模式为256色
set -g default-terminal "screen-256color"
# 增加历史记录限制
set -g history-limit 10000
# 设置状态栏
set -g status-bg black
set -g status-fg white
set -g status-left '#[fg=green]#S '
set -g status-right '#[fg=yellow]%Y-%m-%d %H:%M'
# 快捷键绑定
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# 分割窗格快捷键
bind | split-window -h
bind - split-window -v
# 重新加载配置文件
bind r source-file ~/.tmux.conf \; display "配置文件已重载!"
# 复制模式使用 vi 键绑定
setw -g mode-keys vi
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel
重载配置
# 在 tmux 中重载配置
C-b :source-file ~/.tmux.conf
# 或者在配置文件中添加快捷键
bind r source-file ~/.tmux.conf \; display "配置已重载!"
实用技巧
1. 复制和粘贴
# 进入复制模式
C-b [
# 在复制模式中:
# Space 开始选择
# Enter 复制选择内容
# q 退出复制模式
# 粘贴
C-b ]
# 查看剪贴板历史
C-b =
2. 搜索功能
# 在复制模式中搜索
C-b [
然后按 / 向下搜索,或 ? 向上搜索
3. 会话嵌套
# 在嵌套会话中,按两次前缀键来控制内层会话
C-b C-b <command>
4. 批量操作
# 同步输入到所有窗格
:setw synchronize-panes on
# 关闭同步
:setw synchronize-panes off
5. 保存和恢复会话
使用插件 tmux-resurrect:
# 安装 tmux 插件管理器 TPM
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
# 在 ~/.tmux.conf 中添加:
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
run '~/.tmux/plugins/tpm/tpm'
# 重载配置并安装插件
C-b I
# 保存会话
C-b Ctrl-s
# 恢复会话
C-b Ctrl-r
常见问题
1. 颜色显示问题
# 在 ~/.bashrc 或 ~/.zshrc 中添加
export TERM=screen-256color
# 或在 tmux 配置中设置
set -g default-terminal "screen-256color"
2. 鼠标滚轮不工作
# 在配置文件中启用鼠标支持
set -g mouse on
3. 复制粘贴问题
# macOS 系统复制到系统剪贴板
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
# Linux 系统复制到系统剪贴板
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"
4. 中文显示问题
# 确保系统和 tmux 都支持 UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
# 在 tmux 配置中
set -gq utf8 on
5. 会话意外丢失
# 检查 tmux 服务器状态
tmux has-session -t session_name
# 查看所有活动会话
tmux ls
# 恢复后台会话
tmux attach -d
高级用法
脚本化 tmux
#!/bin/bash
# 创建开发环境的脚本
SESSION="dev"
# 创建新会话
tmux new-session -d -s $SESSION
# 创建窗口
tmux new-window -t $SESSION:1 -n 'editor'
tmux new-window -t $SESSION:2 -n 'server'
tmux new-window -t $SESSION:3 -n 'logs'
# 在窗口中执行命令
tmux send-keys -t $SESSION:1 'vim' C-m
tmux send-keys -t $SESSION:2 'npm start' C-m
tmux send-keys -t $SESSION:3 'tail -f app.log' C-m
# 选择起始窗口
tmux select-window -t $SESSION:1
# 连接到会话
tmux attach -t $SESSION
团队协作
# 创建共享会话
tmux -S /tmp/shared_session new -s shared
# 设置权限
chmod 777 /tmp/shared_session
# 其他用户连接
tmux -S /tmp/shared_session attach -t shared
总结
tmux 是一个功能强大的终端多路复用器,掌握基本的会话、窗口和窗格管理操作即可大大提高工作效率。通过合理的配置和插件扩展,可以打造出符合个人习惯的工作环境。
记住最重要的几个命令:
tmux- 创建新会话tmux ls- 列出会话tmux a- 重新连接C-b d- 断开会话C-b c- 创建窗口C-b %和C-b "- 分割窗格
2446

被折叠的 条评论
为什么被折叠?



