0:编辑缓冲区
vi编辑文件时,将文件内容复制到编辑缓冲区,我们操作的内容其实是文件的副本而不是原始数据。
在编辑完成后,要把缓冲区的数据写入文件,才是真正编辑了文件。
1:Vi的三种模式
一般指令模式:Vi打开(创建)一个文件时默认处于一般指令模式,此时可以 上下左右移动光标、使用快捷键来复制粘贴、删除整行整列。
编辑模式:在一般指令模式下,按下“i、I,a、A,r、R,o、O”任意一个时,进入编辑模式,左下角出现INSERT或REPLACE字样。此时可以进行键盘输入。按Esc退出编辑模式回到一般指令模式。
命令行模式:一般指令模式下,输入“:/ ?”任意一个时,进入命令行模式,光标移动到窗口的最下面一行。此时,可以输入一些命令,进行数据搜索、读入数据、存盘、离开Vi等操作。
2:一般指令模式下快捷键
3:进入编辑模式时的按键说明
4:命令行模式指令说明
5:中断恢复
如果在文件编辑过程中由于机器关机等原因导致没有存盘,那么重新打开该文件时,会提醒你该文件存在.swap暂存盘文件,此时可以执行以下操作进行数据恢复或者舍弃:
6:Vim的区块选择
按下v、V键,左下角出现VISUAL字样时,进入区块选择模式。
移动光标进行内容选择。
然后用y复制、d删除、p粘贴。
7:Vim的多窗口模式
8:补全提示
(最常用1、3组合键,1是文档内补全提示、3是根据文档类型补全提示,特别是用Vim进行开发时补全关键字特别有用。)
9:Vim编辑环境设置
10:以只读模式查看文件
vi -R 文件
view 文件
11:恢复数据
我们在编辑时,数据保存在 编辑数据缓冲区 ,vi会时不时将缓冲区数据写入一个临时文件中。
如果某次我们编辑时遇到死机等情况导致没有保存,那么再次打开文件时,可以通过 -r 选项从临时文件中恢复上次编辑时的数据。
vi -r 文件
(-R是只读,-r是恢复!)
12:快速保存并退出
ZZ(大写) :保存并退出
13:vi指令的学习
vi指令分为三种:
移动光标:大概40条移动指令
进入编辑模式:12条进入指令
进行修改:复制粘贴移动删除等等修改指令
常用的移动光标指令
上下左右
左下上右:hjkl
方向键控制:上下左右
行内移动
0 :移动到行开头 $ :移动到行结尾 ^:移动到第一个非空字符上
按单词移动
w:移动到下一个单词词首 (W同理,忽略标点符号)
e:移动到下一个单词词尾(E同理,忽略标点符号)
b:移动到上一个单词词首(B同理,忽略标点符号)
按句子移动
) :移动到下一个句子
( :移动到上一个句子
按段落移动
{ :移动到上一个锻炼
} :移动到下一个锻炼
在屏幕中移动
H :移动到屏幕顶部
M:移动到屏幕中间
L:移动到屏幕底部
多次执行指令
n指令 :执行n次指令
例如:3{ 往上移动3个段落
使用 Ctrl+键 组合键实现大范围移动
^F:向前移动一屏 ^B:向后移动一屏 ^U:向前移动半屏 ^D:向后移动半屏
使用搜索命令按匹配模式来移动光标
/pattern:向前搜索 ?pattern:向后搜索
然后逐个查看匹配处
n:查看下一个匹配处
N:查看上一个匹配处
按行号移动
:set number :开启行号 nG :移动到第n行
:n :移动到第n行
gg:移动到第一行
:$ :移动到最后一行 :set nonumber:取消行号
常用插入指令
光标前后插入:
i :当前光标前插入
a :当前光标后插入
行头尾插入:
I:当前行开头处插入
A:当前行结尾处插入
行上下插入:
o:当前行下面插入
O:当前行上面插入
常见修改指令
替换:
vi指令替换
r字符:用紧跟着r的字符替换光标处字符
R :进入替换输入模式,之后键入的每个字符都依次替换光标所在处内容。
cc :替换整行
ex命令替换
:s/原pattern/替换pattern/ :替换当前行上第一个匹配项
:s/原pattern/替换pattern/g:全局替换
删除:
按字符删除:
x :删除光标所在处字符
X :删除光标左边字符
按行删除:
D:删除从当前光标到本行末尾的字符
dd:删除当前行
d回车:删除当前行
:nd :删除第n行
:n,md :删除n~m行
按单词删除:
dw :删除一个单词
dnw:删除n个单词
db:向上删除1个单词
按句子删除:
dn):删除n个句子
按段落删除:
dn}:删除n个段落
撤销 或 重做:
u :撤销
U :恢复当前行
. :重复执行上一条指令
常用文本操作指令
移动文本(剪切):
无名缓冲区:编辑器中最近一次删除的内容,自动保存在无名缓冲区中。(其实,x、d等删除指令相当于剪切)
粘贴:
p 或 P :在光标处将无名缓冲区的内容插入
按行移动:
:起始行m目标行:将起始行移动到目标行,起始行可以是多个,用逗号隔开
复制文本:复制文本到无名缓冲区——移动光标到插入处——粘贴
复制指令:
yw:复制一个单词
ynw:复制n个单词
yy:复制一行
nyy:复制n行
yn}:复制n段落
按行复制:
:起始行co目标行:将起始行复制到目标行下面
变换大小写:
~ :波浪号可以把光标当前位置的字符表换大小写
从文件中读入数据:
:[n]r file:读取file内容,插入到当前vi编辑缓冲区的n行之后(如果不指定,则插入光标处)
将shell指令执行结果插入编辑缓冲区
:[n]r !指令 :将指令的执行结果插入到编辑缓冲区
14:vi环境设置
设置指令格式:
:set option/nooption :set option=value
常见设置选项:
15:在vi中执行shell命令
:!指令 :启动shell执行指令,执行完后回到vi界面
16:使用其他程序处理编辑缓冲区中文本内容
n!!program :对于光标之后n行,使用program进行处理
例如:
10!!sort :将后面十行排序
17:将编辑缓冲区内容写入文件
ZZ:自动保存并退出 :w :写入原始文件 :w file :写入文件file :w!file :覆盖一个文件 :w>>file:追加到文件末尾
18:切换文件
:e 文件名: 切换到另一个文件(切换之前先保存当前内容)
19:快捷输入——缩写
定义缩写:
:ab 缩写 完整写法 :以缩写单词指代完整写法
使用缩写:
键入 缩写 ,会自动输入完整写法。
20:宏
定义宏:
:map x command :使用字符x,映射为指令command
使用宏:
在需要使用command的地方,按下对应的宏按键即可。
21:配置vi
在vi的配置文件中,我们可以通过选项、缩写、宏等来定制自己的vi编辑器。