Linux中vi/vim 编辑器的使用
Linux 中最通用的可能就是vi和vim编辑器了(如果没有vim可以使用vi编辑器,命令基本上是通用的,我是没发现有哪个Linux上面没有vi的),但是刚刚使用vi/vim编辑器的时候很不不习惯,很多常用的操作不知道如何操作,所以现在系统的记录一下
注意:以下将vi和vim两个编辑器统称为vi,遇到不通用的用法我会注明。
模式说明
vi编辑器有三种模式(很重要),只有知道了这三种模式都是什么东西后才能够学会使用vi编辑器
- 一般模式
用vi打开一个文件后首先进入的就是一般模式了,在这个模式中你可以使用方向按键移动光标,可以删除内容,也可以复制粘贴,但是无法对文件内容进行编辑
- 编辑模式
在一般模式中按下“i,I,o,O,a,A,r,R”中的一个按键后就可以进入编辑模式了,其中不同的字母有不同的含义,后面会进行介绍。当进入编辑模式后在终端的左下角的最后一行会出现“INSERT”或"REPLACE”的字样,这样就代表进入编辑模式了,如果想退出编辑模式就按ESC键退出编辑模式就可以了,按下ESC后会退出到一般模式中
- 命令模式
在一般模式中,输入":,/,?"这3个字符中的一个就可以进入到命令模式了,当然也是一样,不同的字符代表不同的含义,后面会介绍,如果要退出还是按下ESC键退回到一般模式
按键及命令说明
这里先说一下如何使用vi或vim打开一个文件,直接执行 vi filename 或 vim filename 就可以了,其中filename是你的文件名字,如果找不到它会自动新建
按键/命令 | 说明 |
---|---|
方向键 [↑][↓][←][→] | 向对应方向移动光标 |
[ESC] | 如果在非一般模式时退出当前模式返回到一般模式 |
以下为一般模式下的常用按键及命令
按键/命令 | 说明 |
---|---|
i,I | 以插入模式进入编辑模式 i为从目前光标的位置插入,I为在目前行的第一个非空格处插入 |
a,A | 以插入模式进入编辑模式 a 为从光标的下一个字符处开始插入,A为从光标所在行的最后一个字符处开始插入 |
o,O | 以插入模式进入编辑模式 o为在目前光标所在的下一行处插入新的一行,O为在光标所在行的上一行出入新的一行 |
r,R | 以替换模式进入编辑模式 r 只会替换光标所在那一个字符一次,R会一直替换光标所在的文字 |
ctrl + f | 向下翻页,相当于 Page Down 键 |
ctrl + b | 向上翻页, 相当于Page Up 键 |
ctrl + d | 向下翻半页 |
ctrl + u] | 向上翻半页 |
0或Home | 将光标移动到当前行的起始位置 |
$或End | 将光标移动到当前行的末尾位置 |
G | 移动到这个文件的最后一行(注意是大写的) |
nG | 移动光标到第n行(注意G是大写的,n代表行数) |
gg | 移动光标到这个文件的第一行 |
nEnter | n为数字,将光标移动到第n行,比nG香 |
u | 复原前一个操作相当于撤销 |
ctrl + r | 重做上一个操作,和u相反 |
. | 这个玩意是小数点,意思是重复上一个操作 |
查找命令
下面的内容查找和替换的了啊,注意还是在一般模式下
按键/命令 | 说明 |
---|---|
/word | 向下查找word字符串,word是要查找的内容 |
?word | 向上查找word字符串 |
n | 查找下一个 |
N | 查找上一个 |
:n1,n2s/word1/word2/g | 在n1行和n2行之间将word1替换为word2 |
:1,$s/word1/word2/g | 从第一行到最后一行将word1替换word2 |
:1,$s/word1/word2/gc | 功能和上一个一样,但是在替换前会让用户进行确认 |
删除,复制,粘贴
从这嘎达开始就是删除复制粘贴这些常用的命令了,注意还是在一般模式下
按键/命令 | 说明 |
---|---|
dd | 删除光标所在的一整行 |
ndd | 删除光标所在的向下n行 |
d1G | 删除光标所在行到第一行的所有数据 |
dG | 删除光标所在行到最后一行的所有数据 |
d$ | 删除光标到行末的内容 |
d0 | 删除光标到本行最开始的所有内容 |
yy | 复制当前行 |
nyy | 复制光标所在的向下n行 |
y1G | 复制光标所在行到第一行的所有数据 |
yG | 复制光标所在行到最后一行的所有数据 |
y$ | 复制光标到行末的内容 |
y0 | 复制光标到本行最开始的所有内容 |
p,P | p粘贴到光标所在的下一行,P粘贴到光标所在的上一行 |
J | 将下一行和当前行拼接在一起 |
命令
这个位置是应用于命令模式的命令,不用可以的切换到命令模式,直接在一般模式下输入:command就可以执行命令模式下的命令了,其中command是你要执行的命令
命令 | 说明 |
---|---|
:w | 保存 |
:w! | 强制保存,比如当前文件如果是只读文件,是无法进行保存的,使用w!可以尝试保存,具体能否成功保存还要看你对该文件是否有足够的权限 |
:q | 退出vi |
:q! | 强制退出,不保存修改内容 |
:wq | 保存退出 |
:wq! | 强制保存退出 |
:w[finename] | 另存为filename |
:! command | 暂时离开vi到命令行模式下执行command的显示结果。例如":! ls /home "即可在vi中查看/home下的内容 |
:set nu | 显示行号 |
: set nonu | 关闭行号 |
块拷贝
我们经常需要选中一部分文本进行拷贝,但是上面说的拷贝是应用到行么,所以不是很方便,接下来就要说说块拷贝了,了解了块拷贝以后就可以想怎么复制就怎么复制了
命令 | 说明 |
---|---|
v | 字符选择,会将光标经过的地方高亮选择 |
V | 行选择,会将光标经过的行高亮 |
Ctrl + v | 块选择,可以用长方形的方式选择数据 |
y | 将高亮的地方复制 |
d | 将高亮的地方删除 |
Notice: 以上内容部分整理自《鸟哥的Linux私房菜》
详细内容请查询《鸟哥的Linux私房菜 第三版》10.2 节