1 vi 简介

vi 编辑器是 Linux 和 Unix 上最基本的文本编辑器,工作在字符模式下。由于不需要图
形界面,vi 是效率很高的文本编辑器。尽管在 Linux 上也有很多图形界面的编辑器可用,
但 vi 在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。
vi 编辑器通常被简称为 vi,而 vi 又是“Visual interface”的简称。它在 Linux 上的地
位就像 Edit 程序在 DOS 上一样。它可以执行输出、删除、查找、替换、块操作等众多文本
操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
vi 编辑器并不是一个排版程序,它不像 Word 或 WPS 那样可以对字体、格式、段落
等其他属性进行编排,它只是一个文本编辑程序。没有菜单,只有命令,且命令繁多。vi
有 3 种基本工作模式:命令行模式、文本输入模式和末行模式。
Vim 是 vi 的加强版,比 vi 更容易使用。vi 的命令几乎全部都可以在 vim 上使用。

2 vi 工作模式

vi 有三种基本工作模式:命令模式、文本输入模式、末行模式。
 
2.1 命令模式

任何时候,不管用户处于何种模式,只要按一下 ESC 键,即可使 Vi 进入命令模式;我
们在 shell 环境(提示符为$)下输入启动 Vi 命令,进入编辑器时,也是处于该模式下。在该
模式下,用户可以输入各种合法的 Vi 命令,用于管理自己的文档。此时从键盘上输入的任
何字符都被当做编辑命令来解释,若输入的字符是合法的 Vi 命令,则 Vi 在接受用户命令之
后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不
是 Vi 的合法命令,Vi 会响铃报警。

2.2 编辑模式
在命令模式下输入插入命令 i、附加命令 a 、打开命令 o、修改命令 c、取代命令 r 或
替换命令 s 都可以进入文本输入模式。在该模式下,用户输入的任何字符都被 Vi 当做文件
内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按键 ESC
即可。

2.3 末行模式
在命令模式下,用户按“:”键即可进入末行模式下,此时 Vi 会在显示窗口的最后一
行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。
多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命
令执行完后,Vi 自动回到命令模式。例如 :sp newfile
则分出一个窗口编辑 newfile 文件。如果要从命令模式转换到编辑模式,可以键入命
令 a 或者 i;如果需要从文本模式返回,则按 Esc 键即可。在命令模式下输入“:”即可切
换到末行模式,然后输入命令。

vi 基本操纵

3.1 进入编辑模式

命令 含义
i 和 I i 在光标前插入,I 在行首插入
a 和 A a 在光标后插入,A 在行末插入
o 和 O o 在光标所在行下一行插入,O 在光标所在行上一行插入

3.2 移动光标
命令 含义
h 光标向左移动
j 光标向下移动
k 光标向上移动
l 光标向右移动

H、M、L 光标移动到到可见屏幕第一行(H)、中间行(M)、最后一行(L)
^和$ ^移动到行首,$移动到行末
G 和 gg G 文档最后一行,gg 文档第一行
ctrl+f、ctrl+b 向前翻屏、向后翻屏
ctrl+d、ctrl+u 向前半屛、向后半屛
{ 和 } {向上移动一段,}向后移动一段
w 和 b 向前移动一个单词,向后移动一个单词

3.3 删除命令
命令 含义
X 和 x x 删除光标后一个字符,X 删除光标前一个字符,包含光标位置字符
dd 和 n dd dd 删除所在行,5 dd 删除指定行数
d0 和 D d0 删除光标前本行所有内容,D 删除光标后本行所有内容,包含光标位置字符
dw 删除光标所在位置的字,包含光表所在位置字符

3.4 撤销命令
命令 含义
u 一步一步撤销
ctrl + r 反撤销

3.5 重复命令
命令 含义
. 重复执行上一次操作的命令

3.6 复制粘贴
命令 含义
yy 和 n yy 和 y$ y^ yy 复制当前行,5 yy 复制 5 行
p 在光标所在位置向下新开一行粘贴

3.7 选择文本
命令 含义
v 和 V v 选择单个字符,V 选择整行
<<和>> 选择文本之后,向左缩进,向右缩进

3.8 查找替换
命令 含义
命令模式下,r 和 R r 替换当前字符,R 替换光标后的字符
末行模式下,/ + str n 查找下一个,N 查找前一个
末行模式下,%s/abc/123/g 将文件中所有 abc 替换为 123
末行模式下,1, 10s/abc/123/g 将第一行至第 10 行之间的 abc 替换成 123

4.1 开打文件分屏
命令 含义
vim -On file1 file2 ... 使用大写 O 参数进行垂直分屏,n 为数组,不得小于文件数
vim -on file1 file2 ... 使用小写 o 参数进行水平分屏
ctrl+w c 关闭当前窗口
ctrl+w q 关闭当前窗口,如果只剩最后一个,则退出 vim

编辑神器Vi介绍及常用命令相关推荐

  1. redis 介绍和常用命令

    redis 介绍和常用命令 redis简介 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键 ...

  2. nvm介绍及常用命令

    nvm介绍及常用命令 1.为什么使用nvm? nvm是一个管理nodejs版本的工具.在实际的开发中,有些项目的开发依赖需要低版本的nodejs运行环境,此时我们就需要使用nvm来降低nodejs版本 ...

  3. Vi/Vim/GVim 常用命令总结

    一.Vim 介绍 Vim是从 vi 发展出来的一个文本编辑器. 官方网站介绍 vim 是一个程序开发工具.代码补全.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. 二. Vim 的三种 ...

  4. Linux简单介绍及常用命令

    Linux 参考整理 https://www.runoob.com/linux/linux-tutorial.html 介绍 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 ...

  5. DOS介绍以及常用命令

    DOS介绍 来自百度百科: dos,是磁盘操作系统的缩写,是个人计算机上的一类操作系统.DOS是1979年由微软公司为IBM个人电脑开发的MS-DOS,它是一个单用户单任务的操作系统.DOS是Disk ...

  6. linux 自定义vi dd,Vim常用命令及配置方案

    几句话 很久之前就接触到vim,初学那阵觉得vim很酷炫,但确实对新手不是很友好.我也就简单看了下基本操作就上手了,但又不是长期在vim下工作,这就导致了每一次重新使用vim都要再去回温下基本操作,很 ...

  7. vim编辑器介绍及其常用命令

    vim简单的介绍 Vim 编辑器是一个模式编辑器 . 这意味着在不同状态下编辑器有不同的行为模式 . 两个基本的模式是 Normal 模式和 Insert 模式 ,还有可视模式. 在 Normal 模 ...

  8. 第四章 SQL*plus介绍、常用命令

    一   SQL*plus 常用命令 oracle11g  登录sqlplus两种方式 1,scott@orcl 密码: 2,  scott /system@orcl 常用命令: 使用查询.插入.删除. ...

  9. npm介绍以及常用命令

    npm介绍 npm是跟Node一起安装的包管理工具(node package manage) 常有以下用途: 1.从npm服务器上下载别人编写的第三方包到本. 2.从npm服务器上下载并安装别人编写的 ...

最新文章

  1. pytorch 动态调整学习率 重点
  2. C++、嵌入式软开之指针
  3. 点分十进制IP转换为十进制数以及逆变换,JavaScript
  4. 使用nginx动静分离后,druid被拦截的解决方法
  5. Vue项目代码改进(五)—— 将侧边栏菜单改造为动态后,如何按需显示不同图标
  6. Hook API (C++)
  7. 如何保证elasticsearch和mysql数据库的数据同步?
  8. MySQL存储引擎--MyISAM与InnoDB区别
  9. Java String简单知识点总结
  10. Qt Design Studio组态软件简介及源码下载
  11. 虚幻引擎3命令行参数
  12. 谷歌地图的离线地图下载
  13. (21)tar打包命令详解
  14. c语言开发谷歌浏览器插件,用Chrome学编程
  15. LSF集群基本概念介绍
  16. linkedin 分享_如何将您的LinkedIn个人资料添加到WordPress
  17. 055B ENMTools教程-基于R语言对MaxEnt模型优化-MaxEnt调参教程--更新日期2021-9
  18. 让 git输出颜色变成彩色的方法
  19. 如何在二维码下面显示对应数据
  20. 仙剑5手游服务器维护,仙剑奇侠传手游5月20日活动有哪些?5.20日例行维护时间...

热门文章

  1. 「PKUSC2018」神仙的游戏 - 题解
  2. Luogu 4244 [SHOI2008]仙人掌图
  3. BZOJ 2822: [AHOI2012]树屋阶梯 [Catalan数 高精度]
  4. oracle table 函数使用
  5. OV7725的帧率和PCLK寄存器设置
  6. select + 线程池 回应服务器(windows)
  7. 编译rocksdb源码导致的部署失败
  8. bootstrap 居中 表格中_使用Twitter Bootstrap在表格单元格中垂直居中
  9. n1运行linux,斐讯N1折腾记:运行 Linux 及优化
  10. php l方法,ThinkPHP的L方法使用简介