Vim 快捷键手册

Vim 快捷键手册

模式说明

  • 普通模式(Normal):默认模式,用于导航和命令执行
  • 插入模式(Insert):输入文本
  • 可视模式(Visual):选择文本
  • 命令模式(Command):执行命令

键盘布局

一、基础操作

模式切换

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

保存退出

复制代码
:w        保存文件
:wq       保存并退出
:x        保存并退出(仅当修改时)
:q        退出(无修改时)
:q!       强制退出不保存
ZZ        保存并退出(普通模式)
ZQ        不保存退出(普通模式)

二、光标移动

基本移动

复制代码
h         左移
j         下移
k         上移
l         右移
0         移动到行首
^         移动到行首非空白字符
$         移动到行尾
gg        移动到文件首行
G         移动到文件末行
5G        移动到第5行

单词移动

复制代码
w         移动到下一个单词开头
e         移动到当前单词结尾
b         移动到上一个单词开头
ge        移动到上一个单词结尾
W/E/B     按空格分隔的单词移动(忽略标点)

屏幕滚动

复制代码
Ctrl+f    向下翻页
Ctrl+b    向上翻页
Ctrl+d    向下半页
Ctrl+u    向上半页
H         移动到屏幕顶部
M         移动到屏幕中间
L         移动到屏幕底部

搜索跳转

复制代码
/pattern  向前搜索(n下一个,N上一个)
?pattern  向后搜索
*         向前搜索光标下单词
#         向后搜索光标下单词
%         跳转到匹配的括号

三、编辑操作

删除

复制代码
x         删除当前字符
X         删除前一个字符
dd        删除当前行
dw        删除到单词结尾
d$ 或 D   删除到行尾
d0        删除到行首
3dd       删除3行
diw       删除当前单词(包括空格)
daw       删除当前单词(含周围空格)

复制粘贴

复制代码
yy        复制当前行
yw        复制到单词结尾
y$        复制到行尾
p         在光标后粘贴
P         在光标前粘贴
"ayy      复制到寄存器a
"ap       粘贴寄存器a的内容

撤销重做

复制代码
u         撤销
Ctrl+r    重做
U         撤销整行修改
.         重复上一次修改

替换

复制代码
r         替换单个字符(如:r a)
R         进入替换模式(覆盖)
s         删除字符并进入插入模式
S         删除整行并进入插入模式
cw        修改单词(删除并插入)
ciw       修改当前单词
c$ 或 C   修改到行尾

四、可视模式操作

选择文本

复制代码
v         字符选择
V         行选择
Ctrl+v    块选择
o         切换选择端点

操作示例

复制代码
1. 按v选择文本,然后:
   y     复制选中内容
   d     删除选中内容
   c     修改选中内容
   >     向右缩进
   <     向左缩进

2. 块操作示例:
   Ctrl+v 进入块选择
   移动光标选择多列
   I      在每行选择区域前插入
   输入内容,按ESC生效
   d      删除选中列

五、查找替换

替换命令

复制代码
:s/old/new         替换当前行第一个old
:s/old/new/g       替换当前行所有old
:%s/old/new/g      替换全文所有old
:%s/old/new/gc     替换全文,每次确认
:1,5s/old/new/g    替换1-5行的old

搜索设置

复制代码
:set hlsearch      高亮搜索结果
:set incsearch     实时搜索高亮
:nohlsearch        临时取消高亮
:set ignorecase    忽略大小写
:set smartcase     智能大小写匹配

六、窗口管理

窗口分割

复制代码
:split     水平分割
:vsplit    垂直分割
Ctrl+w s   水平分割当前窗口
Ctrl+w v   垂直分割当前窗口

窗口切换

复制代码
Ctrl+w w   循环切换窗口
Ctrl+w h   切换到左侧窗口
Ctrl+w j   切换到下方窗口
Ctrl+w k   切换到上方窗口
Ctrl+w l   切换到右侧窗口
Ctrl+w =   等分所有窗口

窗口调整

复制代码
Ctrl+w +   增加窗口高度
Ctrl+w -   减小窗口高度
Ctrl+w >   增加窗口宽度
Ctrl+w <   减小窗口宽度
Ctrl+w _   最大化窗口高度
Ctrl+w |   最大化窗口宽度

七、高级技巧

标记和跳转

复制代码
m{a-z}     设置标记(如:ma)
`{mark}    跳转到标记位置
`a         跳转到标记a
``         跳转到上次位置
`.         跳转到上次修改位置
:marks     查看所有标记

宏录制

复制代码
qa         开始录制宏到寄存器a
q          停止录制
@a         执行寄存器a的宏
@@         重复执行上一次宏

寄存器使用

复制代码
:reg       查看所有寄存器
"ayy       复制到寄存器a
"ap        粘贴寄存器a内容
"+y        复制到系统剪贴板
"+p        从系统剪贴板粘贴

八、配置相关

常用设置

复制代码
:set number        显示行号
:set relativenumber显示相对行号
:set wrap          自动换行
:set nowrap        不自动换行
:set autoindent    自动缩进
:set tabstop=4     设置Tab为4空格
:set expandtab     将Tab转为空格

九、实用命令组合

批量操作示例

复制代码
1. 删除HTML标签内的内容:
   vit     选择标签内容
   c       修改
   
2. 复制多行到文件末尾:
   :10,20t$  复制10-20行到末尾
   
3. 交换两行:
   ddp      删除当前行并粘贴到下一行
   
4. 大小写转换:
   gUiw     当前单词转大写
   guiw     当前单词转小写
   
5. 格式化代码:
   gg=G     全文件自动缩进

插件管理示例(vim-plug)

复制代码
1. 安装插件:
   :PlugInstall
   
2. 更新插件:
   :PlugUpdate
   
3. 清理插件:
   :PlugClean

十、常用配置示例

基础.vimrc配置

vimrc 复制代码
" 显示设置
set number
set relativenumber
set cursorline
set showcmd

" 缩进设置
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent

" 搜索设置
set hlsearch
set incsearch
set ignorecase
set smartcase

" 其他设置
set mouse=a
set backspace=indent,eol,start
syntax on
filetype plugin indent on

提示 :使用 :help <命令> 查看详细帮助,如 :help w 查看w命令的完整文档。

shell 复制代码
PS C:\Users\14292> ssh root@192.168.159.105
The authenticity of host '192.168.159.105 (192.168.159.105)' can't be established.
ECDSA key fingerprint is SHA256:p//724CpvDfOcv8+Q0ySVq64rXfTgIlSBbxyCDMf2Ks.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.159.105' (ECDSA) to the list of known hosts.
root@192.168.159.105's password:
Last login: Thu Apr  2 15:16:08 2026 from 192.168.159.1
[root@c005 ~]# hostname
c005
[root@c005 ~]# exit
登出
PS C:\Users\14292> ssh 192.168.159.105
14292@192.168.159.105's password:
Permission denied, please try again.
PS C:\Users\14292> test@192.168.159.105
test@192.168.159.105 : 无法将"test@192.168.159.105"项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼
写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ test@192.168.159.105
+ ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (test@192.168.159.105:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\14292> ssh test@192.168.159.105
test@192.168.159.105's password:
-bash: ulimit: open files: 无法修改 limit 值: 不允许的操作
-bash: ulimit: max user processes: 无法修改 limit 值: 不允许的操作
[test@c005 ~]$ exit
登出
Connection to 192.168.159.105 closed.
PS C:\Users\14292> ssh test@192.168.159.105 hostname
test@192.168.159.105's password:
c005
PS C:\Users\14292> ssh test@192.168.159.105 id
test@192.168.159.105's password:
uid=1000(test) gid=1000(test) 组=1000(test) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
相关推荐
C^h2 小时前
RT thread使用u8g2点亮oled显示屏
linux·单片机·嵌入式硬件·嵌入式
航Hang*2 小时前
第2章:进阶Linux系统——第8节:配置与管理MariaDB服务器
linux·运维·服务器·数据库·笔记·学习·mariadb
wqww_12 小时前
Linux查看磁盘IO问题
linux·运维·服务器
2023自学中2 小时前
正点原子 Linux 驱动开发:多点电容触摸屏实验,gt9147 触摸芯片
linux·驱动开发·嵌入式
航Hang*2 小时前
第2章:进阶Linux系统——第10节:Linux 系统编程与 Shell 脚本全解笔记(GCC+Make+Vim+Shell Script)
linux·运维·服务器·学习·vim·apache·vmware
孙同学_2 小时前
【Linux篇】应用层协议HTTP
linux·运维·http
DeadPool loves Star2 小时前
新版VSCode登录Old Linux
linux·ide·vscode
我爱学习好爱好爱2 小时前
Ansible Loop循环 循环遍历的属性 Notify和Handlers
linux·运维·ansible
charlie1145141912 小时前
嵌入式Linux驱动开发——模块参数与内核调试:让模块“活“起来的魔法
linux·驱动开发·学习·c