Vi 和 Vim 编辑器详细使用方法

学习linux的一项必会技能,熟练使用vi/vim编辑器那便最重要的了。不过一堆操作看的也是太头疼了,以下整理了些常用到的命令。
工作模式
vi编辑界面有三种不同的工作模式,分别为命令模式、输入模式、和末行模式,不同的模式对文件进行的操作也不同。
| 模式 | 判断方法 | 可进行的操作 |
|---|---|---|
| 命令模式 | 启动后默认进入命令模式 | 光标移动、复制、粘贴、删除、字符串查找等 |
| 输入模式 | 最后一行有"--INSERT--"状态提示 | 录入文件内容 |
| 末行模式 | 最后一行有":"提示符 | 保存、退出、查找、替换等 |
- vi/vim 工作模式
这张图说明了三种模式之间的切换方式。

命令模式中的基本操作
- 模式切换
| 操作类型 | 操作键 | 功能 |
|---|---|---|
| 进入输入模式 | a | 光标位置之后插入内容 |
| ^ | A | 光标所在行末尾插入内容 |
| ^ | i | 光标位置之前插入内容 |
| ^ | I | 光标所在行开头插入内容 |
| ^ | o | 光标所在行下面插入新行 |
| ^ | O | 光标所在行上面插入新行 |
| 退出输入模式 | Esc | 退出输入模式,返回命令模式 |
- 光标移动
| 操作类型 | 操作键 | 功能 |
|---|---|---|
| 方向移动 | ↑、↓、←、→ | 上、下、左、右 |
| 翻页 | Page Down或Ctrl+F | 向下翻动一整页内容 |
| ^ | Page Up或Ctrl+ B | 向上翻动一整页内容 |
| 行内快速跳转 | Home键或 "^" 、数字 "0" | 跳转至行首 |
| ^ | End键或 "$" 键 | 跳转到行尾 |
| 行间快速跳转 | 1G或者gg | 跳转到文件的首行 |
| ^ | G | 跳转到文件的末尾行 |
| ^ | #G | 跳转到文件中的第#行 |
| 行号显示 | :set nu | 在编辑器中显示行号 |
| ^ | :set nonu | 取消编辑器中的行号显示 |
- 复制、粘贴、删除
| 操作类型 | 操作键 | 功能 |
|---|---|---|
| 删除 | x或Del | 删除光标处的单个字符 |
| ^ | dd | 删除当前光标所在行 |
| ^ | #dd | 删除从光标所在行开始的#行内容 |
| ^ | d^ | 删除当前光标之前到行首的所有字符 |
| ^ | d$ | 删除当前光标处到行尾的所有字符 |
| 复制 | yy | 复制当前行整行的内容到剪贴板 |
| ^ | #yy | 复制从光标所在行开始的#行内容 |
| 粘贴 | p | 将缓冲区中的内容粘贴到光标位置处之后 |
| ^ | P | 粘贴到光标位置处之前 |
- 文件内容查找
| 操作键 | 功能 |
|---|---|
| /word | 从上而下在文件中查找字符串"word" |
| ?word | 从下而上在文件中查找字符串"word" |
| n | 定位下一个匹配的被查找字符串 |
| N | 定位上一个匹配的被查找字符串 |
- 撤销编辑及保存退出
| 操作键 | 功能 |
|---|---|
| u | 按次取消最近的一次操作;重复u键,恢复多步操作 |
| U | 用于取消对当前行所做的所有编辑 |
| ZZ | 保存当前的文件内容并退出vi编辑器 |
末行模式中的基本操作
- 保存文件及退出 vi 编辑器
| 功能 | 命令 | 备注 |
|---|---|---|
| 保存文件 | :w | 保存修改的内容 |
| ^ | :w /root/newfile | 另存为其它文件 |
| 退出 | :q | 未修改退出 |
| ^ | :q! | 放弃对文件内容的修改,并退出 |
| 保存文件退出 | :wq | 保存修改的内容并退出 |
- 打开新文件或读入其他文件内容
| 命令 | 功能 |
|---|---|
| :e ~/install.log | 打开新的文件进行编辑 |
| :r /etc/filesystems | 在当前文件中读入其他文件内容 |
- 文件内容替换
| 命令 | 功能 |
|---|---|
| :s /old/new | 将当前行中查找到的第一个字符串 "old" 替换为 "new" |
| :s /old/new/g | 将当前行中查找到的所有字符串 "old" 替换为 "new" |
| :#,# s/old/new/g | 在行号 "#,#" 范围内替换所有的字符串 "old" 为 "new" |
| :% s/old/new/g | 在整个文件范围内替换所有的字符串 "old" 为 "new" |
| :s /old/new/c | 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认 |
vi/vim 键盘图
附上一张中文版的
vi/vim键盘图,里面应该是把所有的操作都注明了,不知你怎么想,反正我是看蒙了。
原英文版图片:vi-vim-cheat-sheet

参考说明
菜鸟教程是一个很不错的学习网站,在学习Linux的过程中,给过我不少帮助。
Vi 和 Vim 编辑器详细使用方法的更多相关文章
- Linux 入门记录:五、vi、vim 编辑器
一.vi.vim编辑器 vi 是一个命令行界面下的文本编辑工具,最早在 1976 年由 Bill Joy 开发.当时名字叫做 ex.vi 支持绝大多数操作系统(最早在类 Unix 操作系统的 BSD上 ...
- Linux系统vi或者vim编辑器中如何显示行号
设置行号很简单 我们要到vi或者vim编辑器的命令模式下,输入set number :set number 按下回车就显示行号了 那么怎么关闭行号呢? 很简单,我们只要再到vi或者vim编辑器的命令模 ...
- Linux学习之十三-vi和vim编辑器及其快捷键
vi和vim编辑器及其快捷键 1.vi与vim区别 它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方 ...
- vi与vim编辑器与解决vim编辑异常
目录 一:vi与vim编辑器 二:解决vim编辑异常 一:vi与vim编辑器 vim是vi的升级版编辑器,就是vim比vi丰富一些. 1.安装vim 命令 yum install vim -y 2.打 ...
- 五、Vi和Vim编辑器
1. Vim编辑器: 在Linux下一般使用vi编辑器来编辑文件.vi既可以查看文件也可以编辑文件.三种模式: 命令行.插入.底行模式 切换到命令行模式:按Esc键: 切换到插入模式:按 i .o.a ...
- linux的vi和vim编辑器操作
vi:linux内部的文本编辑器:vim:vi的增强版,具有程序编辑的能力. vi和vim的三种常见模式: (1)正常模式(一般模式):vim一打开就是这种模式,此模式下可以使用各种快捷键,比如复制粘 ...
- linux学习笔记--vi与vim编辑器
vi编辑器全名为Visual Interface,即为可视化接口,类似于Windows中的记事本 vim相当于是vi的一个升级版本,包含vi的一切操作命令,vim相对于vi做了哪些提升: 1.vim支 ...
- 学习vi和vim编辑器(5):越过基础的藩篱
本章将对之前学习的编辑命令如" c "." d "." y "等命令进行总结,并学习一些新的知识:其它进入vi的方法,利用缓冲区来存储拖曳或 ...
- Linux实操篇 vi和vim编辑器
vi和vim的基本介绍 所有的Linux系统都会内建vi文本编辑器. vim具有程序编辑的能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计.代码补完.编译及错误跳转等 ...
随机推荐
- ubuntu连接多个realsense d435
ubuntu连接多个realsense d435 import pyrealsense2 as rs import numpy as np import cv2 import time import ...
- 【jmeter】使用jmeter进行测试-示例
介绍 jmeter主要用于负载测试,详细信息可以参见Google. 这里使用一个简单的示例,来介绍jmeter的使用. 涉及的功能点包括: HTTP HEADER配置 HTTP Request配置 J ...
- 深入理解JVM虚拟机
JVM平台上还可以运行其他语言,运行的是Class字节码.只要能翻译成Class的语言就OK了.挺强大的. JVM厂商很多 垃圾收集器.收集算法 JVM检测工具 关于类的加载: Java代码中,类型( ...
- 对step文件进行信息抽取算法
任务描述:给定一个step文件,对该文件的字符串进行信息抽取,结构化的组织文件描述模型的数据.形成抽象化数据结构,存入计算机数据库.并能按照有条理结构把这些数据展示出来. 信息抽取的结果描述: 1 数 ...
- TopShelf+Quartz.net 实现window服务
Quartz.NET官网 TopShelf 网址 代码地址:https://github.com/SeaLee02/ProjectDemo/tree/master/WindowServerDemo ...
- 百度AI文本审核API使用说明
虽然,虽然,虽然,今天: 百度发布了2019年第一季度未经审计的财务报告.本季度百度营收241亿元人民币(约合35.9亿美元),同比增长15%,移除业务拆分收入影响,同比增长21%.低于市场预期242 ...
- 在Django中显示操作数据库的语句
需要在配置中加上这个 LOGGING = { 'version':1, 'disable_existing_loggers':False, 'handlers':{ 'console':{ 'leve ...
- 使用Skywalking分布式链路追踪系统
使用Skywalking分布式链路追踪系统 https://www.cnblogs.com/sunyuliang/p/11424848.html 当我们用很多服务时,各个服务间的调用关系是怎么样的?各 ...
- 使用tomcat7-maven-plugin
2019-01-0714:16:44 功能: (使用maven中的tomcat插件,就可以将tomcat集成到项目中,效果就是:在不同平台中无需配置tomcat就可以直接运行web) 地址: tomc ...
- kubernetes常用命令:缩容扩容回滚
查看版本 kubectl version 查看节点 kubectl get nodes 部署app 说明: 提供deployment名称和app镜像地址(docker镜像地址) kubectl run ...