Vim

功能

  • 命令行文本编辑器:Vim 是一个强大的命令行文本编辑器,适用于多种操作系统。
  • 自动识别编程语言:根据文件扩展名自动识别编程语言,支持代码高亮、自动缩进等功能。
  • 使用方式
  • 命令:vim filename
  • 如果文件存在,则打开该文件;如果文件不存在,则创建一个新文件并命名为 filename

模式

Vim 包含三种主要模式:

  1. 一般命令模式(默认模式):
  • 用于执行复制、粘贴、删除等操作。
  • 通过键盘输入特定命令实现不同功能。
  1. 编辑模式
  • i 从一般命令模式进入编辑模式,可输入文本。
  • ESC 退出编辑模式,返回一般命令模式。
  1. 命令行模式
  • 在一般命令模式下按 :, /, 或 ? 进入。
  • 显示在屏幕底部,用于查找、替换、保存、退出或配置编辑器。

操作

以下为常用操作命令,均在 一般命令模式 下执行,除非特别说明:

光标移动

  • h左箭头:光标左移一个字符。
  • j下箭头:光标下移一行。
  • k上箭头:光标上移一行。
  • l右箭头:光标右移一个字符。
  • n<Space>:光标右移 n 个字符(n 为数字)。
  • 0Home 键:光标移至本行开头。
  • $End 键:光标移至本行末尾。
  • G:光标移至文件最后一行。
  • :nnG:光标移至第 n 行(n 为数字)。
  • gg:光标移至文件第一行(等同于 1G)。
  • n<Enter>:光标下移 n 行(n 为数字)。

查找

  • /word:向下查找第一个匹配 word 的字符串。
  • ?word:向上查找第一个匹配 word 的字符串。
  • n:重复上一次查找(同方向)。
  • N:反向重复上一次查找。
  • :noh:关闭查找关键词高亮。

替换

  • :n1,n2s/word1/word2/g:在第 n1 行到第 n2 行间,将 word1 替换为 word2
  • :1,$s/word1/word2/g:全文将 word1 替换为 word2
  • :1,$s/word1/word2/gc:全文替换 word1word2,替换前逐一确认。

编辑

  • i:进入编辑模式(在光标前插入)。
  • ESC:退出编辑模式,返回一般命令模式。
  • v:进入可视模式,选择文本。
  • d:删除选中文本。
  • dd:删除当前行。
  • y:复制选中文本。
  • yy:复制当前行。
  • p:粘贴复制的内容到光标后/下一行。
  • u:撤销上一步操作。
  • Ctrl + r:恢复撤销的操作。
  • >:选中文本右缩进一次。
  • <:选中文本左缩进一次。
  • gg=G:格式化全文代码(自动调整缩进)。

保存与退出

  • :w:保存文件。
  • :w!:强制保存文件。
  • :q:退出 Vim。
  • :q!:强制退出,不保存更改。
  • :wq:保存并退出。

配置

  • :set paste:进入粘贴模式,禁用自动缩进,便于粘贴代码。
  • :set nopaste:取消粘贴模式,恢复自动缩进。
  • :set nu:显示行号。
  • :set nonu:隐藏行号。

其他

  • Ctrl + q:当 Vim 卡死时,取消当前执行的命令。

异常处理

  • .swp 文件问题
  • 每次编辑文件时,Vim 会生成一个 .filename.swp 临时文件。
  • 若打开文件时提示 .swp 文件已存在,说明文件可能正在被其他 Vim 实例编辑。
  • 解决方法
  1. 找到正在编辑该文件的 Vim 进程并关闭。
  2. 直接删除 .filename.swp 文件(确保无其他进程编辑该文件)。
  • 注意事项:删除 .swp 文件前,确认没有其他 Vim 实例正在编辑,避免丢失未保存的更改。

注意事项

  • 区分大小写:Vim 命令对大小写敏感,如 Gg 功能不同。
  • 多键组合:部分命令需连续输入(如 dd, yy),确保快速准确输入。
  • 保存习惯:编辑完成后,养成使用 :w 保存的习惯,避免意外退出丢失更改。
  • 学习曲线:Vim 操作需练习,建议初学者使用 vimtutor(命令行输入 vimtutor)学习基础操作。
  • 配置文件:可通过编辑 ~/.vimrc 自定义 Vim 设置,如默认显示行号、设置主题等。

Nano

模式

Nano 的操作较为直观,没有 Vim 那样的复杂模式切换,主要在单一模式下操作:

  • 默认编辑模式:启动 Nano 后直接进入编辑模式,可立即输入或编辑文本。
  • 命令模式:通过快捷键(如 Ctrl 组合键)执行保存、退出、查找等操作,快捷键提示显示在屏幕底部。

操作

Nano 的操作主要通过 CtrlAlt 组合键完成,常用命令如下(^ 表示 Ctrl 键,M- 表示 Alt 键):

光标移动

  • ^F右箭头:光标右移一个字符。
  • ^B左箭头:光标左移一个字符。
  • ^N下箭头:光标下移一行。
  • ^P上箭头:光标上移一行。
  • ^A:光标移至本行开头。
  • ^E:光标移至本行末尾。
  • M-G:跳转到指定行(输入行号后回车)。
  • ^Y:向上翻页。
  • ^V:向下翻页。

查找

  • ^W:查找字符串(输入字符串后回车)。
  • M-W:重复上一次查找(向下)。
  • ^W 后按 ^R:反向查找(向上)。
  • ^T(部分版本):在查找时启用正则表达式。

替换

  • ^W 后按 M-R:进入替换模式,输入要替换的字符串和新字符串。
  • 替换时可选择逐一确认或全部替换。

编辑

  • 直接输入:Nano 默认处于编辑模式,可直接输入文本。
  • ^D:删除光标所在位置的字符。
  • ^K:剪切当前行(删除整行)。
  • ^U:粘贴剪切的行到光标位置。
  • M-U:撤销上一步操作。
  • M-E:恢复撤销的操作。
  • ^J:格式化当前段落(调整文本对齐,适用于文本文件)。
  • M-}:增加缩进(选中文本后)。
  • M-{:减少缩进(选中文本后)。

保存与退出

  • ^O:保存文件。
  • ^X:退出 Nano(若文件有更改,会提示是否保存)。
  • M-D:强制保存(覆盖已有文件,部分版本支持)。

配置

  • M-N:显示/隐藏行号。
  • M-P:启用/禁用软换行(文本自动换行)。
  • M-8:启用/禁用自动缩进。
  • ^G:显示帮助文档,列出所有快捷键。

其他

  • ^C:显示当前光标位置(行、列等信息)。
  • M-/:取消当前操作(若 Nano 卡住)。

异常处理

  • .nano 文件问题
  • Nano 编辑文件时会创建一个临时文件(通常以 .save.nano 结尾)。
  • 若打开文件时提示临时文件存在,可能是上次编辑未正常退出。
  • 解决方法
  1. Nano 会提示是否恢复临时文件,选择 Y(是)以恢复未保存的内容。
  2. 若不需要恢复,可选择 N(否),或手动删除临时文件(通常位于 ~/.nano/ 目录)。
  • 注意事项:恢复临时文件前,确认是否需要保存上次未保存的更改,以免覆盖。

注意事项

  • 快捷键提示:Nano 界面底部始终显示常用快捷键(如 ^X Exit 表示 Ctrl+X 退出),方便初学者使用。
  • 区分大小写:查找和替换操作默认区分大小写,可通过 ^W 后按 M-C 切换大小写敏感模式。
  • 配置文件:可通过编辑 ~/.nanorc 自定义 Nano 设置,如默认显示行号、启用语法高亮等。
  • 学习资源:Nano 内置帮助文档(^G)是快速学习的好工具,建议初学者阅读。
  • 局限性:Nano 功能较 Vim 简单,适合轻量级编辑,不支持复杂脚本或多文件操作。
  • 版本差异:不同版本的 Nano 可能支持不同快捷键或功能(如正则表达式),建议检查版本(nano --version)。

Tmux

核心概念

Tmux 的结构主要包含三个层级:

  1. 会话 (Session)
    • 一个会话是 Tmux 管理的最高层级,可以看作是一个独立的工作区。
    • 每个会话包含一个或多个窗口。
  2. 窗口 (Window)
    • 一个窗口占据整个终端屏幕,类似于应用程序中的一个标签页。
    • 每个窗口包含一个或多个窗格。
  3. 窗格 (Pane)
    • 一个窗格是窗口中的一个分割区域,它是一个独立的终端 Shell。
    • 用户可以在一个窗口内创建多个窗格,实现分屏效果。

Tmux 外部命令 (从 Shell 执行)

注意:以下命令直接在的常规终端(例如 Bash, Zsh)中输入并执行,而不是在 Tmux 会话内部。

创建会话 (Creating Sessions)

  • tmux new -s <session_name>:创建一个名为 <session_name> 的新会话并立即进入。
  • tmux new:创建一个以数字自动编号的新会话。
  • tmux new -d -s <session_name>:在后台创建一个名为 <session_name> 的新会话,但不立即进入。这在系统启动脚本中非常有用。

连接会话 (Attaching to Sessions)

  • tmux ls:列出所有正在后台运行的 Tmux 会话及其信息。
  • tmux attach -t <session_name>:连接(Attach)到名为 <session_name> 的已存在会话。
  • tmux a -t <session_name>attach 命令的简写形式,功能完全相同。
  • tmux attach:如果当前只有一个正在运行的会话,可省略会话名,直接连接。

关闭会话 (Killing Sessions)

  • tmux kill-session -t <session_name>:关闭名为 <session_name> 的指定会话。
  • tmux kill-session -a:关闭所有正在运行的会话。
  • tmux kill-server:关闭所有会话并完全终止 Tmux 服务进程。
    • 警告:这是一个彻底的操作,所有会话及其内部运行的程序都将被立即终止,未保存的工作会丢失。

操作

所有操作都需要先按下 前缀键 (Prefix),Tmux 的默认前缀键是 Ctrl + b。按下前缀键后松开,再按后续的命令键。

会话管理 (Session)

  • tmux new -s <session_name>:创建一个名为 <session_name> 的新会话。
  • tmux attach -t <session_name>tmux a -t <session_name>:重新连接到名为 <session_name> 的会话。
  • tmux ls:列出所有正在运行的 Tmux 会话。
  • Ctrl + b + s:在 Tmux 内部以交互式列表显示所有会话,并可进行切换。
  • Ctrl + b + d:分离 (Detach) 当前会话,返回到常规终端(会话在后台继续运行)。
  • Ctrl + b + $:重命名当前会话。
  • tmux kill-session -t <session_name>:在 Tmux 外部关闭指定的会话。
  • tmux kill-server:关闭所有会话并终止 Tmux 服务。

窗口管理 (Window)

  • Ctrl + b + c:在当前会话中创建一个新窗口。
  • Ctrl + b + w:以交互式列表显示当前会话的所有窗口,并可进行切换。
  • Ctrl + b + p:切换到上一个窗口。
  • Ctrl + b + n:切换到下一个窗口。
  • Ctrl + b + 0-9:根据窗口编号快速切换到指定窗口(例如 Ctrl + b + 1 切换到 1 号窗口)。
  • Ctrl + b + ,:重命名当前窗口。
  • Ctrl + b + &:关闭当前窗口(会进行确认)。

窗格管理 (Pane)

  • Ctrl + b + ":将当前窗格水平分割(上下布局)。
  • Ctrl + b + %:将当前窗格垂直分割(左右布局)。
  • Ctrl + b + 方向键 (↑, ↓, ←, →):在不同窗格之间切换。
  • Ctrl + b + o:按顺序在当前窗口的窗格间循环切换。
  • Ctrl + b + x:关闭当前窗格(会进行确认)。
  • Ctrl + b + z:将当前窗格最大化/恢复原状 (Zoom)。
  • Ctrl + b + Space:在预设的窗格布局之间切换。
  • Ctrl + b + q:短暂显示所有窗格的编号,然后按下编号可快速切换到对应窗格。
  • Ctrl + b + {:将当前窗格与上一个窗格交换位置。
  • Ctrl + b + }:将当前窗格与下一个窗格交换位置。
  • Ctrl + b + Alt + 方向键:按住 Ctrl + b 不放,同时按 Alt 和方向键,可以调整窗格大小。

其他

  • Ctrl + b + t:在当前窗格显示一个大时钟。
  • Ctrl + b + [:进入复制模式 (Copy Mode)。
    • 在此模式下,可以使用类似 Vim 的键位移动光标、滚动屏幕。
    • Space 开始选择,移动光标后按 Enter 复制所选内容。
    • q 退出复制模式。
  • Ctrl + b + ]:粘贴最近一次复制的内容。

Config

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# ~/.tmux.conf
# tmux source-file ~/.tmux.conf 使配置生效
set -g mouse on
set -g default-terminal "xterm-256color"
set -ga terminal-overrides ",xterm-256color:Tc:clipboard"
set -g status-position top
set -g status-bg default
set -g status-fg white
set -g status-left '#[fg=brightcyan]#S'
set -g status-left-length 20

# 右下角
set -g status-right '#[fg=brightcyan][%H:%M]'

# 状态栏颜色
set -g status-style fg=brightgreen

# 消息颜色
set -g message-style fg=brightgreen

# 默认窗口标题颜色
set -w -g window-status-format '#[dim]#I:#W'

# 当前窗口标题颜色
set -w -g window-status-current-format '#[fg=brightcyan,bold]#I:#W'

# pane border
set -g display-panes-active-colour brightgreen
set -g display-panes-colour brightyellow

异常处理

  • 无法连接会话
    • 问题:使用 tmux attach 时提示 “no sessions” 或找不到指定的会话。
    • 解决方法
      1. 先使用 tmux ls 确认会话是否真的存在以及其确切名称。
      2. 如果会话意外终止,需要重新使用 tmux new -s <session_name> 创建。
  • 前缀键冲突
    • 问题Ctrl + b 可能与其他应用程序(如某些 IDE 的快捷键)冲突。
    • 解决方法
      1. 可以通过编辑 ~/.tmux.conf 配置文件来修改前缀键。例如,将 set -g prefix C-a 添加到文件中,可以将前缀键改为 Ctrl + a
      2. 修改后需要重新加载配置 (tmux source-file ~/.tmux.conf) 或重启 Tmux 服务。

注意事项

  • 前缀键操作:几乎所有 Tmux 命令都需要先按下前缀键 Ctrl + b。这是一个组合操作,即先按下 Ctrl + b松开,然后再按下一个命令键(例如 c, d, % 等)。
  • 鼠标模式:Tmux 支持鼠标操作(如选择窗口、调整窗格大小),但默认通常是关闭的。可以在 ~/.tmux.conf 中添加 set -g mouse on 来开启它,这对于新手非常友好。
  • 配置文件:通过创建和编辑 ~/.tmux.conf 文件,可以高度自定义 Tmux 的行为和外观,例如更改快捷键、设置状态栏样式、颜色主题等。
  • 嵌套会话:应避免在 Tmux 会话中再次启动一个新的 Tmux 会- 话。这会导致前缀键命令混乱,因为内部和外部的 Tmux 实例都会尝试捕获它。如果需要操作外部会话,可以先分离内部会话。