参考资料: 1) RUNOOB.COM - Linux vi/vim 2) Vim Tutor
1. vi/vim 工作模式
命令模式(Command Mode):启动vi/vim即进入命令模式
输入模式(Insert Mode):命令模式下按i/a/o等即可进入输入模式,可以进行字符输入/换行/回删等操作
底线命令模式(Last Line Mode):命令模式下按:即可进入底线命令模式,可用命令十分广泛

2. vi/vim 常用按键
2.1 光标移动
| 命令 | 功能 |
| h | 向左移动1个字符,如果命令前有数字,如5h,则表示向左移动5个字符 |
| j | 向下移动1个字符,如果命令前有数字,如5j,则表示向下移动5个字符 |
| k | 向上移动1个字符,如果命令前有数字,如5k,则表示向上移动5个字符 |
| l | 向右移动1个字符,如果命令前有数字,如5l,则表示向右移动5个字符 |
| <Space> | 作用同l,命令前可添加数字 |
| + | 光标移动到非空格符的下一行,命令前可添加数字 |
| - | 光标移动到非空格符的上一行,命令前可添加数字 |
| <Enter> | 作用同+,命令前可添加数字 |
| 0 | 数字0,移动到这一行的第一个字符处 |
| $ | 移动到这一行的最后一个字符处 |
| H | 移动到当前屏幕最上方的那一行的第一个字符处 |
| M | 移动到当前屏幕中间的那一行的第一个字符处 |
| L | 移动到当前屏幕最下方的那一行的第一个字符处 |
| G | 移动到当前文档最后一行的第一个字符处,如果命令前有数字,如5G,则表示移动到第5行的第一个字符处 |
| gg | 移动到当前文档第一行的第一个字符处,相当于1G |
| e | 跳转到字尾 |
| w | 跳转到下一个字首 |
| b | 跳转到上一个字 |
1.2 删除/复制/粘贴
| 命令 | 功能 |
| x, X | 在一行字当中,x为向后删除一个字符(相当于Del);X为向前删除一个字符(相当于BackSpace),命令前可添加数字 |
| dd | 删除游标所在的那一整行,删除后保存在缓冲区,可以用p粘贴,命令前可添加数字 |
| d1G | 删除光标所在到第一行的所有数据 |
| dG | 删除光标所在到最后一行的所有数据 |
| d$ | 删除光标所在处,到该行的最后一个字符 |
| d0 | 删除光标所在处,到该行的第一个字符 |
| dw | 删除一个字 |
| yy | 复制光标所在的那一行,命令前可添加数字 |
| y1G | 复制光标所在行到第一行的所有数据 |
| yG | 复制光标所在行到最后一行的所有数据 |
| y0 | 复制光标所在的那个字符到该行行首的所有数据 |
| y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
| p, P | p为将已复制的数据在光标下一行贴上,P则为贴在光标上一行 |
| J | 将光标所在行与下一行的数据结合成同一行 |
| u | 复原前一个动作 |
| Ctrl + R | 重做上一个动作 |
| . | 重复前一个动作 |
1.3 搜索和替换
| 命令 | 功能 |
| /word | 向光标之下寻找一个名称为word的字符串,\c表示忽略大小写,\C表示大小写敏感 |
| ?word | 向光标之上寻找一个名称为word的字符串,即往上搜索 |
| n, N | 搜索结果的下一个,/word下n是向下搜索,N是向上搜索;?word下n是向上搜索,N是向下搜索 |
| :n1,n2s/word1/word2/g | 在第n1行与第n2行之间寻找word1这个字符串,并将该字符串取代为word2 |
| :1,$s/word1/word2/g :%s/word1/word2/g | 在首行和尾行之间寻找word1这个字符串,并将该字符串替换为word2 |
| :1,$s/word1/word2/gc :%s/word1/word2/gc | 在首行和尾行之间寻找word1这个字符串,并将该字符串替换为word2,替换前需要先确认 |
1.4 切换到输入模式
| 命令 | 功能 |
| i, I | i为从目前光标所在处输入;I为在目前所在行的第一个非空格符处开始输入 |
| a, A | a为从目前光标所在的下一个字符处开始输入;A为从光标所在行的最后一个字符处开始输入 |
| o, O | o为在目前光标所在的下一行处输入新的一行;O为在目前光标所在处的上一行输入新的一行 |
| r, R | r只会替代光标所在的那一个字符一次;R会一直替代光标所在的文字,直到按下ESC 为止 |
1.5 底线命令
| 命令 | 功能 |
| :w | 将编辑的数据写入文件中 |
| :w! | 强制写入该文件 |
| :q | 离开vi/vim |
| :q! | 若曾修改过文件,又不想储存,使用 ! 为强制离开不储存文件 |
| :wq | 储存后离开 |
| :wq! | 强制储存后离开 |
| ZZ | 若文件没有更动,则不储存离开;若文件已经被更动过,则储存后离开 |
| :w [filename] | 将编辑的数据储存成另一个文件 |
| :r [filename] | 在编辑的数据中,在当前光标行后面读入另一个文件的数据 |
| :e [filename] | 打开新的一个文件 |
| :sp | 水平分屏 |
| :vsp | 垂直分屏 |

本文介绍了Linux中vi/vim编辑器的工作模式,包括命令模式、输入模式和底线命令模式,并详细讲解了光标移动、删除/复制/粘贴、搜索和替换以及如何切换到输入模式等常用操作。

1497

被折叠的 条评论
为什么被折叠?



