编辑器之神 vim
vi简介
vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。 vi没有菜单,只有命令,且命令繁多
Vi有三种基本工作模式:
+ 命令模式
+ 文本输入模式
+ 末行模式

vim基础操作
vim是从 vi 发展出来的一个文本编辑器 。代码补完、编译及错误跳转等方便编程的功能特别丰富
Esc:从插入模式或末行模式进入命令模式
插入:
i 插入光标前一个字符
I 插入行首
a 插入光标后一个字符
A 插入行未
o(小写字母o) 向下新开一行,插入行首
O(大写字母O) 向上新开一行,插入行首
光标移动:
^ 移动到光标所在行的行首
$ 移动到光标所在行的行尾
gg 光标移动文件开头
G 光标移动到文件末尾
w(word) 向后移动一个单词
b 向前移动一个单词
M(middle) 光标移动到屏幕中间
L 光标移动到屏幕最后一行的行首
{ 按段移动(以空行为分段),上移
} 同上,下移
Ctrl + d 向下翻半屏
Ctrl + u 向上翻半屏
Ctrl + f 向下翻一屏幕
Ctrl + b 向上翻一屏幕
删除:
x 删除光标后的一个字符,相当于 del
X 删除光标前的一个字符
dd 删除光标所在行
n dd 删除光标所在行及以下 n 行
D 删除光标后本行所有内容,包含光标所在字符
d0(数字0) 删除光标前本行所有内容,不包含光标所在字符
dw 删除光标开始的单词,包含光标所在字符, 意思是“从这里切到下一个单词”
de 意思是“从这里切到当前单词的结尾”。
db 反向删除一个单词
撤销:
u 一步一步撤销
Ctrl + r 反撤销
重复命令:
.(点) 重复上一次操作的命令,如 dd,然后 .(点)
文本移动:
>> 文本行右移
<< 文本行左移
复制粘贴:
yy 复制当前行
n yy 从当前行开始复制 n 行,包含当前行
p 在光标所在位置向下新开辟一行,粘贴 dd(删除) 、yy(拷贝) 的内容
可视模式:
v(visual) 按字符选中文本,选中文本为可视模式,可配合 d、y、>>、<< 实现对文本的删除,复制,左右移动
V 按行选中文本,选中文本可...
替换操作:
r 替换光标所在字符
R 替换所有字符
查找:
/ str 查找
n 查找下一个
N 查找上一个
shift + : 从命令模式进入末行模式
替换命令:
在文件中把 abc 全部替换成 123:%s/abc/123/g
在文件中把第1行至第10行之间的abc替换成123:1, 10s/abc/123/g
set number 设置行号
vim 里执行 shell 命令
输入 !,后面跟命令
daw:删除单词,全选:ggVG
va":选中当前引号中的内容(包含引号)
分别更改这些配对标点符号中的文本内容. # 常用
ci’、ci”、ci(、ci[、ci{、ci< -
分别删除这些配对标点符号中的文本内容 # 常用
di’、di”、di(或dib、di[、di{或diB、di< -
分别复制这些配对标点符号中的文本内容 # 常用
yi’、yi”、yi(、yi[、yi{、yi< -
分别选中这些配对标点符号中的文本内容
vi’、vi”、vi(、vi[、vi{、vi< -
Vim快速移动光标至行首和行尾
1、 需要按行快速移动光标时,可以使用键盘上的编辑键Home,快速将光标移动至当前行的行首。除此之外,也可以在命令模式中使用快捷键"^"(即Shift+6)或0(数字0)。
2、 如果要快速移动光标至当前行的行尾,可以使用编辑键End。也可以在命令模式中使用快捷键"$"(Shift+4)。与快捷键"^"和0不同,快捷键"$"前可以加上数字表示移动的行数。例如使用"1$"表示当前行的行尾,"2$"表示当前行的下一行的行尾。
2024-01-19补充
vim
移动的命令
^
k
<h l>
j
v
| 命令 | 效果 | 备注 |
|---|---|---|
| k | 向上移动一行 | |
| nk | 向上移动n行 | 常用 |
| j | 向下移动一行 | |
| nj | 向下移动n行 | 常用 |
| h | 向左移动一个字符 | |
| l | 向右移动一个字符 | |
| w | 向右移动到下一个单词的起始处, 2w表示移动到下2个单词的起始处, 3w以此类推 | 起始处表示第一个字符 |
| e | 向右移动到当前单词的结尾处, 2e表示移动到下1个单词的结尾处, 3e以此类推 | 结尾处表示最后一个字符 |
| b | 与e相反 | |
| $ | 向右移动到光标所在的行尾 |
插入的命令
| 命令 | 效果 | 备注 |
|---|---|---|
| a | 在当前光标下面插入 | |
| A | 在当前光标所在行的末尾插入 | 使用场景多, 例如在代码后面添加 ; |
删除的命令
| 命令 | 效果 | 备注 |
|---|---|---|
| dw | 向右删除一个单词, 删除到下一个单词的起始处, 不包含单词的起始处字符 | |
| dnw | n=2,3... 向右删除n个单词, 删除到下n个单词的起始处 | ndw = dnw |
| de | 向右删除一个单词, 删除到当前单词的结尾处, 包含单词的结尾处字符 | |
| dne | n=2,3... 向右删除n个单词, 删除到下n-1个单词的结尾处 | nde = dne |
| d$ | 从光标所在字符向右删除到行尾 | |
| dn$ | 从光标所在字符向右删除到下n-1行的行尾 | nd$ = dn$ |
| dd | 删除当前行 | |
| dnd | 删除n行 | ndd = dnd |
| di' | di', di", di(, di], di}, di<, 删除这些配对标点符号中的文本内容 | i = in |
更改类命令
| 命令 | 效果 | 备注 |
|---|---|---|
| ce | 删除当前光标到当前单词末尾, 并进入insert模式; cne, 删除当前光标到下n-1个单词末尾, 并进入insert模式 | ce 的效果 和 cw的使用效果是一样的, 推荐使用 ce |
| cw | 删除当前光标到当前单词, 并进入insert模式; cnw, xxxx | |
| c$ | 删除当前光标到当前行尾, 并进入insert模式 | |
| ci' | ci', ci", ci(, ci], ci}, ci<, 更改这些配对标点符号中的文本内容 | w(word) 也是一种范围 |
| vi' | 选中单词 | |
| va' | 选中符号中间的内容, 包含符号 | i = in, a = all |
复制类命令
| 命令 | 效果 | 备注 |
|---|---|---|
| yy | 复制一行 | |
| nyy | 复制n行 | |
| ye | 复制当前单词, 截止到单词的末尾 | 常用 |
| yw | 复制当前单词, 截止到下一个单词的起始位置(往往会多复制一个空格) | |
| yi' | yi', yi", yi(, yi], yi}, yi<, 复制符号中间的内容单词 |
置入类命令
| 命令 | 效果 | 备注 |
|---|---|---|
| p | 将最后一次删除的内容置入光标之后 |
替换类命令
| 命令 | 效果 | 备注 |
|---|---|---|
| r | 输入r之后, 紧接着输入替换光标所在位置的字符 | |
| R | 进入替换模式, 按 ESC退出替换模式 | |
| 😒 | 😒/old/new/g 可以替换old为new | 不写 /g 只改变光标所在行的第一个匹配, 写 /g 将该行中所有old替换为new |
| :%s | :%s/old/new/g | 替换整个文件中的每个匹配字符串, 不提示 |
| :%s | :%s/old/new/gc | 替换整个文件中的每个匹配字符串, 并对每个匹配字符串提示是否替换 |
搜索类命令
| 命令 | 效果 | 备注 |
|---|---|---|
| / | 输入 /字符串 可以在当前文件中查找该字符串, n, 查找下一个, N, 查找上一个 | |
| ? | 输入 ?字符串 可以逆向查找字符串 | |
配对括号的查找
| 命令 | 效果 | 备注 |
|---|---|---|
| % | 可以查找当前行配对的括号: ), ], } | 按一次查找当前行的括号, 再按 % 就可以跳回配对的括号处 |
缩紧的命令
| 命令 | 效果 | 备注 |
|---|---|---|
撤销的命令
| 命令 | 效果 | 备注 |
|---|---|---|
| u | 撤销最后执行的命令 | |
| U | 撤销对整行的修改 | |
| CTRL + r | 反撤销 | 按住CTRL不放, 再按r |
定位以及查看文件状态
| 命令 | 效果 | 备注 |
|---|---|---|
| CTRL + g | 显示当前编辑文件中, 当前光标所在行位置, 以及文件状态信息 | |
| gg | 跳转到文件第一行, 配合d命令可以删除到文件开头 | |
| G | 跳转到文件最后一行, 配合d命令可以删除到文件末尾 | |
| :number | 跳转到第 number 行 | |
| CTRL + o | 跳转到前一个编辑的位置 | 常用 |
| CTRL + i | 跳转到后一个编辑的位置, 与 CTRL + o 相反 | 常用 |
技巧
- 在行尾添加分号
- 使用 A
- 修改删除符号中间的内容
- 使用 vi + 符号
- 需要对符号操作, 使用 va + 符号
- 修改变量名:
- 使用 * 匹配变量名
- 使用 ciw 修改第一个变量名
- 将光标跳转到其他变量名, 使用 . 修改其它变量名(. 是一种宏操作)
- 快速跳转
- 向上跳转n行, nk, 比如向上跳转3行, 输入3k (横向光标不变)
- 向下跳转n行, nj
end~~~

浙公网安备 33010602011771号