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
”)