Vim文本编辑工具

Vim介绍

vim是vi的升级版本,比如:vim编辑文本时,会显示颜色,而vi不显示颜色。

yum安装vim

[root@centos-01 ~]# vim
-bash: vim: 未找到命令
[root@centos-01 ~]# yum install -y vim-enhanced

vim的三种模式

vim的三种模式:一般模式、编辑模式、命令模式。

  1. 一般模式:当vim filename编辑一个文件时,一进入该文件就是一般模式了。在这个模式下,你可以做的操作有:上下移动光标;删除某个字符;删除某行;复制、粘贴一行或者多行。
  2. 编辑模式:一般模式下,是不可以修改某一个字符的。从一般模式进入编辑模式,只需你按一个键即可(i、I、a、A、o、O、r、R)。当进入编辑模式时,会在屏幕的最下一行出现“INSERT”或“REPLACE”的字样。从编辑模式回到一般模式只需要按一下键盘左上方的ESC键即可。
  3. 命令模式:在一般模式下,输入”:”或者“/”即可进入命令模式。在该模式下,你可以搜索某个字符或者字符串,也可以保存、替换、退出、显示行号等。

拷贝文件用作练习

[root@centos-01 ~]# yum install -y dnsmasq
[root@centos-01 ~]# cp /etc/dnsmasq.conf /tmp/1.txt
[root@centos-01 ~]# vim /tmp/1.txt

一般模式下移动光标

按键 行为操作
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 ~]# cp /etc/dnsmasq.conf /tmp/1.txt
[root@centos-01 ~]# vim /tmp/1.txt
  1. 分别向下、向右、向左、向上移动6个字符(6j6l6h6k
  2. 分别向下、向上翻两页(分别按两次Ctrl+fCtrl+b
  3. 把光标移动到第49行(49G
  4. 把光标移动到行尾,再移动到行首(Shift+4Shift+6
  5. 移动到文件的最后一行(G
  6. 移动到文件的首行(gg
  7. 搜索文件中出现的“dnsmasq”(/dnsmasq
  8. 把从第1行到第10行出现的dnsmasq替换成dns(:1,10s/dnsmasq/dns/g
  9. 还原上一步操作(u
  10. 把整个文件中所有的etc替换成cte(:1,$s/etc/cte/g
  11. 还原上一步操作(u
  12. 把光标移动到第37行,删除字符“ly”(37G然后按l向右移动光标找到“ly”,按v选中指定字符再删除)
  13. 还原上一步操作(u
  14. 删除第50行(50G dd
  15. 还原上一步操作(u
  16. 删除第37-42行的所有内容(37G 6dd
  17. 还原上一步操作(u
  18. 复制第48行的内容并粘贴到第52行下面(48G yy 52G p
  19. 还原上一步操作(u
  20. 复制第37-42行的内容并粘贴到第45行上面(37G 6yy 45G P
  21. 还原上一步操作(u
  22. 把第37-42行的内容移动到第19行下面(37G 6dd 19G p
  23. 还原上一步操作(需要按两次u,因为先是剪切再粘贴)
  24. 把光标移动到文本首行,把第1行内容改为“#!/bin/bash”(先按gg,把光标定位到第1行,然后按字母A,进入编辑模式,Ctrl+u删除当前行内容,进行修改操作,完成后按ESC
  25. 在第1行下面插入新的一行,并输入“# Hello!”(按o进入编辑模式,同时光标向下另起一行,输入“# Hello!”)
  26. 保存文档并退出(按ESC键,输入“:wq”)

猜你喜欢

转载自blog.csdn.net/noob_f/article/details/80165151