学习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 编辑器详细使用方法的更多相关文章

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

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

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

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

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

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

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

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

  5. 五、Vi和Vim编辑器

    1. Vim编辑器: 在Linux下一般使用vi编辑器来编辑文件.vi既可以查看文件也可以编辑文件.三种模式: 命令行.插入.底行模式 切换到命令行模式:按Esc键: 切换到插入模式:按 i .o.a ...

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

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

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

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

  8. 学习vi和vim编辑器(5):越过基础的藩篱

    本章将对之前学习的编辑命令如" c "." d "." y "等命令进行总结,并学习一些新的知识:其它进入vi的方法,利用缓冲区来存储拖曳或 ...

  9. Linux实操篇 vi和vim编辑器

    vi和vim的基本介绍 所有的Linux系统都会内建vi文本编辑器. vim具有程序编辑的能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计.代码补完.编译及错误跳转等 ...

随机推荐

  1. Spring IoC 的实现机制

    Spring 中的 IoC 的实现原理就是工厂模式加反射机制. interface Fruit {     public abstract void eat(); } class Apple impl ...

  2. DTLZ

    DTLZ 开新坑,未完待续 觉得有用的话,欢迎一起讨论相互学习~Follow Me Reference [1] Multiobjective Immune Algorithm with Nondomi ...

  3. [ kvm ] 三种基础网络模型创建及分析

    1. 前言 最近在模拟生产环境在做测试,本来准备用 vmware 直接来实现的,本着学以致用的道理,选择直接在linux 环境使用 kvm 来模拟测试,遇到的第一个问题就是,网络环境的模拟.这里对比v ...

  4. 《深入理解Linux内核》 读书笔记

    深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...

  5. 服务器系统启动之所以比PC慢很多

    服务器系统启动之所以比PC慢很多, 第一个是:服务器底层还有一套硬件和固件,叫做IPMI系统,这套系统需要时间来引导和载入.载入IPMI后,它才会载入BIos来继续引导.这个占主要时间,尤其是冷启动的 ...

  6. Linux 就该这么学 CH03 管道符、重定向和环境变量

    0 概述 1 输入输出重定向 重定向技术有5种模式: 标准覆盖输出重定向 标准追加输出重定向 错误覆盖输出重定向 错误追加输出重定向 输入重定向 输入重定向是将文件导入到命令中. 输出重定向是将输入到 ...

  7. Python定时偷取妹子Chrome上网记录

    原文:教大家一招用Python实时监控自己的女朋友每天上网都在做什么! 参考这个思路,尝试自己实现一下 读取Chrome历史记录文件 1.文件可在以下路径找到,这是个sqllite数据库文件 C:\U ...

  8. @PropertySource绝对路径(java.io.FileNotFoundException问题解决)

    经常使用@PropertySource 来指定配置文件,然后@value获取配置参数: @Component @PropertySource(value= {"classpath:rules ...

  9. DevExpress中GridColumnCollection实现父子表数据绑定

    绑定数据: 父表: DataTable _parent = _dvFlt.ToTable().Copy(); 子表: DataTable _child = _dvLog.ToTable().Copy( ...

  10. 用C#做一个 拉流播放器

    做拉流播放器第一个想到就是,.,..FFmpeg没错 我也是用强大的他它来做的.但是我用的不是  cmd 调用 而是用的强大的FFmpeg.AutoGen FFmpeg.AutoGen 这个是C# 一 ...