编辑神器Vi介绍及常用命令

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode MySQL 185. 部门工资前三高的所有员工(dense_rank)

文章目录1. 题目2. 解题1. 题目 Employee 表包含所有员工信息&#xff0c;每个员工有其对应的工号 Id&#xff0c;姓名 Name&#xff0c;工资 Salary 和部门编号 DepartmentId 。 --------------------------------- | Id | Name | Salary | DepartmentId | ---------------…

jquery非常不错的图片切换,多种切换效果

下载&#xff1a; http://files.cnblogs.com/timy/wowslider.rar转载于:https://www.cnblogs.com/timy/archive/2013/04/03/2998381.html

linux 子目录 挂载,linux – NFS4 – 挂载多个子目录

我正在尝试在NFS4服务器上设置2个不同的挂载点,但无法使其按预期工作./etc/exports (on server)/mnt/raid/nas 10.1.0.0/18(rw,fsid0,sync)/mnt/raid/nas/file/perm 10.1.0.0/18(rw,sync,all_squash,no_subtree_check,anonuid501,anongid503)/mnt/raid/nas/mail 10.1.0.0/18(rw…

python历史以及基础知识

1. Python 基础知识1.1 Python 历史1.1.1 Python 起源Python 的作者&#xff0c;Guido von Rossum&#xff0c;荷兰人。1982 年&#xff0c;Guido 从阿姆斯特丹大学获得了数学和计算机硕士学位。然而&#xff0c;尽管他算得上是一位数学家&#xff0c;但他更加享受计算机带来的…

SQLSERVER字符串截取------STUFF

STUFF ( character_expression , start , length ,character_expression ) 参数 character_expression 一个字符数据表达式。character_expression 可以是常量、变量&#xff0c;也可以是字符列或二进制数据列。 start 一个整数值&#xff0c;指定删除和插入的开始位置。如…

LeetCode MySQL 601. 体育馆的人流量(row_number+over+cast)

文章目录1. 题目2. 解题1. 题目 X 市建了一个新的体育馆&#xff0c;每日人流量信息被记录在这三列信息中&#xff1a;序号 (id)、日期 (visit_date)、 人流量 (people)。 请编写一个查询语句&#xff0c;找出人流量的高峰期。高峰期时&#xff0c;至少连续三行记录中的人流量…

linux进程上下文切换的具体过程,Linux实验三 结合中断上下文切换和进程上下文切换分析Linux内核一般执行过程...

fork系统调?创建?进程&#xff0c;也就?个进程变成了两个进程&#xff0c;两个进程执?相同的代码&#xff0c;只是fork系统调?在?进程和?进程中的返回值不同。打开linux-5.4.34/arch/x86/entry/syscalls/syscall_64.tbl 文件&#xff0c;56、 57、 58号系统调?__x64_sy…

python常见错误及基本技巧

1.2 Python Hello World1.2.1 执行 python 三种方式1.2.1.1 文本模式Python 代码 保存在文件 中&#xff0c;解释器对文件逐行解释执行&#xff0c;在终端中输入解释器名&#xff0c;再输入要执行的文件名&#xff1a;# 使用 python 2.x 以文本模式执行 python 程序$ python xx…

flash加xml图片叠加焦点图,左右箭头翻页

flash加xml左右箭头翻页&#xff0c;叠加焦点图&#xff0c;具体效果如下&#xff1a;源码下载&#xff1a; http://files.cnblogs.com/chendaoyin/flash%E5%8A%A0xml%E5%9B%BE%E7%89%87%E5%8F%A0%E5%8A%A0%E5%B7%A6%E5%8F%B3%E5%88%87%E6%8D%A2%E7%84%A6%E7%82%B9%E5%9B%BE.z…

linux 跨服务器备份,用BackupPC架设Linux跨平台备份服务器

随着数据价值逐渐被重视&#xff0c;当提到备份&#xff0c;更多是希望备份充分而非不够&#xff0c;特别在一些情况发生下庆幸为重要数据所备份所付出精力是值得的。通过xmodulo网站介绍一个跨平台的备份服务器软件BackupPC&#xff0c;它可以通过网络为Linux&#xff0c;Wind…

LeetCode 351. 安卓系统手势解锁(回溯)

文章目录1. 题目2. 解题1. 题目 我们都知道安卓有个手势解锁的界面&#xff0c;是一个 3 x 3 的点所绘制出来的网格。 给你两个整数&#xff0c;分别为 ​​m 和 n&#xff0c;其中 1 ≤ m ≤ n ≤ 9&#xff0c; 那么请你统计一下有多少种解锁手势&#xff0c;是至少需要经过…

Linux 文件基本属性以及操作技巧

Linux系统是一种典型的多用户系统&#xff0c;不同的用户处于不同的地位&#xff0c;拥有不同的权限。为了保护系统的安全性&#xff0c;Linux系统对不同的用户访问同一文件&#xff08;包括目录文件&#xff09;的权限做了不同的规定。 在Linux中我们可以使用ll或者ls –l命令…

POJ2503 Babelfish(二分)

题目链接。 分析&#xff1b; 主要是学着用一下bsearch。 #include <stdio.h> #include <stdlib.h> #include <string.h>struct Entry{char english[15], foreign[15]; }entrys[100010];int cmp(const void *a, const void *b){return strcmp((*(struct Entr…

linux命令解释程序实验,实验二 命令解释程序的使用

实验二 命令解释程序的使用一、实验目的掌握UNIX或LINUX环境下命令解释程序的使用能对编写简单的C程序&#xff0c;进行编译运行和调试。二、实验内容输入LINUX相关命令后记录系统输出简单的C程序&#xff0c;进行编译运行和调试三、实验步骤1、命令操作1) 浏览目录和文件的各…

Linux常用的命令及操作技巧

今天我们就来看几个常见的处理目录的命令吧&#xff1a; ls: 列出目录 cd&#xff1a;切换目录 pwd&#xff1a;显示目前的目录 mkdir&#xff1a;创建一个新的目录 rmdir&#xff1a;删除一个空的目录 cp: 复制文件或目录 rm: 移除文件或目录 你可以使用 man [命令] 来查看各个…

LeetCode 1534. 统计好三元组

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 arr &#xff0c;以及 a、b 、c 三个整数。请你统计其中好三元组的数量。 如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件&#xff0c;则认为它是一个 好三元组 。 0 < i < j < k < arr.length|arr[i] …

edge linux 下载软件,在Linux上安装edge浏览器

原标题&#xff1a;在Linux上安装edge浏览器时至今日&#xff0c;微软已经成为了世界上最大的开源代码贡献者&#xff0c;这可能出乎很多人的预料。随着微软放弃了经营多年的IE之后&#xff0c;edge成为了windows系统新的浏览器软件。前段时间听说改版后的edge提供了针对Linux的…

Linux系统用户账号的管理技巧

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。 添加用户账号就是在系统中创建一个新账号&#xff0c;然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的&#xff0c;无法使用。 1、添加新的用户账号使用useradd命令&#xff0c;其…

LeetCode 1535. 找出数组游戏的赢家

文章目录1. 题目2. 解题1. 题目 给你一个由 不同 整数组成的整数数组 arr 和一个整数 k 。 每回合游戏都在数组的前两个元素&#xff08;即 arr[0] 和 arr[1] &#xff09;之间进行。 比较 arr[0] 与 arr[1] 的大小&#xff0c;较大的整数将会取得这一回合的胜利并保留在位置…

在Linux中查看ftp状态,linux中ftp常见操作启动ftp状态,终止ftp会话

Ftp:查询ftp 状态&#xff1a;Service vsftpd status设置目录权限&#xff1a;chmod 777 -R /home/wwwroot/www.xx.com◆启动ftp会话open命令用于打开一个与远程主机的会话。该命令的一般格式是&#xff1a;◆open 主机名/IP如果在ftp 会话期间要与一个以上的站点连接&#xff…