Linux 常用快捷键及文本编辑器

一、终端/Shell 快捷键

1.1 光标移动

bash 复制代码
# 基本移动
Ctrl + A          # 移动到行首
Ctrl + E          # 移动到行尾
Ctrl + B          # 向左移动一个字符(同左箭头)
Ctrl + F          # 向右移动一个字符(同右箭头)
Alt + B           # 向左移动一个单词
Alt + F           # 向右移动一个单词

# 跳转
Ctrl + XX         # 在当前光标和行首之间跳转
Esc + T           # 交换光标前两个单词的位置

1.2 编辑操作

bash 复制代码
# 删除
Ctrl + H          # 删除光标前一个字符(同Backspace)
Ctrl + D          # 删除光标后一个字符(如果没有字符则退出终端)
Ctrl + W          # 删除光标前一个单词
Alt + D           # 删除光标后一个单词
Ctrl + U          # 删除从光标到行首的内容
Ctrl + K          # 删除从光标到行尾的内容
Ctrl + Y          # 粘贴刚才删除的内容

# 复制粘贴(部分终端支持)
Ctrl + Shift + C   # 复制选中文本
Ctrl + Shift + V   # 粘贴文本

# 其他编辑
Ctrl + T          # 交换光标前后两个字符
Ctrl + _          # 撤销上一次编辑操作

1.3 历史命令

bash 复制代码
Ctrl + P          # 上一个命令(同上箭头)
Ctrl + N          # 下一个命令(同下箭头)
Ctrl + R          # 反向搜索历史命令
  # 按Ctrl+R后输入关键词搜索
  # 再次按Ctrl+R继续向前搜索
  # Ctrl+G退出搜索
Ctrl + S          # 正向搜索历史命令(需先禁用stty -ixon)
Alt + .           # 插入上一个命令的最后一个参数
Alt + 0-9 Alt + . # 插入历史命令的第N个参数
!!                # 执行上一条命令
!$                # 上一条命令的最后一个参数
!string           # 执行最近以string开头的命令

1.4 进程控制

bash 复制代码
Ctrl + C          # 终止当前运行的程序
Ctrl + Z          # 暂停当前程序(挂起)
  # 暂停后可以使用:
  fg              # 恢复前台运行
  bg              # 后台继续运行
  jobs            # 查看后台任务
Ctrl + D          # 发送EOF(文件结束符),退出当前shell
Ctrl + L          # 清屏(同clear命令)
Ctrl + S          # 暂停屏幕输出(需配合Ctrl+Q恢复)
Ctrl + Q          # 恢复屏幕输出

1.5 标签页与窗口

bash 复制代码
# 通用终端快捷键
Ctrl + Shift + T   # 新建标签页
Ctrl + Shift + W   # 关闭当前标签页
Ctrl + PageUp      # 切换到上一个标签页
Ctrl + PageDown    # 切换到下一个标签页
Ctrl + Shift + N   # 新建终端窗口
Ctrl + Shift + Q   # 关闭终端窗口

# GNOME Terminal特有
F11               # 全屏切换
Ctrl + Shift + F   # 搜索
Ctrl + Shift + +   # 放大字体
Ctrl + -          # 缩小字体
Ctrl + 0          # 恢复默认字体大小

1.6 自动补全与帮助

bash 复制代码
Tab               # 自动补全命令/文件名/路径
Tab Tab           # 显示所有可能的补全选项
Alt + ?           # 显示所有可能的补全(同按两次Tab)
Alt + *           # 插入所有可能的补全
man 命令          # 查看命令手册
命令 --help       # 查看命令帮助
Ctrl + Alt + H    # 在终端显示快捷键帮助(部分终端)

二、Vim 文本编辑器

2.1 Vim的基本概念

Vim是一个模式编辑器,主要分为四种模式,其模式架构如下:

bash 复制代码
普通模式 (Normal Mode)
  ├── 插入模式 (Insert Mode)
  ├── 可视模式 (Visual Mode)
  └── 命令模式 (Command-line Mode)

2.1.1 普通模式 (Normal Mode)

普通模式是Vim的默认模式,当打开Vim时,就处于普通模式。在这个模式下,键盘上的每个键都是一个命令,而不是直接输入字符。

  • 特点:

    • 键盘按键执行命令,而非输入文本。
    • 可以高效地移动、编辑文本。
    • 是其他所有模式的"家"模式。
    • 大多数时间应该停留在此模式。
  • 如何进入普通模式

    bash 复制代码
    " 启动Vim时默认进入普通模式
    vim filename.txt       " 启动后即为普通模式
    
    " 从其他模式返回普通模式:
    ESC                    " 最常用,左上角键
    Ctrl+[                 " 替代ESC,更易按到(无需移动手)
    Ctrl+C                 " 在某些情况下也有效(但不是所有情况)

2.1.2 插入模式(Insert Mode)

在插入模式下,可以像在普通文本编辑器中一样输入文本。

  • 如何进入插入模式

    在普通模式下,按以下键可以进入插入模式:

    • i:在光标前插入
    • I:在行首插入
    • a:在光标后插入
    • A:在行尾插入
    • o:在当前行下方新建一行并插入
    • O:在当前行上方新建一行并插入
  • 如何退出插入模式

    • Esc键或Ctrl+[返回普通模式。

2.1.3 可视模式(Visual Mode)

可视模式用于选择文本。可以选择字符、行或块,然后对选中的文本执行操作,比如删除、复制、替换等。

  • 如何进入可视模式

    在普通模式下,按以下键进入不同的可视模式:

    • v:字符可视模式(以字符为单位选择)
    • V:行可视模式(以行为单位选择)
    • Ctrl+v:块可视模式(矩形选择)
  • 在可视模式中可以:

    • 移动光标来调整选择区域。
    • 对选中的文本执行命令,比如d(删除)、y(复制)、c(修改)等。
  • 如何退出可视模式

    • Esc键或v、V、Ctrl+v(如果当前已经是对应的可视模式,则按一次退出)返回普通模式。

2.1.4 命令模式(Command Mode)

在命令模式下,可以输入命令来执行各种操作,比如保存文件、退出Vim、搜索替换等。

  • 如何进入命令模式

    在普通模式下,按:键进入命令模式。

  • 常用命令:

    • 保存::w
    • 退出::q
    • 保存并退出::wq:x
    • 强制退出(不保存)::q!
    • 搜索:/关键词(然后按n下一个,N上一个)
    • 换::%s/旧文本/新文本/g(全局替换)
  • 如何退出命令模式

    • 执行完命令后自动返回普通模式,或者按Esc键取消命令并返回普通模式。

2.2 启动与退出

bash 复制代码
# 启动Vim
vim               # 启动Vim
vim file.txt      # 打开文件
vim +10 file.txt  # 打开文件并跳转到第10行
vim +/pattern file.txt  # 打开文件并搜索pattern

# 退出Vim
:q                # 退出(如果文件已保存)
:q!               # 强制退出,不保存修改
:wq               # 保存并退出
:x                # 保存并退出(仅当有修改时保存)
ZZ                # 保存并退出(普通模式下)
ZQ                # 不保存退出(普通模式下)

2.3 模式切换

模式切换关系图:

模式切换命令:

bash 复制代码
i                # 插入模式(在光标前插入)
I                # 在行首插入
a                # 在光标后插入
A                # 在行尾插入
o                # 在当前行下方新建一行插入
O                # 在当前行上方新建一行插入
v                # 进入可视模式(字符选择)
V                # 进入可视模式(行选择)
Ctrl + V         # 进入可视块模式
:                # 进入命令模式
ESC              # 返回普通模式

模式切换总结:

  • 普通模式 → 插入模式:按i、I、a、A、o、O等键
  • 插入模式 → 普通模式:按EscCtrl+[
  • 普通模式 → 可视模式:按v、V、Ctrl+v
  • 可视模式 → 普通模式:按Escv、V、Ctrl+v(如果当前已经是对应的可视模式,则按一次退出)
  • 普通模式 → 命令模式:按:
  • 命令模式 → 普通模式:按Esc或执行命令后自动返回

2.4 光标移动

bash 复制代码
# 基本移动
h     " 左
j     " 下
k     " 上
l     " 右
0     " 行首
$     " 行尾
^     " 行首第一个非空白字符
_     " 行首第一个非空白字符(同^)
g_    " 行尾最后一个非空白字符

# 单词移动
w     " 移动到下一个单词开头
W     " 移动到下一个单词开头(忽略标点)
e     " 移动到单词结尾
E     " 移动到单词结尾(忽略标点)
b     " 移动到上一个单词开头
B     " 移动到上一个单词开头(忽略标点)
ge    " 移动到上一个单词结尾
gE    " 移动到上一个单词结尾(忽略标点)

# 行内移动
f{char}   " 向前移动到字符char
F{char}   " 向后移动到字符char
t{char}   " 向前移动到字符char前
T{char}   " 向后移动到字符char前
;     " 重复上次f/F/t/T命令
,     " 反向重复上次f/F/t/T命令

# 屏幕移动
gg    " 文件开头
G     " 文件末尾
:{n}  " 跳转到第n行,如:10
{n}G  " 跳转到第n行,如10G
Ctrl+f " 向下翻页
Ctrl+b " 向上翻页
Ctrl+d " 向下翻半页
Ctrl+u " 向上翻半页
H     " 屏幕顶部
M     " 屏幕中间
L     " 屏幕底部
zt    " 当前行置顶
zz    " 当前行置中
zb    " 当前行置底

# 标记和跳转
m{a-zA-Z} " 设置标记,如ma
`{mark}   " 跳转到标记的精确位置,如`a
'{mark}   " 跳转到标记行的行首,如'a
``    " 返回上次跳转的位置
''    " 返回上次跳转的行
`.    " 返回上次修改的位置
'.    " 返回上次修改的行
:marks   " 显示所有标记
:delmarks a b c  " 删除标记

2.5 编辑操作

bash 复制代码
# 删除操作
x     " 删除当前字符
X     " 删除前一个字符
dd    " 删除当前行
D     " 删除到行尾(同d$)
d{motion} " 删除移动命令覆盖的区域
  dw      " 删除一个单词
  d$      " 删除到行尾
  d0      " 删除到行首
  dgg     " 删除到文件开头
  dG      " 删除到文件末尾
  di"     " 删除引号内的内容
  da"     " 删除引号及内容
  dit     " 删除HTML标签内的内容
  dat     " 删除HTML标签及内容

# 复制操作
yy    " 复制当前行
Y     " 复制当前行(同yy)
y{motion} " 复制移动命令覆盖的区域
  yw      " 复制一个单词
  y$      " 复制到行尾
  ygg     " 复制到文件开头
  yG      " 复制到文件末尾

# 粘贴操作
p     " 粘贴到光标后
P     " 粘贴到光标前
]p    " 粘贴并自动缩进
]P    " 粘贴到光标前并自动缩进

# 剪切板
"*y   " 复制到系统剪贴板
"+y   " 复制到系统剪贴板(Linux)
"*p   " 从系统剪贴板粘贴
"+p   " 从系统剪贴板粘贴(Linux)

# 撤销与重做
u     " 撤销
Ctrl+r " 重做
U     " 撤销整行修改
:undo " 撤销树
:redo " 重做

# 重复操作
.     " 重复上一次修改操作
@:    " 重复上一次命令
@@    " 重复上一次宏

2.6 搜索替换

bash 复制代码
# 搜索
/pattern      " 向前搜索pattern
?pattern      " 向后搜索pattern
n             " 下一个匹配项
N             " 上一个匹配项
*             " 向前搜索当前光标下的单词
#             " 向后搜索当前光标下的单词
/\<word\>     " 搜索完整单词word
/\v           " 使用very magic模式(简化正则)
/\c           " 忽略大小写
/\C           " 大小写敏感
/\V           " 原义匹配(关闭特殊字符)

# 搜索高亮
:set hlsearch " 启用搜索高亮
:set nohlsearch " 禁用搜索高亮
:nohlsearch   " 临时关闭高亮
:set incsearch " 实时搜索

# 替换
:s/old/new/           " 当前行第一个old替换为new
:s/old/new/g          " 当前行所有old替换为new
:%s/old/new/g         " 全文替换
:%s/old/new/gc        " 全文替换,每次询问
:10,20s/old/new/g     " 10-20行替换
:'<,'>s/old/new/g     " 可视模式下选择区域替换
:%s/\<old\>/new/g     " 替换完整单词
:%s/old/new/ge        " 忽略错误继续替换

# 正则表达式替换示例
:%s/\s\+$//           " 删除行尾空白
:%s/^\s\+//           " 删除行首空白
:%s/\n\{3,}/\r\r\r/   " 多个空行替换为三个空行
:%s/foo/bar/g         " 所有foo替换为bar
:%s/\d\+/NUM/g        " 所有数字替换为NUM
相关推荐
埃伊蟹黄面21 小时前
磁盘级文件系统核心原理解析
linux·文件
醇氧21 小时前
【Linux】 安装 Azul Zulu JDK
java·linux·运维
一直跑1 天前
查看显卡驱动版本,查看哪个用户使用显卡(GPU)进程
linux·服务器
滴水之功1 天前
Windows远程桌面(非图形化界面)连接Ubuntu22.04
linux
借你耳朵说爱你1 天前
在Linux上挂载磁盘
linux
小成202303202651 天前
Linux高级
linux·开发语言
ICT系统集成阿祥1 天前
Linux运维最万能的三条指令
linux·运维·服务器
CAU界编程小白1 天前
Linux系统编程系列之模拟文件操作
linux·算法
chenyuhao20241 天前
Linux网络编程:数据链路层
linux·运维·网络