Vi与Vim

 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编辑器。

原文地址:https://www.cnblogs.com/ygj0930/p/8031083.html