博客地址:http://www.moonxy.com

一、前言

Vi 与 Vim 都是多模式编辑器,是 Linux 中必不可少的工具。不同的是 Vim 是 Vi 的升级版本,它不仅兼容 Vi 的所有命令,Vi 使用于文本编辑,但是 Vim 更适用于 Coding。不仅如此,Vim 还有一些新的特性在里面。
Vim 的这些优势主要体现在以下几个方面:
1、多级撤消:我们知道在 vi 里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。
2、易用性:Vi 只能运行于 Unix中,而 Vim 不仅可以运行于 Unix,Windows,Mac 等多操作平台。
3、语法加亮:Vim 可以用不同的颜色来加亮你的代码。
4、可视化操作:就是说 Vim 不仅可以在终端运行,也可以运行于 X Window、 Mac OS、 Windows。
5、对 Vi 的完全兼容:某些情况下,你可以把 Vim 当成 Vi 来使用。

二、三种模式

Vi 和 Vim 都有 3 种模式,分别为:一般模式、编辑模式、命令模式。

2.1 一般模式

该模式可以移动光标、删除字符等。
使用 vim filename 编辑一个文件时,默认进入该文件的一般模式,如果还没有安装 Vim,则可以使用 yum 先安装:[root@ryan ~]# yum install -y vim-enhanced

一般模式 - 移动光标

h 或向左方向键(←):光标"向左"移动一个字符;
j 或向下方向键(↓):光标"向下"移动一个字符;
k 或向上方向键(↑):光标"向上"移动一个字符;
l 或向右方向键(→):光标"向右"移动一个字符;
[Ctrl]+[f]或者[Page Down] 按键:屏幕"向下"移动一页;
[Ctrl]+[b]或者[Page Up] 按键:屏幕"向上"移动一页;
[Ctrl]+[d]:屏幕"向下"移动半页;
[Ctrl]+[u]:屏幕"向上"移动半页;
0 或者 Shift+6:数字"0",移动到本行的行首(常用);
Shift+4:移动到本行行尾(常用);
gg:移动到这个文件的首行,相当于 1G(常用);
G:移动到这个文件的最后一行(常用,先按 Capse Lock 切换到大写,然后再按字母 G);
nG:n 为任意数字。移动到这个文件的第 n 行。例如 20G 则会移动到这个文件的第 20 行(常用,可配合显示行号 :set nu);
n<Enter>:n 为数字,然后按回车键,光标向下移动 n 行;

一般模式 - 删除、复制与粘贴

x,X:在一行字中,x 为向后删除一个字符(相当于 [Del] 按键),X 为向前删除一个字符(常用,相当于 [backspace] 即退格键);
nx:n 为数字,连续向后删除n个字符。举例来说,要连续删除10个字符,则输入"10x";
dd:删除/剪切光标所在的那一整行(常用);
ndd:n 为数字。从光标位置开始,向下删除/剪切 n 行,例如 20dd 则是从光标行开始向下删除/剪切20行(常用);
d1G:删除光标所在位置到第一行的所有数据;
dG:删除光标所在位置到最后一行的所有数据;
d$:删除光标所在位置到该行的最后一个字符;
d0:d 的后面是数字0,删除光标所在处,到该行的最前面一个字符;
yy:复制光标所在的那一行(常用);
nyy:n为数字。复制光标所在的向下n行,例如 20yy 则是复制 20 行(常用);
y1G;复制光标所在行到第一行的所有数据;
yG;复制光标所在行到最后一行的所有数据;
y0:复制光标所在的那个字符到该行行首的所有数据;
y$:复制光标所在的那个字符到该行行尾的所有数据;
p,P:p 为将已复制的数据粘贴到光标的下一行,P 则为贴在光标上一行。举例来说,当前光标在第20行,且已经复制了10行数据。则按下 p 后,那10行数据会贴在原来的20行之后,即由21行开始贴。但如果是按下 P,那么原来的第20行会被变成30行(常用);
J:将光标所在行与下一行的数据结合成同一行;
c:重复删除多个数据,例如向下删除10行,[10cj];
v:按 v 后移动光标会选中指定字符,然后可以实现复制、粘贴等操作;
y:复制选中的字符;
.:这是小数点,意思是重复前一个动作。如果想重复删除、重复粘贴,按下小数点"."就可以;
u:复原前一个操作(常用);
[Ctrl]+r:重做上一个操作(常用);
u 与 [Ctrl]+r 是很常用的命令。一个是复原,另一个则是重做一次。利用这两个功能按键,编辑起来就得心应手。

2.2 编辑模式

在此模式下可以输入字符,按 ESC 键将回到一般模式。 
一般模式下不可以修改某一个字符,如果要修改字符,只能进入编辑模式,从一般模式进入编辑模式,只需按 i、I、a、A、o、O、r 或 R 中的任何一个键即可。进入编辑模式后,在屏幕左下方会显示"-- INSERT --"或"-- REPLACE --"提示,从编辑模式回到一般模式时,只需要按 Esc 键即可。
i、I
插入:在当前光标所在处插入输入文字,已存在的文字会向后退;其中,i 为"从当前光标所在处插入",I 为"在当前所在行的第一个非空格符处开始插入"(常用);
a、A
a 为"从当前光标所在的下一个字符处开始插入",A 为"从光标所在行的最后一个字符处开始插入"(常用);
o、O
这是英文字母 o 的大小写。o 为"在当前光标所在的下一行处插入新的一行";O 为"在当前光标所在处的上一行插入新的一行"(常用);
r、R
替换:r 会替换光标所在的那一个字符;R 会一直替换光标所在的文字,直到按下 ESC 键为止;
使用上面这些按键时,在vi画面的左下角处会出现"--INSERT--"或"--REPLACE--"的字样。通过名称就知道是什么操作。特别注意,上面也提过了,想在文件中输入字符时,一定要在左下角处看到 INSERT/REPLACE 才能输入。

2.3 命令模式

该模式可以实现保存文件、退出 Vi、设置 Vi、查找、替换等操作。 
在一般模式下,输入 ":" 或者 "/" 即可进入命令模式。在该模式下,我们可以搜索某个字符或者字符串,也可以实现保存、替换、退出、显示行号等操作。
/word
从光标位置开始,向下寻找一个名为 word 的字符串。例如要在文件内搜索 word 这个字符串,就输入 /word 即可(常用);
?word
从光标位置开始,向上寻找一个名为 word 的字符串;
n
n 是小写英文字母。表示"重复前一个搜索的动作"。举例来说,如果刚刚执行 /word 去向下搜索 word 字符串,则按下 n 后,会向下继续搜索下一个名称为 word 的字符串。如果是执行 ?word 的话,那么按下 n,则会向上继续搜索名称为 word 的字符串;
N
N 是大写英文字母。与 n 刚好相反,为"反向"进行前一个搜索操作。例如 /word 后,按下N则表示"向上"搜索 word;
:n1,n2s/word1/word2/g
n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串替换为 word2。举例来说,在 100 到 200 行之间搜索 word1 并替换为 word2,如果不加 g 则只替换每行的第一个 word1,如:":100,200s/word1/word2/g"(常用);
:1,$s/word1/word2/g
从第一行到最后一行寻找 word1 字符串,并将该字符串替换为 word2(常用);
:1,$s/word1/word2/gc
从第一行到最后一行寻找 word1 字符串,并将该字符串替换为 word2。且在替换前显示提示符给用户确认(conform)是否需要替换(常用);
:w
将编辑的数据写入硬盘文件中保存,但不离开;
:w!
若文件属性为"只读"时,强制写入该文件。不过,到底能不能写入,与文件权限有关;
:q
离开 vi;
:q!
若曾修改过文件,又不想存储,使用 ! 为强制离开不存储文件;注意一下,那个感叹号(!)在 vi 当中,常常具有"强制"的意思(常用);
:wq
存储后离开,若为 :wq! 则为强制存储后离开(常用);
:e!
将文件还原到最原始的状态;
ZZ
若文件没有更改,则不存储离开,若文件已经更改,则存储后离开;
:w [filename]
将编辑的数据存储成另一个文件(类似另存新文件);
:r [filename]
在编辑的数据中,读入另一个文件的数据。即将"filename"这个文件内容加到光标所在行的后面;
:n1,n2 w [filename]
将 n1 到 n2 行的内容存储成 filename 文件;
:! command
暂时离开 vi 到命令行模式下执行 command 的显示结果。例如":! ls /home",即可在vi中查看 /home 中以 ls 输出的文件信息;
:set nu
显示行号,设置之后,会在每一行的前缀显示该行的行号;
:set nonu
与 set nu 相反,为不显示行号;
注意,在 vi 中,"数字"是很有意义的。数字通常表示重复做几次的意思。也有可能表示要去哪里的意思。举例来说,要删除 50 行,则是用"50dd"。数字加在动作之前。要向下移动20行,使用"20j"或者"20↓"即可。

Linux 笔记 - 第七章 Vi 和 Vim 编辑器的更多相关文章

  1. 鸟哥的linux私房菜——第九章学习(vim编辑器)

    第九章vim编辑器 1.0).vi与vim Linux下文本界面的文书编辑器通常会有常常听到的就有: emacs, pico, nano, joe, 与 vim 等等. vi的优势: 所有的 Unix ...

  2. Android群英传笔记——第七章:Android动画机制和使用技巧

    Android群英传笔记--第七章:Android动画机制和使用技巧 想来,最 近忙的不可开交,都把看书给冷落了,还有好几本没有看完呢,速度得加快了 今天看了第七章,Android动画效果一直是人家中 ...

  3. Linux 入门记录:五、vi、vim 编辑器

    一.vi.vim编辑器 vi 是一个命令行界面下的文本编辑工具,最早在 1976 年由 Bill Joy 开发.当时名字叫做 ex.vi 支持绝大多数操作系统(最早在类 Unix 操作系统的 BSD上 ...

  4. Linux学习之十三-vi和vim编辑器及其快捷键

    vi和vim编辑器及其快捷键 1.vi与vim区别 它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方 ...

  5. JVM学习笔记-第七章-虚拟机类加载机制

    JVM学习笔记-第七章-虚拟机类加载机制 7.1 概述 Java虚拟机描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被 ...

  6. Linux系统vi或者vim编辑器中如何显示行号

    设置行号很简单 我们要到vi或者vim编辑器的命令模式下,输入set number :set number 按下回车就显示行号了 那么怎么关闭行号呢? 很简单,我们只要再到vi或者vim编辑器的命令模 ...

  7. vi与vim编辑器与解决vim编辑异常

    目录 一:vi与vim编辑器 二:解决vim编辑异常 一:vi与vim编辑器 vim是vi的升级版编辑器,就是vim比vi丰富一些. 1.安装vim 命令 yum install vim -y 2.打 ...

  8. linux学习笔记--vi与vim编辑器

    vi编辑器全名为Visual Interface,即为可视化接口,类似于Windows中的记事本 vim相当于是vi的一个升级版本,包含vi的一切操作命令,vim相对于vi做了哪些提升: 1.vim支 ...

  9. linux的vi和vim编辑器操作

    vi:linux内部的文本编辑器:vim:vi的增强版,具有程序编辑的能力. vi和vim的三种常见模式: (1)正常模式(一般模式):vim一打开就是这种模式,此模式下可以使用各种快捷键,比如复制粘 ...

随机推荐

  1. ZooKeeper系列(五)—— ACL 权限控制

    一.前言 为了避免存储在 Zookeeper 上的数据被其他程序或者人为误修改,Zookeeper 提供了 ACL(Access Control Lists) 进行权限控制.只有拥有对应权限的用户才可 ...

  2. linux command line learn - get the absolute path of a file

    get the absolute path of a file in linux readlink -f filenme [heshuai@login01 3_Variation_calling]$ ...

  3. mybatis 源码分析(三)Executor 详解

    本文将主要介绍 Executor 的整体结构和各子类的功能,并对比效率: 一.Executor 主体结构 1. 类结构 executor 的类结构如图所示: 其各自的功能: BaseExecutor: ...

  4. 四六级成绩还可以这样查?Python助你装B一步到位!!!

    昨天有很多同学在朋友圈秀六级成绩 一个个都如(sang)此(jin)优(tian)秀(liang) 当然也有悲催的哥们 对于上面这位老弟 我只能说:骚呢,兄弟 这种事都能赶上,必须点赞 一.需求分析 ...

  5. RobotFrameWork Web自动化测试环境搭建

    前言 Robot Framework是一款python编写的功能自动化测试框架.具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行.主要用于轮次很多的验收 ...

  6. java高并发系列 - 第32天:高并发中计数器的实现方式有哪些?

    这是java高并发系列第32篇文章. java环境:jdk1.8. 本文主要内容 4种方式实现计数器功能,对比其性能 介绍LongAdder 介绍LongAccumulator 需求:一个jvm中实现 ...

  7. Leetcode之深度优先搜索&回溯专题-679. 24 点游戏(24 Game)

    Leetcode之深度优先搜索&回溯专题-679. 24 点游戏(24 Game) 深度优先搜索的解题详细介绍,点击 你有 4 张写有 1 到 9 数字的牌.你需要判断是否能通过 *,/,+, ...

  8. 百度地图小Demo---获取当前地址以及拖拽显示地址

    1.效果图 2.源码 主要使用百度地图的JavaScript API文件,以及一个JQuery文件. <!doctype html> <html lang="en" ...

  9. Linux shell 内部命令与外部命令有什么区别以及怎么辨别

    内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留 ...

  10. Keras(六)Autoencoder 自编码 原理及实例 Save&reload 模型的保存和提取

    Autoencoder 自编码 压缩与解压 原来有时神经网络要接受大量的输入信息, 比如输入信息是高清图片时, 输入信息量可能达到上千万, 让神经网络直接从上千万个信息源中学习是一件很吃力的工作. 所 ...