分享个自己一直在用的Github上一个终端复用tmux的配置

主要是分享Github上的一个tmux配置,我自己一直用这个配置。

直达Github oh-my-tmux

对于不了解tmux的朋友,这是简要功能介绍

多会话管理:tmux允许你在一个终端窗口中创建多个会话,每个会话可以独立运行不同的命令和程序。这样你可以同时处理多个任务,而不需要打开多个终端窗口。
会话持久性:tmux会话可以在你注销或断开连接后继续运行,这意味着你可以在不中断任务的情况下关闭终端窗口或断开SSH连接。当你再次连接到服务器时,你可以恢复之前的会话,继续你的工作。
窗格和窗口管理:tmux允许你将终端窗口分割成多个窗格,每个窗格可以显示不同的命令输出或程序界面。你可以轻松地在窗格之间切换,调整它们的大小和布局。此外,你还可以创建多个窗口,每个窗口可以包含不同的会话和窗格,以便更好地组织你的工作环境。
会话共享:tmux允许多个用户同时访问同一个会话,这对于协作工作或远程教学非常有用。多个用户可以在同一个终端窗口中共享会话,并实时查看彼此的操作。

关于安装

Github仓库的readme中就有安装教程,我也写了一个简单的脚本放在这里(贴在后面)。

配置文件可以装在这三个位置

  • ~
  • $XDG_CONFIG_HOME/tmux
  • ~/.config/tmux

只是配置文件,所以还需要自己安装tmux。一般通过包管理器apt或yum安装。
配置文件要求的tmux版本是>=2.4,查看tmux命令: tmux -V

tmux版本低于这个的需要更新下tmux,如果包管理器里面的最新版本都低于2.4。。。。
移步到tmux编译安装https://github.com/tmux/tmux/wiki/Installing

安装前或安装后需要运行tmux kill-server关闭所有会话后再新建会话才能看到效果。记得保存会话中未保存的工作。


开始安装



按照readme

在用户目录安装:

$ cd
$ git clone https://github.com/gpakosz/.tmux.git
$ ln -s -f .tmux/.tmux.conf
$ cp .tmux/.tmux.conf.local .

在$XDG_CONFIG_HOME/tmux安装 :

$ git clone https://github.com/gpakosz/.tmux.git "/path/to/oh-my-tmux"
$ mkdir -p "$XDG_CONFIG_HOME/tmux"
$ ln -s "/path/to/oh-my-tmux/.tmux.conf" "$XDG_CONFIG_HOME/tmux/tmux.conf"
$ cp "/path/to/oh-my-tmux/.tmux.conf.local" "$XDG_CONFIG_HOME/tmux/tmux.conf.local"

在~/.config/tmux安装:

$ git clone https://github.com/gpakosz/.tmux.git "/path/to/oh-my-tmux"
$ mkdir -p "~/.config/tmux"
$ ln -s "/path/to/oh-my-tmux/.tmux.conf" "~/.config/tmux/tmux.conf"
$ cp "/path/to/oh-my-tmux/.tmux.conf.local" "~/.config/tmux/tmux.conf.local"

自己写的一键脚本 (可以自己按需求改)

#!/bin/bash

# 检查并安装必要的工具
for tool in git awk perl sed tmux; do
  if ! command -v $tool &> /dev/null; then
    echo "$tool could not be found, attempting to install..."
    
    # 尝试使用apt安装
    if command -v apt &> /dev/null; then
      sudo apt update
      sudo apt install -y $tool
    # 尝试使用yum安装
    elif command -v yum &> /dev/null; then
      sudo yum install -y $tool
    else
      echo "Package manager not supported. Please install $tool manually."
      exit 1
    fi

    # 检查工具是否成功安装
    if ! command -v $tool &> /dev/null; then
      echo "Failed to install $tool. Please install it manually."
      exit 1
    fi
  fi
done

# 检查tmux版本
TMUX_VERSION=$(tmux -V | awk '{print $2}' | sed 's/[^0-9.]*//g')
REQUIRED_VERSION="2.4"

if [[ $(echo "$TMUX_VERSION >= $REQUIRED_VERSION" | bc -l) -eq 0 ]]; then
  echo "tmux version must be >= $REQUIRED_VERSION"
  exit 1
fi

# 检查TERM环境变量
if [[ $TERM != "xterm-256color" ]]; then
  echo "TERM must be set to xterm-256color"
  exit 1
fi

# 选择安装位置
echo "Select the installation location:"
echo "1) Home directory (~)"
echo "2) XDG_CONFIG_HOME/tmux"
echo "3) ~/.config/tmux"
read -p "Enter your choice (1-3): " choice

case $choice in
  1)
    cd
    git clone https://github.com/gpakosz/.tmux.git
    ln -s -f .tmux/.tmux.conf
    cp .tmux/.tmux.conf.local .
    ;;
  2)
    INSTALL_DIR="$XDG_CONFIG_HOME/tmux"
    git clone https://github.com/gpakosz/.tmux.git "$INSTALL_DIR/oh-my-tmux"
    mkdir -p "$INSTALL_DIR"
    ln -s "$INSTALL_DIR/oh-my-tmux/.tmux.conf" "$INSTALL_DIR/tmux.conf"
    cp "$INSTALL_DIR/oh-my-tmux/.tmux.conf.local" "$INSTALL_DIR/tmux.conf.local"
    ;;
  3)
    INSTALL_DIR="$HOME/.config/tmux"
    git clone https://github.com/gpakosz/.tmux.git "$INSTALL_DIR/oh-my-tmux"
    mkdir -p "$INSTALL_DIR"
    ln -s "$INSTALL_DIR/oh-my-tmux/.tmux.conf" "$INSTALL_DIR/tmux.conf"
    cp "$INSTALL_DIR/oh-my-tmux/.tmux.conf.local" "$INSTALL_DIR/tmux.conf.local"
    ;;
  *)
    echo "Invalid choice"
    exit 1
    ;;
esac

echo "Installation completed successfully"
echo "Please press Enter to restart tmux server, but if you have any unsaved work in tmux session, press Ctrl C to interrupt or you work will be lost!"
read -P "PRESS ENTER FOR RESTARTING; CTRL C FOR INTERRUPTING!" isEntered
tmux kill-server


tmux的一些命令和快捷键

命令

tmux当然有很多命令,这些在搜索引擎上搜到,所以只写最常用的那几个。

  • tmux ls 列出所有会话
  • tmux new -s [会话名] 新建一个会话
  • tmux attach -t [会话名] 连接到指定会话
  • tmux kill-session [会话名] 删除指定会话
  • tmux kill-session -a -t [会话名] 删除除了指定会话外的所有会话。去掉-t [会话名]则删除所有会话

会话内快捷键

tmux的prefix仍是Ctrl-B,但Ctrl-A也可以

对于第一次使用的,prefix是一个先行指令,用来将tmux从输入模式切换到命令模式,例如从tmux切出的快捷键是prefix D(Ctrl-B D),不是Ctrl B D一起按,是先按Ctrl和B,松开这两个键后再按一下D。此外,这是会话内的键,也就是说必须先进入一个tmux会话才能用

  • prefix D 从会话切出
  • prefix S 会话选择器
  • prefix ( 上一个会话
  • prefix ) 下一个会话
  • prefix C 新建一个窗口
  • prefix & 关闭当前窗口
  • prefix p 上一个窗口
  • prefix n 下一个窗口
  • prefix [0~9]选择从0到9窗口中的一个
  • prefix % 将当前网格分为左右两个网格
  • prefix " 将网格分为上下两个网格
  • prefix 小键盘方向键 按方向切换网格
  • prefix m 激活鼠标操作模式

一些解释
会话(session):会话是一个虚拟的终端环境,可以包含多个窗口和网格。会话可以在后台运行,即使关闭终端也能保持会话的状态。一个会话可以包含多个窗口。

窗口(window):tmux的窗口是会话中的一个独立的工作区域,类似于桌面上的一个窗口。每个窗口可以运行不同的命令或应用程序,并且可以在窗口之间切换。窗口可以通过快捷键或命令来创建、关闭和切换。

网格(pane):tmux的网格是窗口中的一个分屏区域,类似于窗口中的一个小窗格。一个窗口可以分割成多个网格,每个网格可以运行不同的命令或应用程序。网格可以通过快捷键或命令来创建、关闭和切换。

鼠标操作:激活后可以使用鼠标滚轮查看缓冲区输出,也可以进行网格的选择,以及调整网格的大小(用光标拖动分界线)

还有一些自定义选项请移步原仓库吧。

点赞
  1. raingod说道:

    看着挺高级的

  2. CmHear说道:

    有没有关于tmux套tmux相关的设置啊,用于ssh

  3. hausen1012说道:

    ubuntu 这种情况怎么搞。

回复 raingod 取消回复

电子邮件地址不会被公开。必填项已用 * 标注

×
订阅图标按钮