vi编辑器
提示:本文主要是关于vi编辑器的基本使用,换言之就是vi的入门操作。
文章目录
一、什么是vi和vim编辑器?
Vi,是一款由加州大学伯克利分校,Bill Joy研究开发的文本编辑器。
vi编辑器是所有Unix及Linux系统下标准的编辑器,它相当于windows系统中的记事本一样,但它可比windows的记事本要强大的多,丝毫不逊色于其他的文本编辑器。
Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,是程序员中钟爱的编辑器。也就是说vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
简单的来说, vi 是老式的字处理器,虽然功能已经很齐全了,但是还是有可以进步的地方。 vim 则是对程序开发者是一项很好用的工具。vim并不是严格意义上的文本编辑器,就连vim官方也认为vim是一个程序开发工具而不是文字处理软件。
不过,对于我们学习者来说,这些历史了解就好,不需要太过于深究。总的来说,可以把vi和vim当成同一个文本编辑器来学习,两者没有本质上的差异,只是vim功能更强些,基本功能都是一一致的,而本文讲的就是基本的使用。
虽然,vi对于新手来说确实不够友好,但是慢慢的熟练使用后,将会极大的提高效率,尤其是对于码字的人来说特别爽,它将释放鼠标,完全有键盘操作,不用切换鼠标,非常省事儿。
vi官网:https://www.vim.org/
二、Vi三模式
vi编辑器有三种模式:命令模式,命令行(底行/末行)模式,插入模式
命令模式:可以使用简单的命令进行文本内容的操作
底行模式:可以使用复杂点的命令进行文本内容操作
插入模式:可以直接编辑文本内容
注:
三种模式中,可能有的模式的叫法各有所以,但是都是一回事儿,如果像要了解官方的定义,去官网查询,此处我便按照我的习惯叫法来。
如下图(小编画的一个简略图)所示:
命令模式→插入模式:按键表
按键 | 作用 |
---|---|
a | (append mode)光标后插入文本 |
i | (insert mode)光标前插入文本 |
o | ( open a new line above)在当前行的下方新建一行,并在新行处插入文本 |
A | (Append at end of line)在当前行的行尾插入文本 |
I | (Insert at beginning of line)在当前行的行首插入文本 |
O | ( Open a new line above)在当前行的上方新建一行,并在新行处插入文本 |
退出vi编辑器:
按键 | 作用 |
---|---|
ZZ(命令模式) | 保存并退出 |
q(底行模式) | 退出但不保存 |
wq(底行模式) | 退出并保存 |
q!(底行模式) | 强制退出但不保存 |
wq!(底行模式) | 强制退出并保存 |
注:
在退出的时候可能会遇见无法退出,就算加上“!”强制也没用。这是因为,该文本的权限不足(可能被设为该用户的只具有只读权限,这时候需要,不保存退出,修改为读写权限后重新编辑。所以,在用vi编辑器修改文件之前,需要看看是否有相应的权限,否则,所进行编辑的工作将是无用功,还得修改文件权限后重新编辑文件。
)
三.命令模式
命令 | 作用 |
---|---|
x | 删除一个字符 |
dw | 删除一个单词 |
3dw | 删除3个单词 |
dd | 删除一行,光所在行 |
2dd | 删除2行,光标所在行和下一行 |
r | 替换一个字符,在某个字符上按r,然后再按另一个新字符,这新字符就会替换原来的老字符 |
cw | 先删除这个单词,再进入到编辑模式 |
cc | 先删除当前行,再进入到编辑模式 |
C(大写) | 删除光标所在位置到当前行的末尾,然后进入编辑 |
yy | 复制当前行 |
yw | 复制一个单词 |
p | 粘贴复制的内容 |
~ | shift+~,把字符进行大小写转换 |
J (大写) | 把当前行和下一行进行连接 |
u | 撤销之前的操作 |
gg | 将光标移动到文章的第一行 |
G(大写) | 将光标定位到文件末尾 |
nG | 将光标定位到文件第n行,这里n代表的是行号(数字) |
/hello | 查找和hello的位置(单词之间以空格作为分隔线),然后使用n可以定位到下一个匹配的地方,从上往下查找(hello可以换成任何字符串) |
?test | 查找和test的位置,然后使用n可以定位到下一个匹配的地方,从下往上查找 |
e | 将把光标移动到下一个字的字尾 |
w | 将光标移至下一个字的字首 |
b | 将光标移至上一个字的字首 |
h | 将光标左移 |
l | 将光标右移 |
j | 将光标下移 |
k | 将光标上移 |
$ | 将光标移动到当前行的行尾 |
0或者^ | 将光标移动到当前行的行首 |
三.底行模式
命令 | 作用 |
---|---|
:2,4d | 删除第2行到第4行 |
:2,4co5 | 拷贝第2行到第4行之间的内容到第5行后面 |
:1,2m7 | 移动第1行到第2行之间的内容到第7行后面 |
:w | 保存 |
:w newfile | 保存为另一个新文件,相当于另存为功能 |
:q | 退出 |
:q! | 强制退出 |
:wq! | 保存并强制退出 |
:set nu | 显示行号 |
set nonu | 是取消行号 |
:5 | 将光标直接定位到第五行 |
:r b.txt | 将b.txt文件内容插入到当前文件中 |
:1,$s/hello/test/g | 将文件中从1行开始,所有的hello替换成test |
%s/sbin/ssbin | 将全文中的sbin字符串替换为ssbin |
1,10s/bin/mybin | 将第一行到第10行的bin字符串替换为mybin |
总结
以上便是我查找资料完善平常使用的vi编辑器的一些命令和经验。这些命令很多,全部记住是不太现实的,所以不用完全记住,我们在不断练习中,有意识的不断去使用这些命令,当我们熟练后,下意识就能使用时,就会发现它如此的美妙。开始是痛苦的,坚持下去,最后会收获幸福。
另外,用h、j、k、l操作上下左右的命令,我是很少用,经常使用上下左右方向键来完成。
除此之外,在我们使用命令时,只是去记忆字母也是比较困难的,这就需要联想一下,它是哪一个英语单词缩写而来的,比如删除一个单词dw(delete word)、p(paste)粘贴。单词联想,不一定要十分准确,只需要自己能记住就行。如果有要求比较高的水友,可以去官网查查或者查找其他资料,不介意的话可以与小编分享一下,我完善这个此文,以供大伙学习。