前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Tmux终端安装与使用

Tmux终端安装与使用

作者头像
全栈工程师修炼指南
发布2022-09-28 16:33:44
发布2022-09-28 16:33:44
1.5K00
代码可运行
举报
运行总次数:0
代码可运行
0x00 Tmux 介绍

Tmux是一个优秀的终端复用软件,使用它的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机; 它支持:屏幕切分,而且具备丰富的命令行参数,使其可以灵活、动态的进行各种布局和操作。 你还可以通过 Tmux 使终端会话运行于后台或是按需接入、断开会话,这个功能非常实用

0x01 Tmux功能

Tmux 中最棒的功能 窗口(Window),窗格(Pane),会话(Session),快速在文本间移动光标或复制文本 ,非常轻巧的结对编程功能。

调整 Tmux 以增强其同 Vim 的集成度, 调整背景的配色方案, 调整光标的形状,调整粘贴时的文本缩进,用 Tmuxinator 自动创建会话 ,改变 Tmux 状态栏的颜色。 1.提供了强劲的、易于使用的命令行界面。 2.可横向和纵向分割窗口。 3.窗格可以自由移动和调整大小,或直接利用四个预设布局之一。 4.支持 UTF-8 编码及 256 色终端。 5.可在多个缓冲区进行复制和粘贴。 6.可通过交互式菜单来选择窗口、会话及客户端。 7.支持跨窗口搜索。 8.支持自动及手动锁定窗口。

0x02 Tmux的安装

安装环境:

CentOS Linux release 7.6.1810 (Core Linux 3.10.0-957.5.1.el7.x86_64 2019 x86_64 x86_64 x86_64 GNU/Linux

代码语言:javascript
代码运行次数:0
复制
#方法1
yum -y install ncurses-devel  yum -y install ncurses-devel
yum install -y tmux Tmate

#方法2
        $ yum install -y automake
	$ git clone https://github.com/tmux/tmux.git
	$ cd tmux
	$ sh autogen.sh
	$ ./configure && make

#运行:tmux即可

原文作者: WeiyiGeek [https://weiyigeek.top]
转载注明出处,原文地址:https://blog.weiyigeek.top/2019/3-28-210.html
更多最新文章, 请关注我的微信公众账号【WeiyiGeek】或者【B站专栏】哟, 谢谢支持!(๑′ᴗ‵๑) ❤

​​ 

tmux终端安装图

0x03 Tmux的使用

打开后如上图所示:默认是以 Ctrl+B按键 激活Tmux控制台,在下面的命令都需要先按激活按键:

代码语言:javascript
代码运行次数:0
复制
#系统操作
?   列出所有快捷键;按q返回
d   脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
D   选择要脱离的会话;在同时开启了多个会话时使用
Ctrl+z  挂起当前会话
r   强制重绘未脱离的会话
s   选择并切换会话;在同时开启了多个会话时使用
:   进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器
[   进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出
~   列出提示信息缓存;其中包含了之前tmux返回的各种提示信息


#窗口操作
c   创建新窗口
&   关闭当前窗口
数字键 切换至指定窗口
p   切换至上一窗口
n   切换至下一窗口
l   在前后两个窗口间互相切换
w   通过窗口列表切换窗口
,   重命名当前窗口;这样便于识别
.   修改当前窗口编号;相当于窗口重新排序
f   在所有窗口中查找指定文本
x   关闭当前光标处的小窗口


#面板操作
”  将当前面板平分为上下两块
%  将当前面板平分为左右两块
x   关闭当前面板
!   将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板
Ctrl+方向键    以1个单元格为单位移动边缘以调整当前面板大小
Alt+方向键 以5个单元格为单位移动边缘以调整当前面板大小
Space   在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
q   显示面板编号
o   在当前窗口中选择下一面板
方向键 移动光标以选择面板
{   向前置换当前面板
}   向后置换当前面板
Alt+o   逆时针旋转当前窗口的面板
Ctrl+o  顺时针旋转当前窗口的面板
t 钟表


#常用操作
ctrl + b 再按 "          上下分屏"
ctrl + b 再按 %         左右分屏
ctrl + b 再按 o           切换屏幕
ctrl + b 再按 x           关闭一个终端
ctrl + b 再按空格键  上下分屏与左右分屏切换
ctrl + b 再按 s           以菜单方式显示和选择会话。这个常用到,可以选择进入哪个tmux
ctrl + b 再按 q           显示分隔窗口的编号
ctrl + b 再按 t           显示钟表

​​

例如可以为一个特定的项目创建一个专用的 Tmux 会话,也可在tmux中进行建立指定会话:

代码语言:javascript
代码运行次数:0
复制
:new -s <name-of-my-new-session>
#实际案例1
tmux #开启tmux
tmux ls #显示已有tmux列表(C-b s) 列出已有会话(list-sessions)
tmux attach-session -t 数字 #选择tmux

#实际案例2
$ tmux new -s <name-of-my-session>
$ tmux attach  #列表中的每个会话都有一个 ID,该 ID 是从 0 开始的。
Ctrl-b +  :   #tmux 内部中按下

注意事项: 进入tmux面板后,一定要先按ctrl+b,然后松开,再按其他的组合键才能够生效。

0x04 Tmux配置

Tmux的配置文件:~/.tmux.conf (如果没有就自己建立即可644的权限) 每当开启一个新的会话时,Tmux 都会先读取 ~/.tmux.conf 这个文件,该文件中存放的就是对 Tmux 的的配置

Tmux 的快捷键前缀(Prefix)修改 首先我建议对调 Ctrl 键和 Caps-Lock 键的功能,因为在编码过程中,你需要频繁地按下 Ctrl 键,而由于 Caps-Lock 与手指在键盘的起始位置处于同一直线,所以按下 Caps-Lock 键会更加容易、便捷。

如果你希望新的配置项能够立即生效; 将以下配置加入到 Tmux 的配置文件 ~/.tmux.conf 中:

代码语言:javascript
代码运行次数:0
复制
unbind C-b
set -g prefix C-a   #快捷键前缀变更为 Ctrl-a

#只需要按下 Ctrl-a r就可以重新加载配置并使新的配置生效
bind R source-file ~/.tmux.conf ; display-message "Config reloaded.."  

# 在文本间快速移动光标,复制文本  Use vim keybindings in copy mode
setw -g mode-keys vi

# 将复制下来的文本发送到系统的剪贴板中
# invoke reattach-to-user-namespace every time a new window/pane opens
set-option -g default-command "reattach-to-user-namespace -l bash"

#让复制文本的操作更像 Vim
# start selecting text typing 'v' key (once you are in copy mode)
bind-key -t vi-copy v begin-selection
# copy selected text to the system's clipboard
bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"


#调整背景的配色方案
if exists('$TMUX')
  set term=screen-256color
endif
​​

#调整光标的形状
if exists('$ITERM_PROFILE')
  if exists('$TMUX')
    let &t_SI = "<Esc>[3 q"
    let &t_EI = "<Esc>[0 q"
  else
    let &t_SI = "<Esc>]50;CursorShape=1x7"
    let &t_EI = "<Esc>]50;CursorShape=0x7"
  endif
end

#调整粘贴时的文本缩进
" for tmux to automatically set paste and nopaste mode at the time pasting (as
" happens in VIM UI)
  
function! WrapForTmux(s)
  if !exists('$TMUX')
    return a:s
  endif
  
  let tmux_start = "<Esc>Ptmux;"
  let tmux_end = "<Esc>"
  
  return tmux_start . substitute(a:s, "<Esc>", "<Esc><Esc>", 'g') . tmux_end
endfunction
  
let &t_SI .= WrapForTmux("<Esc>[?2004h")
let &t_EI .= WrapForTmux("<Esc>[?2004l")
  
function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction
  
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()


#美化 Tmux 的状态栏
# 状态栏
  # 颜色
  set -g status-bg black
  set -g status-fg white
  
  # 对齐方式
  set-option -g status-justify centre
  
  # 左下角
  set-option -g status-left '#[bg=black,fg=green][#[fg=cyan]#S#[fg=green]]'
  set-option -g status-left-length 20
  
  # 窗口列表
  setw -g automatic-rename on
  set-window-option -g window-status-format '#[dim]#I:#[default]#W#[fg=grey,dim]'
  set-window-option -g window-status-current-format '#[fg=cyan,bold]#I#[fg=blue]:#[fg=cyan]#W#[fg=dim]'
  
  # 右下角
  set -g status-right '#[fg=green][#[fg=cyan]%Y-%m-%d#[fg=green]]'

tmux配置效果图

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 Tmux 介绍
  • 0x01 Tmux功能
  • 0x02 Tmux的安装
  • 0x03 Tmux的使用
  • 0x04 Tmux配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档