tmux和vim的基本操作

Tmux

Tmux 的核心功能

多窗口和多面板

  • 在一个终端中创建多个窗口(Windows),每个窗口可以运行不同的任务。

  • 在每个窗口中,可以进一步分割成多个面板(Panes),实现分屏操作。

会话管理

  • Tmux 会话(Session)可以在后台运行,即使断开 SSH 连接,会话仍然保持活动状态。

  • 重新连接后,可以恢复之前的会话,继续工作。

快捷键操作

  • Tmux 通过快捷键实现快速切换窗口、面板和会话。

脚本化操作

  • Tmux 支持

  • 通过脚本自动化操作,适合批量任务和复杂工作流。


Tmux 的基本概念

  • 会话(Session):一个 Tmux 会话是一个独立的终端环境,可以包含多个窗口。

  • 窗口(Window):一个窗口类似于一个标签页,可以运行一个或多个面板。

  • 面板(Pane):一个面板是窗口中的一个分屏区域,可以运行独立的命令。


Tmux 的安装

在大多数 Linux 发行版中,可以通过包管理器安装 Tmux:

Debian/Ubuntu:

cpp 复制代码
sudo apt install tmux

CentOS/Red Hat:

cpp 复制代码
sudo yum install tmux

macOS(使用 Homebrew):

bash 复制代码
brew install tmux

Tmux 的基本使用

1. 启动 Tmux

  • 启动一个新的 Tmux 会话:

    bash 复制代码
    tmux
  • 启动一个命名会话session:

    bash 复制代码
    tmux new -s 会话名称

2. 快捷键前缀

Tmux 的所有快捷键都需要先按 前缀键 (默认是 Ctrl + b),然后按其他键。例如:

  • Ctrl + b + c:创建一个新窗口。

  • Ctrl + b + d:分离当前会话(会话在后台运行)。


3. 常用快捷键

会话操作
  • Ctrl + b + d:分离当前会话。

  • Ctrl + b + c:在Session中创建一个新的window

  • tmux attach -t 会话名称:重新连接到指定会话。

  • tmux ls:列出所有会话。

  • tmux kill-session -t 会话名称:关闭指定会话。

窗口操作
  • Ctrl + b + c:创建一个新窗口。

  • Ctrl + b + d:挂起当前Session

  • tmux a或者tmux attach:恢复Session

  • Ctrl + b + n:切换到下一个窗口。

  • Ctrl + b + p:切换到上一个窗口。

  • Ctrl + b + 数字:切换到指定编号的窗口。

  • Ctrl + b + &:关闭当前窗口。

  • Ctrl + b + s:选择其他Session。(上下方向键选择Session,左右方向键选择展开或收起)

  • Ctrl + b + w:选择其他Window.(方法和上述session选择相同)
面板操作
  • Ctrl + b + %:垂直分割面板。
  • Ctrl + b + ":水平分割面板。
  • Ctrl + b + 方向键:切换到指定方向的面板。
  • Ctrl + b + x:关闭当前面板。

  • Ctrl + b + z:最大化当前面板(再按一次恢复)。


4. 自定义配置

Tmux 的配置文件是 ~/.tmux.conf,可以通过编辑该文件自定义 Tmux 的行为。例如:

bash 复制代码
# 将前缀键改为 Ctrl + a
unbind C-b
set-option -g prefix C-a
bind C-a send-prefix

# 启用鼠标支持
set -g mouse on

# 设置面板分割快捷键
bind | split-window -h
bind - split-window -v

# 设置状态栏颜色
set -g status-bg blue
set -g status-fg white

修改配置文件后,重新加载配置:

cpp 复制代码
tmux source-file ~/.tmux.conf

5.Tmux的复制

我们会发现在tmux中复制好像不是那么方便

我们通常采用按住shift键再用鼠标拖拽选中


Vim

简介

Vim(Vi Improved)是一款功能强大且高度可定制的文本编辑器,最初由Bram Moolenaar开发,是对经典的vi编辑器的改进版本。尽管Vim的学习曲线较为陡峭,但它在程序员和高级用户中非常受欢迎,尤其是在Linux和Unix环境中。以下是Vim的主要功能和优点:


1. 功能强大

  • 多模式编辑:Vim采用多模式编辑方式,包括普通模式(Normal Mode)、插入模式(Insert Mode)、命令模式(Command Mode)和可视模式(Visual Mode)。这种模式划分使得编辑操作更加高效,用户可以通过快捷键快速切换模式并执行复杂的编辑任务。

  • 丰富的文本操作 :Vim提供了大量的文本操作命令,如复制(yank)、粘贴(put)、删除(delete)、替换(change)、查找(search)和替换(substitute)等。这些命令可以通过组合键快速执行,大大提高了编辑效率。

  • 宏录制与回放:用户可以录制一系列操作并将其保存为宏,然后通过简单的命令重复执行这些操作。这对于重复性任务非常有用,可以节省大量时间。

  • 多窗口和多标签支持 :Vim支持多窗口(split windows)和多标签(tabs),允许用户同时打开多个文件,并在它们之间快速切换。这使得代码对比和多文件编辑变得更加方便。

  • 语法高亮和代码补全:Vim内置了对多种编程语言的语法高亮支持,并且可以通过插件实现智能代码补全。这对于编写代码非常有帮助,可以提高开发效率并减少错误。

  • 强大的正则表达式支持:Vim的查找和替换功能支持复杂的正则表达式,用户可以轻松实现复杂的文本匹配和替换操作。


2. 高度可定制

  • 配置文件 :Vim允许用户通过.vimrc配置文件自定义编辑器的行为,包括键绑定、颜色方案、缩进设置、插件管理等。用户可以根据自己的需求和习惯调整Vim的各个方面。

  • 插件生态系统 :Vim拥有丰富的插件生态系统,用户可以通过安装插件来扩展其功能。例如,vim-plug是一个流行的插件管理器,可以帮助用户轻松安装和管理插件。常见的插件包括代码补全插件(如YouCompleteMe)、项目管理插件(如NERDTree)和语法检查插件(如Syntastic)。

  • 自定义命令和函数:用户可以使用Vim脚本语言(Vimscript)编写自定义命令和函数,实现个性化的编辑功能。这使得Vim可以适应几乎任何用户的特定需求。


3. 轻量级和跨平台

  • 轻量级:Vim是一个轻量级的文本编辑器,启动速度快,占用系统资源少。它不需要复杂的图形界面或大量的内存,因此在资源受限的环境中表现良好。

  • 跨平台支持:Vim可以在多种操作系统上运行,包括Linux、Unix、macOS和Windows。用户可以在不同的平台上使用相同的编辑器,无需重新学习。

  • 终端集成 :Vim可以在终端中运行,也可以作为独立的图形界面应用程序运行(如gvim)。这使得用户可以根据自己的喜好选择使用方式。


4. 提高效率

  • 键盘快捷键:Vim的所有操作都可以通过键盘快捷键完成,无需频繁切换到鼠标。这使得用户可以保持双手在键盘上,从而显著提高编辑效率。

  • 全局操作:Vim允许用户对整个文件或选定区域执行全局操作,例如一次性替换所有匹配的文本。这比逐个修改要高效得多。

  • 命令行模式:Vim的命令行模式允许用户输入复杂的命令来执行各种操作,例如批量替换、文件读写等。这使得Vim可以处理复杂的文本操作,而无需离开编辑器。


5. 社区支持

  • 活跃的社区:Vim拥有一个庞大而活跃的用户社区,用户可以在社区中找到大量的教程、配置文件和插件。社区成员也经常分享经验和技巧,帮助新用户快速上手。

  • 丰富的文档和资源 :Vim的官方文档非常详细,用户可以通过:help命令随时查阅。此外,互联网上也有大量的Vim教程、博客和视频资源,可以帮助用户学习和提高。

模式

普通模式(Normal Mode)

  • 默认进入的模式,用于导航和操作文本。

  • Esc 键可以随时从其他模式回到普通模式。

插入模式(Insert Mode)

  • 用于输入和编辑文本。

  • 从普通模式按 iao 等键进入插入模式。

命令模式(Command Mode)

  • 用于执行保存、退出等命令。

  • 从普通模式按 : 进入命令模式。


基本操作

1. 启动和退出 Vim

  • 启动 Vim:

    bash 复制代码
    vim 文件名  # 打开或创建文件
  • 退出 Vim:

    • 普通模式下按 :q 退出(如果文件未修改)。

    • 普通模式下按 :q! 强制退出,不保存修改。

    • 普通模式下按 :wq 保存并退出。

    • 普通模式下按 :x 或**ZZ** 保存并退出。


2. 光标移动

  • 基本移动

    • h:左移

    • j:下移

    • k:上移

    • l:右移

  • 按单词移动

    • w:移动到下一个单词的开头。

    • b:移动到上一个单词的开头。

    • e:移动到当前单词的末尾。

  • 行内移动

    • 0:移动到行首。

    • $:移动到行尾。

    • ^:移动到行首第一个非空白字符。

    • n【space】:往后移n个字符 (支持自动换行)

  • 跨行移动

    • gg:移动到文件开头。

    • G:移动到文件末尾。

    • :n:跳转到第 n 行(例如 :10 跳转到第 10 行)。


3. 插入和编辑

  • 进入插入模式

    • i:在光标前插入。

    • a:在光标后插入。

    • o:在当前行下方插入新行。

    • O:在当前行上方插入新行。

  • 删除

    • x:删除光标处的字符。

    • dw:删除从光标到下一个单词开头的字符。

    • dd:删除整行。

    • D:删除从光标到行尾的内容。

  • 复制和粘贴

    • yy:复制当前行。

    • yw:复制当前单词。

    • p:粘贴到光标后。

    • P:粘贴到光标前。

  • 撤销和重做

    • u:撤销上一次操作。

    • Ctrl + r:取消撤销操作。

  • 整体移动

    • 大于号 >:将选中的文本整体向右缩进一次
    • 小于号 <:将选中的文本整体向左缩进一次

4. 搜索和替换

  • 搜索

    • /关键词:向下搜索(例如 /hello)。

    • ?关键词:向上搜索。

    • n 跳转到下一个匹配项,按 N 跳转到上一个匹配项。

  • 替换

    • :n1,n2s/word1/word2/g:n1与n2为数字,在第n1行与n2行之间寻找word1这个字符串,并将字符串替换

    • :s/旧内容/新内容:替换当前行的第一个匹配项。

    • :s/旧内容/新内容/g:替换当前行的所有匹配项。

    • :1,$s/word1/word2/g:将全文的word1替换为word2

    • :1,$s/word1/word2/gc:将全文的word1替换为word2,且在替换前要求用户确认。

    • :s/旧内容/新内容/gc:替换当前行的所有匹配项,且在替换前需要用户确认。

  • :%s/旧内容/新内容/g:替换整个文件中的所有匹配项。

5. 保存和退出

  • :w:保存文件。

  • :w文件名:另存为指定文件。

  • :q:退出 Vim。

  • :q!:强制退出,不保存修改。

  • :wq:x:保存并退出。

  • gg=G:代码格式化(会占用很大带宽)


6. 分屏和多文件编辑

  • 分屏

    • :sp 文件名:水平分屏打开文件。

    • :vsp 文件名:垂直分屏打开文件。

    • Ctrl + w + h/j/k/l:在分屏间切换。

  • 多文件编辑

    • :e 文件名:打开另一个文件。

    • :bn:切换到下一个文件。

    • :bp:切换到上一个文件。

    • :bd:关闭当前文件。


7. 其他实用命令

  • 显示行号

    • :set number:显示行号。

    • :set nonumber:隐藏行号。

  • 语法高亮

    • :syntax on:启用语法高亮。

    • syntax off:关闭语法高亮。

    • :noh 关闭查找关键词高亮:

  • 查看帮助

    • :help:打开帮助文档。

    • help 命令:查看特定命令的帮助(例如 :help :wq)。

    • set paste:设置成粘贴模式,取消代码自动缩进

    • set nooaste:取消粘贴模式,开启代码自动缩进

8.可视模式

  • 进入方式 :按下 v 键。

  • 功能 :允许用户通过方向键(hjkl)或鼠标选择文本的任意部分。

  • 用途:适合选择不规则的文本片段,例如单词、句子或代码片段。

  • 操作示例

    • v 进入普通可视模式。

    • 使用方向键选择文本。

    • d 删除选中的文本,或按 y 复制选中的文本。

  • **退出可视模式:**按两下Esc

相关推荐
千墨6 分钟前
VMware安装Centos 9虚拟机+设置共享文件夹+远程登录
linux·运维·centos
ChinaRainbowSea1 小时前
1. Linux下 MySQL 的详细安装与使用
linux·数据库·sql·mysql·adb
老友@1 小时前
OnlyOffice:前端编辑器与后端API实现高效办公
前端·后端·websocket·编辑器·onlyoffice
致奋斗的我们1 小时前
Nginx反向代理及负载均衡
linux·运维·mysql·nginx·负载均衡·shell·openeluer
百锦再2 小时前
在Linux上创建一个Docker容器并在其中执行Python脚本
linux·python·docker
忧虑的乌龟蛋2 小时前
嵌入式 Linux:使用设备树驱动GPIO全流程
linux·服务器·嵌入式·imx6ull·gpio·点灯·pinctrl
朝九晚五ฺ2 小时前
【Linux探索学习】第三十弹——线程互斥与同步(上):深入理解线程保证安全的机制
linux·运维·学习
小林熬夜学编程2 小时前
【MySQL】第八弹---全面解析数据库表的增删改查操作:从创建到检索、排序与分页
linux·开发语言·数据库·mysql·算法
m0_748236113 小时前
Spring Boot 实战:轻松实现文件上传与下载功能
linux·spring boot·后端
鱼不如渔3 小时前
leetcode刷题第十三天——二叉树Ⅲ
linux·算法·leetcode