教你学会Linux/Unix下的vi文本编辑器
2024-09-04 08:04:58
vi编辑器是Unix/Linux系统管理员必须学会使用的编辑器。看了不少关于vi的资料,终于得到这个总结。
首先,记住vi编辑器的两个模式:1、命令模式 2、编辑模式。
在一个UNIX/Linux的shell命令或者一个以斜杠(/)、问号(?)或冒号(:)开始的vi命令后面用户需要键入回车键,而要切换到vi命令模式需要按Esc键。注意,以冒号(:)或者斜杠(/) 开始的vi命令会显示在屏幕底部,但其他命令都不会显示在屏幕上。
打开、写入和关闭文件(使用Enter键)
vi file 打开文件名为file的文件(UNIX shell命令)
:w 将工作缓冲区的变化写入默认文件中
:w file 将工作缓冲区的变化写入名为file的文件中
:q 退出vi编辑器
:wq 将工作缓冲区的变化写入文件并退出
:q! 不将工作缓冲区的变化写入文件并退出vi编辑器
插入文本(vi命令模式下使用)
a 在当前光标位置的右边添加文本
i 在当前光标的左边插入文本
A 在当前行的末尾添加文本
I 在当前行的开始出添加文本
O 在当前行的上面新建一行
o 在当前行的下面新建一行
R 替换(覆盖)当前光标位置以及以后的若干文本
J 连接光标所在行以及下一行,成为一行
移动光标
上下左右方向键 向箭头所示方向移动光标一个位置
h 向左
j 向下
k 向上
l 向右
空格键 向右
Backspace 向左
Enter 向下移动到下一行的行首
-(连字符键) 向上移动到上一行的行首
纠正错误(vi命令模式下使用)
x 删除一个字符
dd 删除当前行
ndd 上除当前行在内的n行
u 撤销上一次操作(最后一步)
U 撤销对当前行的所有操作
拼写检查(UNIX shell命令)
spell file 显示问及那file中找到的拼写错误
ispell file 显示问及那file中找到的拼写错误
搜索(vi命令模式下使用)
/word 向前搜索第一个出现的word
/ 继续向前搜索下一个word
?word 向后搜索第一个出现的word
? 继续向后搜索下一个word
跳跃到指定行(vi命令模式使用)
n+ 向前(向下)跳跃n行
n- 向后(向上)跳跃n行
nG 跳跃到行号为n的行,G为Go
G 跳跃到文件的底部
设置行号(vi命令模式下使用)
:set nu 在屏幕上显示行号
:set nonu 取消行号
复制和粘贴(vi命令模式下使用)
"knyy 复制n行到缓冲区"k
"kp 将缓冲区"k的内容粘贴到当前行的下面
全局替换文本(vi命令模式下使用)
:%s/old/new/g 用new替换文件中的所有old。s为substitution,替换的意思。g为global。
编辑另一个文件(vi命令模式下使用)
:e otherfile 编辑文件名为otherfile的文件
为命令行编辑制定一个编辑器(UNIX shell命令)
bindkey -v 指定vi编辑器(用于 tcsh)
VISUAL=vi 指定vi编辑器(用于 ksh)
set -o vi 指定vi编辑器(用于 bash)
缓冲区:
前面讲过,vi编辑器设计上是对工作缓冲区的文件副本进行编辑。在使用vi编辑器的时候,用户还可以访问其他缓冲区。总共有36个缓冲区。
◆ 未命名缓冲区
◆ 已命名缓冲区 "a、"b、"c、……、 "z
◆ 已编号缓冲区 "1、"2、"3、……、 "9
未命名缓冲区有时也叫做一般缓冲区。在修改文本时,旧文本并没有被立刻删除。vi将旧文本放在未命名缓冲区直到用户删除修改更多的文本。这样就可以实现撤 销,具体命令为 u。因为vi只有一个未命名缓冲区,所以只能撤销一次。
命令模式和编辑模式的切换:
如果不清楚当前所在的模式,可以连续按2次Esc键盘,主机会发出警报声,这样就肯定进入了命令模式。在命令模式下面,输入a A i I O o R都会进入编辑模式。所输入的这单个字符不会显示,也不会插入到文件中。
本文出自 “Eric Chen” 博客,请务必保留此出处http://skycyc23.blog.51cto.com/231267/352596
最新文章
- 算法与数据结构(十七) 基数排序(Swift 3.0版)
- SQL 一条SQL语句 统计 各班总人数,男女各总人数 ,各自 男女 比例 (转)
- 用于PHP的Gearman Worker管理工具GearmanManager
- easyui-datagrid通过action从数据库获取数据的关键代码
- 程序员的Scala
- mysql 数据库基本命令语句
- Tensorflow基本语法
- break,continue的区别
- 解决xadmin登录卡顿延迟的问题
- 1. Tensorflow高效流水线Pipeline
- 003-SqlHelper.cs/Web.config
- 20155210 Exp9 Web安全基础实践
- Jenkins使用简易教程
- jQuery实现ToolTip元素定位显示功能示例
- UVA-673-栈-水题
- ZenCart分类数量打折Category Quantity Discount插件
- JavaScript常用DOM操作方法和函数
- java中是如何解决编码问题的,比如char类型的对象是如何存储的呢?
- 2018.9.9 Tomcat是怎样运行的
- 基于zookeeper或redis实现分布式锁
热门文章
- Ribbon整合Eureka,出现 No instances available for XXX 异常
- 洛谷 - P1801 - 黑匣子 - 对顶堆
- Nginx系列篇三:linux中Nginx+keepalived做一个高可用的主从配置
- AtCoder Grand Contest 003 F - Fraction of Fractal
- LightOj 1170 - Counting Perfect BST (折半枚举 + 卡特兰树)
- 记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof
- 18.3.1获得Class对象
- 当不知道基本数据类型的取值范围时,可以通过max_value等来查询
- Spark MLlib编程API入门系列之特征选择之R模型公式(RFormula)
- .NET Core WebAPI Swagger使用