redhat7.9下tmux 3.4安装以及自定义配置

news2024/12/23 23:11:11

1.安装依赖

yum -y install libtermcap-devel ncurses-devel libevent-devel readline-devel

2.解压并编译安装

tar -zxvf tmux-3.4.tar.gz
mkdir /opt/tmux-3.4
cd tmux-3.4/
./configure --prefix=/opt/tmux-3.4
make && make install

#最后检查下
[root@localhost tmux-3.4]# tree /opt/tmux-3.4/
/opt/tmux-3.4/
├── bin
│   └── tmux
└── share
    └── man
        └── man1
            └── tmux.1

#最后在创建个软连接即可
ln -s /opt/tmux-3.4/bin/tmux /usr/bin/tmux

3.tmux命令补全

vim ~/.bash.tmux-bash-completion
#!/usr/bin/env bash

# Copy of https://github.com/Bash-it/bash-it/blob/master/completion/available/tmux.completion.bash
# and https://github.com/przepompownia/bash-it/blob/master/completion/available/tmux.completion.bash
# slightly refactored

# tmux completion
# See: http://www.debian-administration.org/articles/317 for how to write more.
# Usage: Put "source bash_completion_tmux.sh" into your .bashrc
# Based upon the example at http://paste-it.appspot.com/Pj4mLycDE

function _tmux_complete_client() {
    local IFS=$'\n'
    local cur="${1}" && shift
    COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux "$@" list-clients -F '#{client_tty}' 2> /dev/null)" -- "${cur}") )
    options=""
    return 0
}

function _tmux_complete_session() {
    local IFS=$'\n'
    local cur="${1}" && shift
    COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux "$@" list-sessions -F '#{session_name}' 2> /dev/null)" -- "${cur}") )
    options=""
    return 0
}

function _tmux_complete_window() {
    local IFS=$'\n'
    local cur="${1}" && shift
    local session_name="$(echo "${cur}" | sed 's/\\//g' | cut -d ':' -f 1)"
    local sessions

    sessions="$(tmux "$@" list-sessions 2> /dev/null | sed -re 's/([^:]+:).*$/\1/')"
    if [[ -n "${session_name}" ]]; then
        sessions="${sessions}
        $(tmux "$@" list-windows -t "${session_name}" 2> /dev/null | sed -re 's/^([^:]+):.*$/'"${session_name}"':\1/')"
    fi
    cur="$(echo "${cur}" | sed -e 's/:/\\\\:/')"
    sessions="$(echo "${sessions}" | sed -e 's/:/\\\\:/')"
    COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "${sessions}" -- "${cur}") )
    options=""
    return 0
}

function _tmux_complete_socket_name() {
    local IFS=$'\n'
    local cur="${1}" && shift
    COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(find /tmp/tmux-$UID -type s -printf '%P\n')" -- "${cur}") )
    options=""
    return 0
}
function _tmux_complete_socket_path() {
    local IFS=$'\n'
    local cur="${1}" && shift
    COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(find /tmp/tmux-$UID -type s -printf '%p\n')" -- "${cur}") )
    options=""
    return 0
}

__tmux_init_completion()
{
    COMPREPLY=()
    _get_comp_words_by_ref cur prev words cword
}

_tmux() {
    local cur prev words cword;
    if declare -F _init_completion >/dev/null 2>&1; then
        _init_completion
    else
        __tmux_init_completion
    fi

    local index=1
    # Check tmux options that will change completion for:
    # - available sessions
    # - available windows
    # - ...
    local argv=( "${words[@]:1}" )
    local OPTIND OPTARG OPTERR=0 flag tmux_args=()
    while getopts "L:S:" flag "${argv[@]}"; do
        case "$flag" in
            L) tmux_args+=(-L "$OPTARG") ;;
            S) tmux_args+=(-S "$OPTARG") ;;
            *) ;;
        esac
    done
    # Completed -- have a space after
    if [[ ${#words[@]} -gt $OPTIND ]]; then
        local tmux_argc=${#tmux_args[@]}
        (( index+=tmux_argc ))
        (( cword-=tmux_argc ))
    fi

    if [[ $cword -eq 1 ]]; then
        COMPREPLY=($( compgen -W "$(tmux start\; list-commands | cut -d' ' -f1)" -- "$cur" ));
        return 0
    else
        case ${words[index]} in
            -L) _tmux_complete_socket_name "${cur}" ;;
            -S) _tmux_complete_socket_path "${cur}" ;;

            attach-session|attach)
            case "$prev" in
                -t) _tmux_complete_session "${cur}" "${tmux_args[@]}" ;;
                *) options="-t -d" ;;
            esac ;;
            detach-client|detach)
            case "$prev" in
                -t) _tmux_complete_client "${cur}" "${tmux_args[@]}" ;;
                *) options="-t" ;;
            esac ;;
            lock-client|lockc)
            case "$prev" in
                -t) _tmux_complete_client "${cur}" "${tmux_args[@]}" ;;
                *) options="-t" ;;
            esac ;;
            lock-session|locks)
            case "$prev" in
                -t) _tmux_complete_session "${cur}" "${tmux_args[@]}" ;;
                *) options="-t -d" ;;
            esac ;;
            new-session|new)
            case "$prev" in
                -t) _tmux_complete_session "${cur}" "${tmux_args[@]}" ;;
                -[n|d|s]) options="-d -n -s -t --" ;;
                *)
                if [[ ${COMP_WORDS[option_index]} == -- ]]; then
                    _command_offset ${option_index}
                else
                    options="-d -n -s -t --"
                fi
                ;;
            esac
            ;;
            refresh-client|refresh)
            case "$prev" in
                -t) _tmux_complete_client "${cur}" "${tmux_args[@]}" ;;
                *) options="-t" ;;
            esac ;;
            rename-session|rename)
            case "$prev" in
                -t) _tmux_complete_session "${cur}" "${tmux_args[@]}" ;;
                *) options="-t" ;;
            esac ;;
            has-session|has|kill-session)
            case "$prev" in
                -t) _tmux_complete_session "${cur}" "${tmux_args[@]}" ;;
                *) options="-t" ;;
            esac ;;
            source-file|source)
                _filedir ;;
            suspend-client|suspendc)
            case "$prev" in
                -t) _tmux_complete_client "${cur}" "${tmux_args[@]}" ;;
                *) options="-t" ;;
            esac ;;
            switch-client|switchc)
            case "$prev" in
                -c) _tmux_complete_client "${cur}" "${tmux_args[@]}" ;;
                -t) _tmux_complete_session "${cur}" "${tmux_args[@]}" ;;
                *) options="-l -n -p -c -t" ;;
            esac ;;

            send-keys|send)
            case "$option" in
                -t) _tmux_complete_window "${cur}" "${tmux_args[@]}" ;;
                *) options="-t" ;;
            esac ;;
        esac # case ${cmd}
    fi # command specified

    if [[ -n "${options}" ]]; then
        COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "${options}" -- "${cur}") )
    fi

    return 0
}
# http://linux.die.net/man/1/bash
complete -F _tmux tmux

# END tmux completion

然后再重启即可

4.tmux自定义配置

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

#附件也有这个.tmux目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2107468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue59 github案例 vue-resource版本

代码 List.vue <template><div class"row"><!-- 展示用户列表 --><div v-show"info.users.length" class"card" v-for"user in info.users" :key"user.login"><a :href"user.html_url&qu…

Sui主网升级至V1.32.2,enum功能正式上线

Sui主网现已升级至V1.32.2版本&#xff0c;同时协议升级至56版本&#xff0c;其他升级要点如下所示&#xff1a; 协议 #19199&#xff1a; 在主网上启用桥接功能。 #19031&#xff1a; 在主网上启用Move enums枚举功能。 索引器 #18899&#xff1a; 此PR修改了索引器数…

为什么期刊不允许已经录用的论文随意修改作者信息?

在学术出版的过程中&#xff0c;作者信息的准确性和透明度至关重要。有很多期刊会在期刊的作者指引中表明稿件在录用以后不能随意更改作者信息&#xff0c;期刊社通常对论文录用后的作者信息修改持谨慎态度。 为什么呢&#xff1f; 1. 确保学术诚信 作者名单不仅仅是一个名字…

如何在群晖NAS中安装HA平台并实现异地控制智能家居设备实战教程

文章目录 前言1. 下载HomeAssistant镜像2. 内网穿透HomeAssistant&#xff0c;实现异地控制智能家居3. 使用固定域名访问HomeAssistant 前言 HomeAssistant是一个可以控制苹果、小米、MQTT等设备的智能家居平台。本文首先介绍如何使用群晖NAS的Docker套件来安装HomeAssistant平…

新手小白都能一步到位的vector

目录 前言 1.vector的介绍 2.vector的部分使用 2.1(constructor)构造函数声明 2.2vector的遍历&#xff08;与string是相似的&#xff09; 2.3 vector容量空间 2.4vector的增删查改 3.vector的嵌套 结束语 前言 前面我们学习C的string部分&#xff0c;其中的接口&am…

ArcGIS展线/投线教程

1 制作CSV文件 必要字段&#xff1a;起始经度&#xff0c;起始纬度&#xff0c;终止经度&#xff0c;终止纬度4列&#xff0c;其他列可以选填。 2 加载表格数据 点击号在当前地图加载表格。 3 使用工具箱 找到工具箱 - 数据管理工具 - 要素 - XY转线。 填空即可。当然&…

Java Kafka生产者实现

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

mysql开启远程访问

个人建议mysql可以用宝塔自动下载安装。 远程访问&#xff0c; 1.关闭防火墙&#xff0c;确保ip能ping通 2.ping端口确定数据库能ping通 3.本地先连上去命令行修改远程访问权限。 mysql -u root -p use mysql; select user,host from user; select host from user where u…

IP地址怎样实现https访问

IP地址实现HTTPS访问的过程涉及一系列步骤&#xff0c;主要是为了确保网站的安全性和可信度。以下是实现IP地址HTTPS访问的关键步骤&#xff1a; 一、确认公网IP地址与权限 公网IP地址&#xff1a;确保你拥有一个公网IP地址&#xff0c;因为只有公网IP才能从互联网直接被客户…

【匈牙利汽车产业考察,开启新机遇】

匈牙利汽车工业发展历史悠久&#xff0c;拥有发达的基础设施和成熟的产业基础&#xff0c;全球20大汽车制造厂商中&#xff0c;有超过14家在匈牙利建立整车制造工厂和汽车零部件生产基地&#xff0c;比亚迪、宁德时代、欣旺达、蔚来等企业纷纷入驻。匈牙利位于东西方交汇处&…

K8s的福音:《Kubernetes企业级云原生运维实战》导读

京东购书点击↓↓↓&#xff1a; 《Kubernetes企业级云原生运维实战&#xff08;云计算前沿实战丛书&#xff09;》(李振良)【摘要 书评 试读】- 京东图书 在当今互联网时代&#xff0c;Kubernetes已经成为新一代的基础设施标准&#xff0c;如何设计一个高效、稳定、安全的Kube…

WGCLOUD的下发指令多长时间执行完成

15秒左右 WGCLOUD在v3.5.4版本&#xff0c;对下发指令做了优化&#xff0c;最快10s执行完成

C++引用简介

引用的基本使用&#xff1a; 作用&#xff1a; 给变量起别名 语法&#xff1a; 数据类型 &别名 原名 int main() {int a 10;int &b a;cout << "a " << a << endl;cout << "b " << b << endl; //都打印…

C++入门基础知识51——【关于C++数字】之C++随机数

成长路上不孤单&#x1f60a;【14后&#xff0c;C爱好者&#xff0c;持续分享所学&#xff0c;如有需要欢迎收藏转发&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#xff01;&#xff01;&#xff01;&#xff01;&#xff…

ArcGIS之建模处理栅格数据以表格显示分区统计(以夜间灯光数据为例)

当需要计算一个shp数据中多个面中的栅格数据值是&#xff0c;可以通过模型构建器进行批量处理&#xff0c;也就是统计多个面中的栅格数据值。但在处理过程中可能会遇见不同的错误&#xff0c;本文会介绍ERROR000883的解决办法。 数据准备&#xff1a;一个shp数据&#xff08;例…

如何在极狐GitLab中添加 SSH Key?

本文分享如何生成 SSH Key 并添加到极狐GitLab 中&#xff0c;然后用 SSH Key 进行代码拉取。 极狐GitLab 是 GitLab 在中国的发行版&#xff0c;可以私有化部署&#xff0c;对中文的支持非常友好&#xff0c;是专为中国程序员和企业推出的企业级一体化 DevOps 平台&#xff0…

c++ string中append/push_back/insert的区别以及erase/pop_back的区别

一.append/push_back/insert的区别 append是在末尾追加字符或字符串 如上的几种用法。注意第二个&#xff0c;它的第三个参数不是结束位置&#xff0c;而是要追加的长度&#xff1b;要追加的字符串可以用string对象表示&#xff0c;也可以用字符指针表示&#xff1b;也可以用于…

TMGM:美国贸易逆差扩大将对第三季度GDP增长产生压力

七月份&#xff0c;美国的进口量激增&#xff0c;导致国际贸易逆差扩大至一年半以来的最大位置&#xff0c;并使净出口再次从第三季度实际GDP增长中扣除超过半个百分点。 七月份&#xff0c;美国的国际贸易逆差扩大了58亿美元&#xff0c;至788亿美元&#xff08;图表&#xf…

『功能项目』DOTween动态文字【26】

打开上一篇25协程生成怪物模型的项目&#xff0c; 本章要做的事情是用DOTween插件做一个动态文字效果 首先在资源商店中免费下载一个DOTween插件 新建脚本&#xff1a;DowteenFlicker.cs 编写脚本&#xff1a; using DG.Tweening; using UnityEngine; using UnityEngine.UI;pu…

如何在算家云搭建Qwen2(智能对话)

一、Qwen2简介 Qwen2 是由阿里云通义千问团队研发的新一代大型语言模型系列&#xff0c;它在多个方面实现了技术的飞跃和性能的显著提升。以下是对 Qwen2 的详细介绍&#xff1a; GitHub - QwenLM/Qwen2: Qwen2 is the large language model series developed by Qwen team, …