- A+
tmux
tmux(Terminal Multiplexer)是一个终端复用器,它允许你在一个单一终端窗口内运行和管理多个终端会话。通过tmux,我们可以创建、访问和控制多个终端窗口,并在这些窗口之间自由切换。这对于远程工作、管理多个任务和长期运行的任务非常有用。
1、安装 tmux
在 Ubuntu 上安装 tmux :
-
更新包列表:
sudo apt update
-
安装 tmux:
sudo apt install tmux
-
配置 tmux:
编辑
~/.tmux.conf
, 可以对 tmux 进行设置, 比如: 默认tmux 是不支持鼠标滚动显示内容, 鼠标选择对应的窗格, 不只是拉动分割线调整窗格大小的步骤 1:编辑 ~/.tmux.conf
nano ~/.tmux.conf
步骤 2:修改内容
这里我们把 tmux 默认的前缀按 修改成了
ctrl + a
, 默认是ctrl + b
(个人习惯ctrl + a
比较容易按, 感觉)。
下面讲的命令当中ctrl + a
默认是ctrl + b
# 设置新的前缀键为 Ctrl + a unbind C-b set-option -g prefix C-a bind-key C-a send-prefix # 启用鼠标支持 set -g mouse on
步骤3: 重新加载 tmux 配置
tmux source-file ~/.tmux.conf
2、tmux 的结构
tmux 包括三个部分
Session(会话)
定义:
- 会话 是 tmux 的最顶层容器。它代表了一个独立的终端环境,可以包含多个窗口。
- 每个会话都是独立的,意味着你可以在不同的会话之间切换,每个会话可以有自己的窗口和窗格。
特点:
- 会话可以在后台运行,允许你在会话中断开连接后仍然保留其状态,稍后可以重新连接。
- 在一个会话中,可以运行不同的任务或程序,每个会话可以配置不同的工作环境。
Window(窗口)
定义:
- 窗口 是会话中的一个虚拟终端。每个窗口可以视为一个独立的工作区域,类似于你在一个终端中打开的不同标签页。
- 一个会话可以包含多个窗口,每个窗口可以显示不同的终端会话或任务。
特点:
- 窗口之间可以快速切换,使你可以在同一个会话中方便地切换不同的工作任务。
- 每个窗口都有自己的独立终端会话和命令行环境。
Pane(窗格)
定义:
- 窗格 是窗口中的子区域。一个窗口可以被分割成多个窗格,允许你在同一个窗口中并排显示多个终端会话。
- 窗格可以通过水平或垂直分割来创建,从而在一个窗口中同时显示多个窗格。
特点:
- 每个窗格可以运行独立的程序或命令,使你可以在同一个窗口中同时处理多个任务。
- 窗格的分割和调整使你可以更高效地利用屏幕空间。
之间的关系
-
会话包含窗口:
- 一个 tmux 会话可以包含多个窗口。会话是所有窗口的容器,你可以在一个会话中创建、删除或切换窗口。
-
窗口包含窗格:
- 每个窗口可以被分割成多个窗格。窗格是窗口的组成部分,你可以在窗口中创建、调整和关闭窗格。
-
会话 → 窗口 → 窗格:
- 一个会话可以包含多个窗口,每个窗口可以包含多个窗格。这样的层级结构允许你在一个 tmux 实例中组织和管理多个任务和工作环境。
总结
- 会话 是 tmux 的最顶层结构,包含了多个窗口。(会话可以不止一个,可以创建多个会话)
- 窗口 是会话中的独立工作区域,可以进一步分割成多个窗格。
- 窗格 是窗口中的子区域,允许在同一个窗口中并排显示多个终端会话。
+---------------------------------------------------------+ | Session | | (会话) | | | | +---------------------+ +---------------------+ | | | Window 1 | | Window 2 | | | | (窗口 1) | | (窗口 2) | | | | | | | | | | +-------------+ | | +-------------+ | | | | | Pane 1 | | | | Pane 3 | | | | | | (窗格 1) | | | | (窗格 3) | | | | | +-------------+ | | +-------------+ | | | | +-------------+ | | +-------------+ | | | | | Pane 2 | | | | Pane 4 | | | | | | (窗格 2) | | | | (窗格 4) | | | | | +-------------+ | | +-------------+ | | | +---------------------+ +---------------------+ | | | +---------------------------------------------------------+
2、tmux常用命令
启动 tmux
打开终端,输入以下命令启动 tmux 会话:
tmux # 这将启动一个新的 tmux 会话,并自动进入该会话。 # 默认会创建一个 session 、 一个 window 、 一个 pane。 输入 `tmux` 后进入的是 pane。 # 当 当前widow的所有pane都关闭的时候, 当前的window会自动关闭, 当 当前session的所有window都关闭时 当前的session会自动关闭
窗格管理
-
将窗口拆分为上下两个窗格:
Ctrl + a 然后按 "
-
将窗口拆分为左右两个窗格:
Ctrl + a 然后按 %
-
在窗格之间切换:
Ctrl + a 然后按箭头键
-
关闭当前窗格:
Ctrl + d
-
复制窗格内容
1. 进入复制模式: Ctrl + a 然后按 [ 2. 使用箭头键移动光标,选择要复制的文本。可以使用 `Shift + 箭头键` 来选择多行内容。 3. 按下 `Enter` 键以复制选定的文本。 4. 在其他位置粘贴文本: Ctrl + a 然后按 ]
-
全屏 当前窗格 和 退出 当前窗格
Ctrl + a 然后按 z
会话管理
-
挂起当前会话
Ctrl + a 然后按下 d
-
选择性的打开挂起的会话
Ctrl + a 然后按 s ← → 分别控制 展开和折叠 ↑ ↓ 分别控制 上下移动
(下面的命令是在终端中输入)
-
打开之前的会话
tmux a
-
创建一个session
# 这将创建一个名字叫 mysession 的session, 并进入到这个session中 tmux new-session -s mysession # 这将创建一个名字叫 mysession 的session, 但不进入到这个session中 tmux new-session -s mysession -d tmux new-session -d -s mysession
-
显示所有的 session
tmux ls
-
进入指定的 session
tmux attach-session -t sessionname
-
关闭指定的 session
tmux kill-session -t sessionname
-
关闭所有的 session
tmux kill-service
以上就是 tmux
常用的命令,还有一些是对 窗口的操作, 但是不常用,当我们需要在一个 session 中开多个窗口的时候,完全可以再创建一个 session。
vim
vim
(Vi IMproved)是一个强大的文本编辑器,它基于经典的 vi
编辑器,并增加了许多功能和改进。
1. 基础概念
- 模式:
vim
有几种模式,最常用的是正常模式(Normal Mode)、插入模式(Insert Mode)、命令行模式(Command-Line Mode)。- 正常模式:这是
vim
的默认模式,你可以在此模式下进行文本导航和执行命令。 - 插入模式:在此模式下,你可以像在普通文本编辑器中一样输入和编辑文本。在正常模式下按
i
、I
、a
、A
等键进入插入模式。 - 命令行模式:在此模式下,你可以输入命令以执行各种操作。在正常模式下按
:
、?
、进入命令行模式。
- 正常模式:这是
模式切换:
- 从 正常模式 进入 插入模式 :按
i
、I
、a
、A
。 - 从 正常模式 进入 命令行模式 :按
:
、/
、?
。 - 从 插入模式 返回 正常模式 :按
Esc
。 - 从 命令行模式 返回 正常模式 :按
Enter
执行命令或Esc
取消命令。
它们的关系如图所示:
+-------------------+ | | | 正常模式 | | (Normal Mode) | | (默认) | +----+----------+----+ / 按 i a A 按 : / / +--------v--------+ +--------v--------+ | | | | | 插入模式 | | 命令行模式 | | (Insert Mode) | | (Command-Line | | | | Mode) | +--------+--------+ +--------+--------+ / 按 Esc 按 Esc / +----v-----+----+ | | | 正常模式 | | (Normal | | Mode) | +----------------+
1. 基础操作
1.1、光标
移动光标
h j k l: 分别控制 左右上下 ↑ ↓ ← →: 分别控制 上下左右 下面这些都是正常模式下可用: n<space>: 按下任意数字, 然后按下 space, 光标向后移动 n 位。() home 或 0: 光标移动到本行开头 end 或 $: 光标移动到本行结尾 G: 光标移动到最后一行开头 gg: 光标移动到第一行开头 n<G>: 按下任意数字n 然后按下 G, 光标移动到第n行开头, 第一行是 1G n<Enter>: 按下任意数字n 然后按下 Enter, 光标向下移动到n行
查找字符串
正常模式下输入 "/"、"?" 进入命令行模式, 然后输入 word, 回车,全文搜索匹配 "word" 字符串 /word: 向光标之下查找匹配word的字符串 ?word: 向光标之上查找匹配word的字符串 n: 查看下一个匹配"word"的字符串 N: 查看上一个匹配"word"的字符串
1.2、操作文本
v: 按下 v, 然后移动光标, 会选中文本 d: 删除选中内容,同时会复制到剪切板 dd: 删除光标所在的一整行,同时会复制到剪切板 gg d G: 删除所有内容。(按下 gg 光标移动到第一行开头, 按下 d 开始删除, 按下 G 光标移动到最后一行开头), 当然你也可以用"gg v G d" y: 复制选中内容 yy: 复制光标所在的一整行 p: 将剪切板的内容粘贴到 光标的下一个位置 或 光标所在行的下一行 u: 撤销 Ctrl + r: 取消撤销 Shift + >: 将所选内容向右移 Shift + <: 将所选内容向左移 :w : 保存 :q : 退出 :wq : 保存退出 :wq! : 强制保存退出
1.3、其他
:set nu : 显示行号 :set nonu : 不显示行号 gg = G : 格式化全部代码。 (按下gg回到开头, = 格式化代码, G回到最后一行) == : 格式化光标所在行的代码 :set hlsearch :noh : 关闭查找关键词高亮 Ctrl + q: 取消当前正在执行的命令 :set paste : 设置成粘贴模式 :set nopaste : 取消粘贴模式
2. 配置文件
以下是一个常用的 vim
配置文件内容示例,这些配置可以提升 vim
的使用体验。
你可以在用户的根目录下创建~/.vimrc
文件, 然后把下面内容粘贴进去就行了
# 输入下面命令, 然后右键把 vimrc 内容粘贴进来 nano ~/.vimrc # 保存 Ctrl + O 然后回车 # 退出 Ctrl + x
.vimrc 文件内容
" 显示行号 set number " 高亮当前行 set cursorline " 显示行号和列号 set ruler " 启用语法高亮 syntax on " 启用文件类型检测和自动缩进 filetype plugin indent on " 使用空格而不是制表符进行缩进 set expandtab " 设置缩进宽度为 4 个空格 set shiftwidth=4 set tabstop=4 " 启用自动缩进 set autoindent " 启用智能缩进 set smartindent " 显示匹配括号 set showmatch " 启用搜索高亮 set hlsearch " 启用实时搜索 set incsearch " 允许使用系统剪贴板 set clipboard=unnamedplus " 使搜索不区分大小写 set ignorecase " 在搜索时考虑大小写 set smartcase " 显示搜索提示 set showcmd " 启用拆分窗口 set splitbelow set splitright " 设置更好的撤销功能 set undofile set undodir=~/.vim/undodir " 更好地显示长行 set wrap " 启用折叠功能 set foldmethod=syntax set foldlevelstart=99 " 配置颜色方案(你可以选择自己喜欢的主题) colorscheme desert " 配置状态栏 set laststatus=2 " 增强插入模式下的体验 set backspace=indent,eol,start " 自动保存文件 set autowrite " 显示 tab 的宽度 set list set listchars=tab:>-,trail:.,eol:$ " 在每行末尾显示字符 set showbreak=+++ " 高亮当前行 hi CursorLine cterm=NONE ctermbg=darkgray " 设置历史记录 set history=1000 " 自动缩进格式化 set formatoptions+=cro