【鸟哥的LINUX私房菜】查缺补漏(一)Vim的简单操作
一、前言
本文是基于本人二刷复习书本知识还没掌握的常用知识回顾,写下来便于记忆
二、Vim命令
移动光标
- [ctrl] + [f]
屏幕向下移动一页
- [ctrl] + [b]
屏幕向上移动一页
- 0
移动到这一行的最顶端(相当于home)
- $
移动到这一行的最后面字符
查找与替换
- :n1,n2s/word1/word2/g
n1n2为数字,在n1和n2之间寻找word1这个字符串,并把word1替换为word2
- :1,$s/word1/word2/g
从第一行到最后一行寻找word1这个字符串,并把word1替换为word2
- :1,$s/word1/word2/gc
从第一行到最后一行寻找word1这个字符串,把word1替换为word2,且在替换前询问是否要进行替换
删除复制与粘贴
- x和X
x为向后删除一个字符(相当于del),X为向前删除一个字符(相当于backspace)
- ndd
删除光标所在的向下n行
- nyy
复制光标所在的向下n行
- y1G
复制光标所在行到第一行的所有数据
- yG
复制光标所在行到最后一行的所有数据
- p和P
p为将已复制的数据在光标下一行进行粘贴,P为贴在光标的上一行
- u
恢复前一个操作
- [ctrl] + r or .
重做上一个操作
三 、一个巩固的小例题
- 请在 /tmp 这个目录下创建一个名为 vitest 的目录;
“mkdir /tmp/vitest”
- 进入 vitest 这个目录当中;
“cd /tmp/vitest”
- 将 /etc/man_db.conf 复制到本目录下面
“cp /etc/man_db.conf .”
- 使用 vi 打开本目录下的 man_db.conf 这个文件;
“/bin/vi man_db.conf”
- 在 vi 中设置一下行号;
“:set nu”然后你会在画面中看到左侧出现数字即为行号。
- 移动到第 43 列,向右移动 59 个字符,请问你看到的小括号内是哪个文字?
先按下“43G”再按下“59→”会看到“ as ”这个单字在小括号内;
- 移动到第一列,并且向下搜寻一下“ gzip ”这个字串,请问他在第几列?
先执行“1G”或“gg”后,直接输入“/gzip”,则会去到第 93 列才对!
- 接着下来,我要将 29 到 41 列之间的“小写 man 字串”改为“大写 MAN 字串”,并且一个一个挑选是否需要修改,如何下达指令?如果在挑选过程中一直按“y”, 结果会在最后一列出现改变了几个 man 呢?
:29,41s/man/MAN/gc
- 修改完之后,突然反悔了,要全部复原,有哪些方法?
按下u返回
- 我要复制 66 到 71 这 6 列的内容(含有MANDB_MAP),并且贴到最后一列之后;
66G + 6yy + G + p
- 113 到 128 列之间的开头为 # 符号的注解数据我不要了,要如何删除?
113G + 16dd
- 将这个文件另存成一个 man.test.config 的文件名;
:w man.test.config
- 去到第 25 行,并且删除 15 个字符,结果出现的第一个单字是什么?
25G + 15x,出现tree的字样
- 在第一行新增一行,该行内容输入“I am a student…”;
gg + O,输入“I am a student...”
- 储存后离开吧!
:wq
四、其他一些操作的补充
- :sp filename
打开一个新窗口,如果有filename,表示创建一个新文件
- [ctrl] + w + 方向键
切换窗口
- [ctrl] + x -> [ctrl] + o
语法级补全
- [ctrl] + x -> [ctrl] + n
文件的内容名字补全
- :set nu / set nonu
设置与取消行号
本人的第一篇文章,Hello World~