Vi (Visual Interface)是 Linux下基于Shell 的文本编辑器,Vim (Visual Interface iMproved)是 Vi的增强版本,扩展了很多功能,比如对程序源文件的语法高亮。不管是 Vi 还是 Vim,我们习惯上都管它叫 Vi,但实际上用的更多的是 Vim。

在你的系统里用 alias命令看一下 vi,可以发现用到的其实是vim。

 $alias vi
 alias vi='vim'

所有的Linux系统里会内建 Vi,它就像 Windows里的记事本,我们一般修改系统的配置文件都要用到它,所以虽然第一次用会可能不太习惯,但是我们还是要学会使用它。

用 Vi 打开或者新建一个文件只需要输入命令 vi +[文件名]就可以了,然后就进入了Vi的界面。比如用 Vi打开一个hello.c的文件,命令如下:

 $vi hello.c

因为 Vi 是完全基于 Shell 的,它和 Windows下的编辑器不同,分为三种模式:

对于三种不同模式之间的切换,我做了一张图方便大家记忆,可以看到命令模式是枢纽,在插入模式和末行模式之间切换需要先进入命令模式。

一、命令模式

启动 Vi 后会默认进入命令模式。在命令模式下可以看到最下面有一些信息,比如 "hello.c" 是我们当前编辑的文件名,7L 表示共有 7 行,112 C表示共有 112 个字符。1,1 表示当前光标的位置。

在命令模式下,可以完成的功能主要有:

1、光标移动

2、复制、粘贴、删除

3、查找

4、撤消

二、插入模式

插入模式就是我们正常输入或者修改文件内容的模式了,切换方法有三种:

1、输入 i : 在当前光标输入

2、输入a:在当前光标后输入

3、输入o:在下方插入新的一行

在插入模式下,界面最下方会提示 -- INSERT --

aaarticlea/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" data-ratio="1" data-w="1" data-src="https://mmbiz.qpic.cn/mmbiz_png/Gr3LEhZkSDSLORfhib1RvU42nhWTqqKJ9hrP636SKXmVgbIakbWnOzC0zZ2icZ97jFMWCKk5GicvLSeq2bicFT0agQ/640">

三、末行模式

在命令模式下输入 ":" 可以切换到末行模式,在末行模式下,界面最下方有":"提示,这里可以输入我们的命令。

Vi 可以支持的命令非常的多,这里列出几个比较常用的供大家参考:

1、 替换

如果/g 和 /c 要合并使用,可以写成 /gc

2、保存/退出

3、其他命令

最后


Vi 看起来比较复杂,支持的命令也很多,其实最常用的也就几个。Vi的操作靠的是肌肉记忆,把本文中的掌握住基本就够了。

相关阅读

《putty、pscp、psftp 使用教程》

《这么多Linux版本,你究竟该怎么选择?》

《Linux 面试最常问的十个问题》

Vi 和 Vim 的使用的更多相关文章

  1. vi和vim区别及命令详解

    vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本.vi使用于文本编辑,但是vim更适用于coding.     现将vim的命令行收集于下: vi有3个模式:插入模 ...

  2. 【Linux】vi(vim)起步学起来有些困难,一步一步温习

    以Tomcat的配置文件service.xml为例,记录.学习vi的最常用操作. > 什么是vi or vim? [nicchagil@localhost bak]$ man vi VIM() ...

  3. vi/vim使用指北 ---- Learning the vi and Vim Editors 读书 笔记

    vi/vim作为liux系统下最强大,最流行的文本编辑器之一.边看<Learning the vi and vim Editor>边学习vim,顺便做写简单的笔记,供以后查询. 没看这本书 ...

  4. Linux学习笔记之VI(VIM)编辑器

    百度关于vi的资料 http://baike.baidu.com/view/908054.htm 关于vi 和vim的介绍可以在上面的网址看到. 1   进入和退出vi 进入:在终端命令行输入 vi ...

  5. vi、vim 配置上下左右方向键和删除键

    vi.vim 配置上下左右方向键和删除键 " An example for a vimrc file. " " Maintainer: Bram Moolenaar &l ...

  6. Amazon.com: NEW VI AND VIM EDITOR KEYBOARD STICKER: Office Products

    Amazon.com: NEW VI AND VIM EDITOR KEYBOARD STICKER: Office Products NEW VI AND VIM EDITOR KEYBOARD S ...

  7. vi 和vim 的区别

    它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面.vim的这些优势主要体现在以下几个方面:1.多级撤消我们知道在vi里,按 u只能撤消上次命 ...

  8. Kali Linux的vi编辑器/vim编辑器使用方法

    转载声明:本文为转载文章 原文地址:https://www.52host.cn/blog/kali-linux-vi-editor/ Kali Linux系统的vi编辑器/vim编辑器的使用和Cent ...

  9. Shell命令-文件及内容处理之vi、vim

    文件及内容处理 - vi.vim 1.Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器 ...

  10. VI和VIM

    linux下vi.VIM命令大全   进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + file ...

随机推荐

  1. angularjs: draggable js

    var startX = 0, startY = 0, x = 0, y = 0, minDragRang = 50; var targetContainer = angular.element(do ...

  2. orcale 树形结构查询

    接到需求是要在一个表中(表结构为主键id和父id)循环显示数据,类似于省市县++这种情况  也可能不只有三级子菜单 id  name   parentid 1     a          0 2  ...

  3. Pycharm中设置encoding

    在Pycharm专业版中,为了防止文件在别的机器上出现乱码,所以需要进行字符编码的设置. 首先在Pycharm中的View中将下图中的Toolbar打上勾. 接着,工具栏就会出现,选中settings ...

  4. Android FrameWork学习(二)Android系统源码调试

    通过上一篇 Android FrameWork学习(一)Android 7.0系统源码下载\编译 我们了解了如何进行系统源码的下载和编译工作. 为了更进一步地学习跟研究 Android 系统源码,今天 ...

  5. Java 线程池(ThreadPoolExecutor)原理分析与实际运用

    在我们的开发中"池"的概念并不罕见,有数据库连接池.线程池.对象池.常量池等等.下面我们主要针对线程池来一步一步揭开线程池的面纱. 有关java线程技术文章还可以推荐阅读:< ...

  6. Nodejs与Mysql交互实现(异步写法,同步写法)

    https://blog.csdn.net/think_A_lot/article/details/93498737

  7. 数据结构--顺序栈--C++实现

    #include <iostream> #define MaxSize 5000 using namespace std; template <typename T> clas ...

  8. 单源最短路径:Dijkstra算法(堆优化)

    前言:趁着对Dijkstra还有点印象,赶快写一篇笔记. 注意:本文章面向已有Dijkstra算法基础的童鞋. 简介 单源最短路径,在我的理解里就是求从一个源点(起点)到其它点的最短路径的长度. 当然 ...

  9. 别了,JavaScript;你好,Blazor

    Web开发与JavaScript开发向来是同义词.直到WebAssembly的横空出世,WebAssembly (Wasm)是一种在浏览器中可以执行的二进制指令. WebAssembly 的 官方工具 ...

  10. Intersection of Two Linked Lists (求两个单链表的相交结点)

    题目描述: Write a program to find the node at which the intersection of two singly linked lists begins. ...