Vim介绍
vim是vi的升级版本,比如:vim编辑文本时,会显示颜色,而vi不显示颜色。
yum安装vim
[root@centos-01 ~]
-bash: vim: 未找到命令
[root@centos-01 ~]
vim的三种模式
vim的三种模式:一般模式、编辑模式、命令模式。
- 一般模式:当
vim filename
编辑一个文件时,一进入该文件就是一般模式了。在这个模式下,你可以做的操作有:上下移动光标;删除某个字符;删除某行;复制、粘贴一行或者多行。 - 编辑模式:一般模式下,是不可以修改某一个字符的。从一般模式进入编辑模式,只需你按一个键即可(i、I、a、A、o、O、r、R)。当进入编辑模式时,会在屏幕的最下一行出现“INSERT”或“REPLACE”的字样。从编辑模式回到一般模式只需要按一下键盘左上方的ESC键即可。
- 命令模式:在一般模式下,输入”:”或者“/”即可进入命令模式。在该模式下,你可以搜索某个字符或者字符串,也可以保存、替换、退出、显示行号等。
拷贝文件用作练习
[root@centos-01 ~]
[root@centos-01 ~]
[root@centos-01 ~]
一般模式下移动光标
按键 | 行为操作 |
---|
h / 向左方向键 | 光标向左移动一个字符 |
j / 向下方向键 | 光标向下移动一个字符 |
k / 向上方向键 | 光标向上移动一个字符 |
l(L的小写) / 向右方向键 / 空格键 | 光标向右移动一个字符 |
Ctrl+f / PageUp键 | 屏幕向前移动一页 |
Ctrl+b / PageDown键 | 屏幕向后移动一页 |
数字0 / Shift+6 | 移动到本行行首 |
Shift+4 | 移动到本行行尾 |
gg | 移动到该文本的首行 |
G | 光标移动到文本的尾行 |
nG(n是数字) | 移动到该文本的第n行 |
Ctrl+d | 屏幕向前移动半页 |
Ctrl+u | 屏幕向后移动半页 |
n空格 / nl(n是数字) | 按下数字然后按空格 / l,则光标向右移动n个字符;如果该行字符小于n,则光标继续从下行开始向右移动一直到n |
一般模式下复制剪切粘贴
按键 | 行为操作 |
---|
dd | 删除/剪切光标所在的那一行 |
ndd(n为数字) | 删除/剪切从光标所在行开始的n行 |
yy | 复制光标所在行 |
nyy | 从光标所在行开始,向下复制n行 |
p | 从光标所在行开始,向下粘贴已经复制的内容 |
P | 从光标所在行开始,向上粘贴已经复制的内容 |
u | 还原上一步操作 |
Ctrl+r | 取消上一步的还原 |
x | 向后删除/剪切一个字符 |
X | 向前删除/剪切一个字符 |
v | 按v后移动光标会选中指定字符,然后可以实现指定字符的复制、剪切等操作 |
进入编辑模式
按键 | 行为操作 |
---|
i | 在当前字符前插入字符 |
I | 在当前行的行首插入字符 |
o | 在当前行下插入新的一行 |
O | 在当前行上插入新的一行 |
a | 在当前字符后插入字符 |
A | 在当前行的行尾插入字符 |
命令模式
按键 | 行为操作 |
---|
/word | 向光标之后寻找一个字符串名为word的字符串,当找到第一个word后,按“n”继续搜后一个,“Shift+n”搜前一个 |
?word | 向光标之前寻找一个字符串名为word的字符串,当找到第一个word后,按“n”继续搜前一个 |
:n1,n2s/word1/word2/g | 在n1和n2行间查找word1这个字符串并替换为word2 |
:1,$s/word1/word2/g | 从第一行到最末行,查找word1并替换成word2 |
:1,$s/word1/word2/gc | 加上c的作用是,在替换前需要用户确认 |
如果查找/替换的字符串含有“\”符号,那么可以在“\”符号前加上“/”符号,例如查找“/etc/hosts”,可以这样操作“/\/etc\/hosts”。查找替换字符串时,字符串包含“\”符号,也可以把“/”换成“#”或者“@”,例如“:1,$s#word1#word2#g”。
按键 | 行为操作 |
---|
:set nu | 在每行的行首显示行号 |
:set nonu | 取消行号 |
:nohl | 取消高亮 |
:w | 将编辑过的文本保存 |
:w! | 若文本属性为只读时,强制保存 |
:q | 退出 |
:q! | 不管编辑或未编辑都不保存退出 |
:wq | 保存退出 |
:x | 在编辑文件后执行“:x”,效果同“:wq”。如果打开文件查看,并没有任何改动,则“:wq”会更改mtime,“:x”不会更改mtime。 |
Vim实践操作
[root@centos-01 ~]
[root@centos-01 ~]
- 分别向下、向右、向左、向上移动6个字符(
6j
、6l
、6h
、6k
) - 分别向下、向上翻两页(分别按两次
Ctrl+f
和Ctrl+b
) - 把光标移动到第49行(
49G
) - 把光标移动到行尾,再移动到行首(
Shift+4
,Shift+6
) - 移动到文件的最后一行(
G
) - 移动到文件的首行(
gg
) - 搜索文件中出现的“dnsmasq”(
/dnsmasq
) - 把从第1行到第10行出现的dnsmasq替换成dns(
:1,10s/dnsmasq/dns/g
) - 还原上一步操作(
u
) - 把整个文件中所有的etc替换成cte(
:1,$s/etc/cte/g
) - 还原上一步操作(
u
) - 把光标移动到第37行,删除字符“ly”(
37G
然后按l向右移动光标找到“ly”,按v
选中指定字符再删除) - 还原上一步操作(
u
) - 删除第50行(
50G
dd
) - 还原上一步操作(
u
) - 删除第37-42行的所有内容(
37G
6dd
) - 还原上一步操作(
u
) - 复制第48行的内容并粘贴到第52行下面(
48G
yy
52G
p
) - 还原上一步操作(
u
) - 复制第37-42行的内容并粘贴到第45行上面(
37G
6yy
45G
P
) - 还原上一步操作(
u
) - 把第37-42行的内容移动到第19行下面(
37G
6dd
19G
p
) - 还原上一步操作(需要按两次
u
,因为先是剪切再粘贴) - 把光标移动到文本首行,把第1行内容改为“#!/bin/bash”(先按
gg
,把光标定位到第1行,然后按字母A
,进入编辑模式,Ctrl+u
删除当前行内容,进行修改操作,完成后按ESC
) - 在第1行下面插入新的一行,并输入“# Hello!”(按
o
进入编辑模式,同时光标向下另起一行,输入“# Hello!”) - 保存文档并退出(按
ESC
键,输入“:wq
”)