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

相关推荐
longze_73 小时前
Ubuntu连接不上网络问题(Network is unreachable)
linux·服务器·ubuntu
Dirschs4 小时前
【Ubuntu22.04安装ROS Noetic】
linux·ubuntu·ros
qianshanxue114 小时前
ubuntu 操作记录
linux
AmosTian6 小时前
【系统与工具】Linux——Linux简介、安装、简单使用
linux·运维·服务器
这我可不懂9 小时前
Python 项目快速部署到 Linux 服务器基础教程
linux·服务器·python
车车不吃香菇9 小时前
java idea 本地debug linux服务
java·linux·intellij-idea
tan77º10 小时前
【Linux网络编程】Socket - TCP
linux·网络·c++·tcp/ip
kfepiza10 小时前
Linux的`if test`和`if [ ]中括号`的取反语法比较 笔记250709
linux·服务器·笔记·bash
CodeWithMe11 小时前
【Note】《深入理解Linux内核》 第十九章:深入理解 Linux 进程通信机制
linux·运维·php
vvw&12 小时前
Linux 中的 .bashrc 是什么?配置详解
linux·运维·服务器·chrome·后端·ubuntu·centos