Vim 常用操作
Normal Mode(默认进入或【<Esc>】)
移动
左下上右
- 单次移动:【h、j、k、l】或【方向键】
- 移动n次:【n<移动>】,如【20j】表示下移20行
翻页
- 向下一页:【<Ctrl>f】或【<Page Down>】
- 向上一页:【<Ctrl>b】或【<Page Up>】
- 向下半页:【<Ctrl>d】
- 向上半页:【<Ctrl>u】
行内
- 右移n个字符:【n<space>】
- 行首:【0】或【<Home>】
- 行尾:【$】或【<End>】
- 行尾最后一个非空字符:【g_】
行间
- 非空格下一行:【+】
- 非空格上一行:【-】
- 下移n行:【n<Enter>】
- 文件首行:【gg】
- 文件末行:【G】
- 第n行:【nG】或【ngg】或【:n】
- 当前屏幕首行:【H】
- 当前屏幕中间行:【M】
- 当前屏幕末行:【L】
词内与词间
- 当前词尾:【e】
- 当前词首:【b】
- 下一个词首:【w】
复制、粘贴、删除
复制
- 当前行:【yy】或【Y】
- 向下n行:【nyy】
- 当前行到首行:【ygg】或【y1G】
- 当前行到末行:【yG】
- 当前字符到行首:【y0】
- 当前字符到行尾:【y$】
- 全文:【ggyG】
粘贴
- 贴在当前游标之后:【p】
- 贴在当前游标之前:【P】
删除
- 向后删除一个字符,相当于【<Del>】:【x】
- 向前删除一个字符,相当于【<Backspace>】:【X】
- 向后删除n个字符:【nx】
- 向前删除n个字符:【nX】
- 删除并复制当前行:【dd】
- 删除并复制向下n行:【ndd】
- 删除当前行到首行:【dgg】或【d1G】
- 删除当前行到末行:【dG】
- 向后删除当前行(含当前字符):【d$】或【D】
- 向前删除当前行(不含当前字符):【d0】
- 删除下一行并接在当前行尾:【J】
- 全文:【ggdG】
撤销重做
- 撤销上一动作:【u】
- 重做上一动作:【<Ctrl>r】
- 重复上一动作:【.】
查找
- 向下查找word:【/\<word\>】
- 向上查找word:【?\<word\>】
- 特殊匹配规则:
- 【\<word】、【word\>】:匹配词头、词尾
- 【word\c】、【word\C】:不区分大小写(默认)、区分大小写
- 查找下一个:查找状态下【n】
- 查找上一个:查找状态下【N】
进入Insert Mode
- 当前字符前:【i】
- 行首第一个非空字符前:【I】
- 当前字符后:【a】
- 行尾字符后:【A】
- 向下插入空行并移至空行首:【o】
- 向上插入空行并移至空行首:【O】
进入Replace Mode
- 替换当前字符,输入一个字符后自动返回命令模式:【r】
- 替换多个字符:【R】
进入Command Mode
- 进入:【:】
进入Visual Mode
- 进入字符可视化模式:【v】
- 进入行可视化模式:【V】
- 进入块可视化模式:【ctrl + v】
- 选中上一次选择的内容:【gv】
Visual Mode
模式选择
- 【v】:以字符为单位选择
- 【V】:以行为单位选择
- 【ctrl + v】:以矩形块为单位选择
跳转
- 跳转到块的对角:【o】
- 跳转到同行对侧:【O】
- 跳到块首并进入插入模式:【I】
- 跳到块尾并进入插入模式:【A】
编辑
- 删除所选块并进入插入模式:【c】
Command Mode
- 保存:【w】
- 退出:【q】
- 保存并退出:【wq】或【ZZ】
- 不保存/强制退出:【q!】或【ZQ】
- 显示行号:【set nu】
- 隐藏行号:【set nonu】
- 另存为file,不退出:【w<file>】
- 将file的内容插入到光标后:【r <file>】
- 另存n1行到n2行的内容为file:【n1,n2 w <file>】
- 暂时离开vim并查看执行command后的显示结果:【! <command>】
替换
- 替换当前行中的所有word1为word2:【s/word1/word2/g】
- 替换n1行到n2行中的所有word1为word2:【n1,n2s/word1/word2/g】
- 全文替换所有word1为word2:【1,$s/word1/word2/g】或【%s/word1/word2/g】
- 全文替换所有word1为word2,带确认:【1,$s/word1/word2/gc】或【%s/word1/word2/gc】
寄存器
Vim 的寄存器是一个用于暂存和管理文本的区域,允许你存储、检索和操作复制、删除、剪切、粘贴等内容。寄存器类似于剪贴板,但比普通剪贴板功能更强大,它支持多项内容存储,并且允许用户选择特定的寄存器来进行操作。
未命名寄存器("")
- 存储最近一次的复制或删除
- 粘贴时默认使用
数字寄存器("0 - "9)
- "0:存储最近一次复制
- "1 - "9:存储倒数第i次删除的内容
字母寄存器("a - "z,"A - "Z)
- 显式存储复制或删除的内容,大写表示追加到相应小写寄存器中
- 例:"ayy:将当前行复制到寄存器"a,"Cdw:将当前单词删除并追加到寄存器"c中
系统剪切板寄存器("*、"+)
- 与系统剪切板进行交互的寄存器
评论区