vim 编辑器
vim 和 vi的区别
1.vi不会高亮显示
2.vim会高亮显示
vim 三种模式
普通模式(命令模式)
# 跳转光标
G:将光标跳转到最后一行(Shift + g)
gg:将光标跳转到第一行
Ngg:将光标跳转到指定行(N代表正整数)
$:将光标跳转到当前所在行的行末
^:将光标跳转到当前所在行的行首(或者按 0)
# 翻页
Ctrl + f :向下翻页
Ctrl + b :向上翻页
# 复制粘贴
yy:复制当前光标所在行的内容
p:将复制的内容粘贴到当前光标所在行的下一行(剪切或者复制的是行)
P:将复制的内容粘贴到当前光标所在行的上一行(剪切或者复制的是行)
#当复制或者剪切的是字符的时候
p:往当前光标所在字符的右边粘贴
P:往当前光标所在字符的左边粘贴
Nyy 或者 yNy:复制多行内容(N代表正整数)
# 删除剪切
dd:剪切
Ndd 或 dNd:剪切多行内容(N代表正整数)
dG:剪切当前光标所在行到文件末尾所有内容
dgg: 剪切当前光标所在行到文件开头所有内容
x:剪切当前光标所在的字符
X:剪切当前光标所在字符的前一个字符
D:(shift + d)删除当前光标,所在字符,之后的内容(行)
# 撤销替换
u:撤销上一步操作
Ctrl + r:恢复刚才的撤销操作
r:替换当前光标所在的字符(只能一个字符替换一个字符,不能替换多个)
R:替换当前光标所在字符和之后的所有内容,直到按ESC取消
编辑模式
# 从普通模式(命令模式)切换到编辑模式
i(insert):在当前光标所在字符之前,插入内容
I(shift + i):将当前光标跳转至行首,然后进入编辑模式,即可插入内容
## 比如说,我们想注释多行内容
1、首先将光标移动到,你要注释的行的第一行。
2、按Ctrl + v,进入到 可视 块
3、按Shift + i
4、输入井号 #
5、按ESC
o:往当前光标所在行的下一行插入内容
O(shift + o):往当前光标所在行的上一行插入内容
s:删除当前光标所在的字符,并且进入编辑模式
S(shift + s):删除当前光标所在行内容,并且进入编辑模式
a:在当前光标所在字符之后,进入编辑模式,插入内容
A(shift + a):在当前光标所在行末尾,进入编辑模式,插入内容
#从编辑模式 切换回 命令模式 按 `ESC`
末行模式
# 编辑模式 无法直接切换到末行模式
# 普通模式 才能直接切换到末行模式
# 使用 冒号, 从普通模式切换到末行模式
:N 切换后,直接输入 N (正整数) 会跳转到指定行
:wq 保存退出(写入并且退出)
write quit
:w 保存不退出
:q 退出不保存
:wq!
:q!
:w!
!: 强制执行
:x 保存退出
ZZ(shift + zz):保存退出
:set nu 显示文件行号
:set nonu 取消显示文件行号
:set ic 忽略大小写
:set noic 取消忽略大小写
:set ai 自动缩进
:set noai 取消自动缩进
:set list 显示制表符,tab..
:set nolist 取消显示制表符
:%s#binkp#zls#g
:%s#binkp#zls#gc
%:全文替换
1,10 1-10行替换
s:替换
g:匹配的所有
c:提示询问
替换为 tcpmux (y/n/a/q/l/^E/^Y)?
y:替换一次
n:选中下一个
a:全部替换
q:退出
l:退出并询问
视图模式
# 可视 行(只能在普通模式 命令模式进入)
Shift + v
# 可视 块
Ctrl + v
### 将一个文件的5-15行,前面加注释
1.首先将光标跳转到第五行
1)5gg
2)上下左右
3):5
2.Ctrl + v 进入可视块模式
3.15gg,将光标选中5-15行
4.Shift + i 进入编辑模式
5.输入 # 号
6.输入 ESC
习题:
请把/etc/passwd 复制到/root/目录下,并重命名为test.txt
[root@iz2zef0336jwbp5hdcc31pz ~]# cp -f /etc/passwd /root/test.txt
用vim打开test.txt并设置行号
[root@iz2zef0336jwbp5hdcc31pz ~]# vim test.txt
1 yntax on
2 set fenc=utf-8
3 set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
4 set number
5 set autoindent
6 set smartindent
7 set tabstop=4
8 set shiftwidth=4
9 set ruler
10 set incsearch
11 set showmatch
12 set matchtime=10
13 set ignorecase
14 set cursorline
15 set t_Co=256
16 vim ~/.vimrc
17
~
~
~
:set nu
分别向下、向右、向左、向右移动5个字符
用方向键移动
分别向下、向上翻两页
向下翻 ctrl+f 向上翻ctrl+b
把光标移动到第10行
10gg
让光标移动到行末,再移动到行首
行末 $ 行首 ^
移动到test.txt文件的最后一行
G
移动到文件的首行
gg
搜索文件中出现的 root 并数一下一共出现多少个,不区分大小写搜索
:set ic
:/root
把从第一行到第三行出现的root 替换成--alex--
:1,3%s#root#--alex--#gc
还原上一步操作
u
把整个文件中所有的root替换成--alex-
:%s#root#--alex--#gc
把光标移动到20行,删除本行
20gg
dd
还原上一步操作
u
删除第19行
19gg
dd
还原上一步操作
u
删除从5行到10行的所有内容
5gg
6dd
还原上一步操作
u
复制2行并粘贴到11行下面
2yy
11gg
p
还原上一步操作(按两次u)
u
u
复制从11行到15行的内容并粘贴到8行上面
11gg
5yy
8gg
p
还原上一步操作(按两次u)
u u
把13行到18行的内容移动文件的尾部
13gg
6dd
$
p
还原上一步操作(按两次u)
u u
光标移动到首行,把/sbin/nologin改成/bin/bash
^
:%s#/sbin/nologin#/bin/bash#g
在第一行下面插入新的一行,并输入"# Hello!"
o
#Hello
保存文档并退出
:wq
#第二大题
01.vim编辑器具哪三种工作模式
普通模式
编辑模式
末行模式
02.已知文件oldboy.txt内容如下
cat>oldboy.txt<<EOF
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
EOF
(1) 显示行号
[root@iz2zef0336jwbp5hdcc31pz ~]# cat -n oldboy.txt
1 I am oldboy teacher!
2 I teach linux.
3
4 I like badminton ball ,billiard ball and chinese chess!
5 my blog is http://oldboy.blog.51cto.com
6 our size is http://blog.oldboyedu.com
7 my qq is 49000448
8
9 not 4900000448.
10 my god ,i am not oldbey,but OLDBOY!
(2) 过滤出以m为开头的行
[root@iz2zef0336jwbp5hdcc31pz ~]# grep '^m' oldboy.txt
my blog is http://oldboy.blog.51cto.com
my qq is 49000448
my god ,i am not oldbey,but OLDBOY!
(3) 过滤出以m为结尾的行
[root@iz2zef0336jwbp5hdcc31pz ~]# grep 'm$' oldboy.txt
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
(4)
root@iz2zef0336jwbp5hdcc31pz ~]# grep -vn '^$' oldboy.txt
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball ,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com
6:our size is http://blog.oldboyedu.com
7:my qq is 49000448
9:not 4900000448.
10:my god ,i am not oldbey,but OLDBOY!
(5) 将光标移动到my blog is http://oldboy.blog.51cto.com这一行,如何快速删除后面的URL并进入到编辑模式输入www.baidu.com
s
(6) 将所有的数字替换成a
:%s#4900000448#a#g
(7) 搜索oldboy忽略大小写
:set ic
:/oldboy
(8) 显示制表符
:set list
(9) 取消行号,保存退出
:set nonu
:wq
03.vim如何插入字符(至少写出三种)
i
o
a
04.根据文件回答下列习题
[root@qzg ~]# cat proxy.conf
server {
Listen 8080;
Server_Name vim.OldboyEDU.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forward-for;
proxy_intercept_errors on;
proxy_next_upstream error timeout;
proxy_next_upstream_timeout 3s;
proxy_next_upstream_tries 2;
error_page 500 502 403 404 = /proxy_error.html;
}
location = /proxy_error.html {
root /code/proxy;
}
}
1).使用vim打开proxy.conf文件
vim proxy.conf
2).修改Listen为listen小写,并将8080修改为80
:%s#Listen#listen#g
:%s#8080#80#g
3).修改Server_Name为server_name小写。
:%s#Server_Name#server_name#g
4).修改vim.OldboyEDU.com为vim.oldboy.com
:%s#vim.OldboyEDU#vim.oldboy.com#g
5).在server_name行下插入一行 root /code;
o
6).复制5-14行的内容,然后将其粘贴到14行下面
5gg
10yy
14gg
p
7).删除与proxy_set_header相关的两行全部删除
:set nu
6dd
7dd
8).如上操作完成后,在13-20行前面加上#号(请批量操作)
1、13gg
2、按ctrl+v,进入到可视块
3、按shift+i
4、输入#
5、按ESC
05.显示以下报错怎么解决
E325: ATTENTION
Found a swap file by the name "/etc/sysconfig/network-scripts/.ifcfg-eth0.swp"
owned by: root dated: Wed Nov 6 10:14:51 2019
file name: /etc/sysconfig/network-scripts/ifcfg-eth0
modified: no
user name: root host name: centos74
process ID: 46981 (still running)
While opening file "/etc/sysconfig/network-scripts/ifcfg-eth0"
dated: Wed Oct 9 11:43:30 2019
(1) Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r /etc/sysconfig/network-scripts/ifcfg-eth0"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file "/etc/sysconfig/network-scripts/.ifcfg-eth0.swp"
to avoid this message.
Swap file
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
06.vim编辑的基本使用流程,以及vi编辑的三种模式和转换关系
Vim工作有三种模式:vim+文件进入普通模式,按“i”就是编辑模式,在按’:‘就是末行模式,再按’ESC‘回到普通模式
07.vim编辑文件时调到文档的最后一行的命令是_G__,跳到第100行的命令是_100gg___
08.复制/etc/passwd到opt目录下,编辑/opt/passwd文件,如何快速将1-10行的前面都插入qiandao
cp /etc/passwd /opt/
vim /opt/passwd
1gg
ctrl + v
1-10
I
qiandao
09.vi编辑器使用_____dd__命令删除当前光标所在的一整行
10.在vim内操作如下指令,并写出指令对应的理解
(1)命令模式
G 光标跳转到行末
gg 光标跳转到行首
5gg 光标跳转到第5行
$ 移动到行末
^ 移动到行首
ctrl+f 向下翻页
ctrl+b 向上翻页
yy 复制
3yy 复制3次
p(小写) 往当前光标所在字符的右边粘贴
P(大写) 往当前光标所在字符的左边粘贴
ZZ 保存退出
dd 删除
5dd 删除第五行
dG 删除左后一行
D 删除光标所在的位置及向后的所有内容,针对行操作
x(小写) 保存退出
X(大写) 保存退出
u 撤销
r 将一个文件的所有写入到当前文件的当前行下面
R 将一个文件的所有写入到当前文件的当前行上面
(2)命令模式进入编辑模式
i 在当前光标插入内容
I 光标快速的移动到行首,并进入编辑模式,在当前光标前插入内容
a 在当前光标后插入内容
A 光标快速的移动到行尾,并进入编辑模式,在当前光标后插入内容
o(小写) 在当前行的下一行另起一行,并进入编辑模式
O(大写) 在当前行的上一行另起一行,并进入编辑模式
(3)末行模式
:w 保存不退出
:w 保存不退出
:q 退出不保存
:q! 强制退出不保存
:wq 保存并退出
:wq! 强制保存并退出
:x 保存退出
:number(数字)
/ 搜索指定字符
:set nu 显示行号