vi 和 vim 的基本用法
vi 和 vim 是 liunx 内置的编辑器。vi编辑速度是最快的;vim编辑器可以看作vi的高级版本,它实现了用颜色来进行特殊信息的显示。
vim 和 vi 编辑器的三种模式
- 一般模式: vim 文件名 (直接进入一般模式):在一般模式下,可以进行上下左右的光标移动、删除字符、行,还可以进行复制和粘贴操作
- 编辑模式,在一般模式中按
i,l,o,O,a,A,r,R
等做任意一个字符后,将进入编辑模式,窗口最底下会显示– INSERT–,此时可以对文本内容进行编辑模式。一般情况下输入i
进入编辑模式 - 在编辑模式中,按
ESC
鍵可以回到一般模式。在一般模式中,输入:,/,?
的任意一个字符,光标将移动到窗口底部,此时可以保存编辑好的文件或离开vi编辑器等。 ** 输入:
之后得到的命令行模式窗口 ,按wq
: 写入文件,并退出,q!
:强制退出不保存。!
:表示强制退出。。
vim 和 vi 的简单的快捷操作
^
(即Shift+6):移动到当前行的开头处 (一定要在一般模式下,就是在编辑模式下按ESC
)$
(即Shift+4):移动到当前行的结尾处 (也是在一般模式下)- 撤消前一个命令:在最后一个命令之后立即输入
u
来撤消该命令 (也是在一般模式下) ====撤消对一行的更改:输入U来撤消你对一行所做的所有更改,这个命令只有在你没将光标移动到该行以外时才生效。 - 删除一行:将光标放置到该行的任意处并输入dd
- 删除到文件的结尾:为删除从当前行到文件结尾的所有内容,需输入dG
- 为删除一个字符,需将光标放置在要删除的字符上并输入
x
; 为删除光标之前(其左边)的一个字符,需输入X
- 复制一行命令:
yy
- 粘贴命令:
p
- 输入
/
,并在/
后面输入要查找的串,然后按下回车,查找到后会在查找到的东西上回一直会出现亮点:输入:noh
撤销,输入n
跳转到该串的下一个出现处,输入N
跳转到该串的上一个出现处 - 显示行号 :
set number
- 取消行号显示 :
set nonumber
- 设置显示用户模式 :
set showmode
- 设置文件只读 :
set readonly
- 一般模式下按’shift + 9’ 跳到段落的开始,按
shift +0
跳到段落的末尾 H(home)
移动到屏幕最顶部,按L
键可以将光标移动到屏幕最底部, 按M
键可以将光标移动到屏幕中间CTR+D(Down)
向下翻屏移动光标CTR+U(UP)
向上翻屏移动光标,命令前面还可以加数字表示翻屏多少行CTR+F(Forward)
与PageDown键,显示下一屏文本CTR+B(Backward)
与PageUp显示上一屏改文本G(Globalize)
命令将光标移动到指定行号,在一般模式下,直接输入 行号+ G,移动到文本的指定行数
编辑文本
- 插入文本 :在一般模式下,按
I、i、a或A
进行文本插入,其中i
命令用于在光标之前插入文本内容,I
表示在行开始插入,a
表示在光标之后插入,A
则表示在行尾插入。
- 新加入一行输入:直接在一般模式下,输入
o
表示在当行下的下方创建一个新行,O
表示在当前行的上方打开一个新行 - 文本替换:在一般模式下输入命令
r + 要替换后的字符
(光标要在被替换的字符上) 实现替换单个字符,替换完成后直接返回一般模式。命令R
和r
相同,只是要手动按ESC
鍵后返回一般模式
文本的删除操作
x
删除光标右边的字符,每次删除一个,如果指定3x
,则每次删除三个 ,X
删除光标左边的字符,每次删除一个,如果指定`3X
,则每次删除三个dd
命令删除一行dl
删除字符,与x命令相同d0
从行首开始删除,到光标处为止d)
从当前光标开始,删除到句子的末尾~
如果字符是大写,则自动转换成小写,如果是小写,则自动转换成大写
缓存区的使用
- 在利用vim进行文本编辑时,编辑修改后的文本不会立即保存到硬盘上,而是保存在缓冲区中,如果没有把缓冲区里的文件存盘,原始文件不会被更改。vim在打开文件时将文本内容读到缓冲区中,在进行文本编辑时,修改的文本保存在缓冲区,此时硬盘上的原文件不变。下面让我们来演示一下缓冲区的使用。 (在一般模式的输入
: buffers
查看缓存区的情况)
在命令模式输入:open test1.txt进入test1.txt编辑界面,然后再输入:buffers查看缓冲区状态,得到如下结果
- 可以看到此时test1.txt加载为活动缓冲区,而test2.txt则被加载到交换缓冲区。此时利用
:bprevious
命令可以切换test2.txt为活动缓冲区,test1.txt 为交换缓存区 - 其他的缓存区命令
文件的存盘和读取
- 保存并退出: 在编辑模式中,如果文本编辑任务已经完成,想直接保存退出,返回到 Linux CLI 命令行的话,直接按
ESC
然后按ZZ
即可。 - 读取文件内容到缓冲区: 在编辑模式中,采用
:r 文件名
命令读取文件内容到当前缓冲区;例如,:r test1.txt
可以test1.txt
文件内容写到缓冲区 - 将缓冲区内容写到文件: 在编辑模式中,采用
:w
命令将修改后的文件写到磁盘,也可以使用:wq
命令将修改的文件写到磁盘上后退出vim返回inux CLI,如果不想保存直接退出,则使用:q!
命令直接退出vim,返回到CLI命令行。
文本的查找
- 正则表达式搜索: 正则表达式搜索是指加入了像
^,$,.
等特殊匹配字符,它们的作用如下表
文本替换
文本替换使用以下语法格式:
: s/well/good/ 替换当前行第一个 well 为 good : s/well/good/g 替换当前行所有 well 为 good :n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good :n,$ s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good , n 为数字,若 n 为 .,表示从当前行开始到最后一行 :% s/well/good/(等同于 :g/well/s//good/) 替换每一行的第一个 well 为 good :% s/well/good/g(等同于 :g/well/s//good/g) 替换每一行中所有 well 为 good ###################可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符 : s#well/#good/# 替换当前行第一个 well/ 为 good/ :% s#/usr/bin#/bin#g 可以把文件中所有路径/usr/bin换成/bin