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 myabbr
    echo "缩写存在"
else
    echo "缩写不存在"
end

函数缩写示例

# 首先定义一个函数
function current_date
    date "+%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 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

最佳实践建议

  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

tmux 详细使用文档

目录

  1. 简介
  2. 安装
  3. 基本概念
  4. 会话管理
  5. 窗口管理
  6. 窗格管理
  7. 常用命令汇总
  8. 配置文件
  9. 实用技巧
  10. 常见问题

简介

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 " - 分割窗格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值