Vi对于linux的重要性和受欢迎的程度在此一律不表。此刻互联网上不少介绍vi的文章和博客,相信写得比我好的也不在少数。然而为什么我依然写这样一篇文章呢?我对linux知识和了解也都来自于互联网,很难想象在没有互联网的情况下我能不能学会这些最基本的操作。其实用linux也有些年头了,但基本也就停留在小白的阶段。常常抱着够用就行的心态,因而学懂那几行常用的命令后也就再没有深入地了解了。常听人说起,写和讲是为了更好地学。由于各种原因,也有段时间没用vi了。当用起的时候常常会有个印象但又不确定,因而常常GG也就少不了了。与其GG,不如自己记录起来偶尔翻翻。与其说是一篇文章倒不如说是我的私人笔记,文章全然凭自己的理解,写得不明白或者有误的地方也请指出。在我对Vi没有彻底熟烂于心之前,这都是一篇尚未完成的文章。
vi 创建并编辑文件
vi test.txt
- i 、a 、o 命令
按i、a或者o进入编辑模式
然后输入
this is a test file!
- esc 退出编辑模式
按键盘又上角的“esc”键退出编辑模式
- yy 复制和p粘贴
现在复制上面的行并粘贴,输入“yy”复制,然后输入“p”完成粘贴
this is a test file!
this is a test file!
this is a test file!
this is a test file!
- set:number(set:num)显示行号和set:nonumber(set:nonum)取消行号:
1 this is a test file!
2 this is a test file!
3 this is a test file!
4 this is a test file!
- :number,
将光标移到指定行号
- 【 /需要查找的内容】 查找字符串,首次查找后输入“n”即可循环查找字符串
输入“/test”即可查找test这个字符串了,按“n”即可查找下一个想匹配的字符串
- x 删除光标后的字符,X 删除光标前的字符(与 x 的用法一致), dd 删除行
x可删除光标后面的字符,5x表示删除光标后的5个字符。同理dd可删除光标所在行,5dd则是删除光标后的5行(包含光标所在行)
- r 替换光标处的字符,R替换光标所到指出的字符,直到按下ESC键为止
- u 撤销上一次编辑的内容
undo上一次改变。
- U 撤销当前行编辑的内容
undo当前行所有的改变。
- Ctrl + R 恢复撤销的内容
redo被undo了的改变。
- ^ 将光标移到行首和 $ 将光标移到行尾
- gg 回到文档开始的地方
- Ctrl+f
向前翻屏
- Ctrl+b
向后翻屏
- Ctrl+d
向前翻半屏
- Ctrl+u
向后翻半屏
- 保存退出: :x 或 :wq 保存并退出,输入: :q! 不保存退出,:w filename 指定filename保存并退出。
- 查看文件的十六进制: :%!xxd,与 od -t x1 filename 的效果一致
批量替换内容
:%s/原有内容/新内容/g