Linux操作系统的vim常用命令和vim 键盘图

       在vi编辑器的命令模式下,命令的组成格式是:nnc。其中,字符c是命令,nn是整数值,它表示该命令将重复执行nn次,如果不给出重复次数的nn值,则命令将只执行一次。例如,在命令模式下按j键表示光标向下移动1行,而在命令模式下输入10j则表示光标将向下移动10行。显然,这样比单纯移动键盘光标键效率要高。

1、定位光标

由于文件内容的插入、删除和替换等操作都是针对光标所在的字符或行而言的,因此应该熟悉光标移动的命令和方法,并充分利用命令重复执行的次数。

w   将光标移动到下1个单词的第1个字符。

W    将光标移动到后面第2个单词的第1个字符

e或E    将光标移动到下1个单词的最后1个字符

b或B   将光标移动到前1个单词的第1个字符

/string   向后移动光标,并使之停留在字符串string的第一个字符处

?string    向前移动光标,并使之停留在字符串string的第一个字符处

$     将光标移动到本行的最后1个字符上

Ctrl+b   将光标移动到本行的第1个字符上

其中,w或W命令的差别只是在于非空格分割字符上,w命令视非空格分隔字符为单词,而W命令则忽略它。当使用/string或?string命令时,除了光标移动到指定的位置外,还使文件中所有符合字符串string的地方高亮显。

2、插入或添加

无论是插入还是添加,都是向所编辑的文件中加入新的内容,但由于插入可以在光标前或当前行前,添加可以在光标后或当前行后,所以vi提供了多种插入和添加命令:

i   在光标前插入字符

I   在当前行的行头插入字符

a   在光标后添加字符

A   在当前行的行尾添加字符

o    在当前行后添加新行

O   在当前行前添加新行

由于这6个命令都会使vi编辑器从命令模式切换到文本编辑模式下的插入状态,所以当插入或添加完成后,必须按ESC键返回到命令模式下。

3、删除

删除文本文件中的内容,可以按照字符、单词和行为单位进行删除,因此,也有多个删除命令。删除命令执行后将使vi继续处于命令模式下。

x    删除光标所在位置的字符,且光标移动到本行的下1个字符

nx  删除光标所在位置的n个字符

X    删除光标所在位置的前一个字符,且光标停留在原来的字符上

D    删除光标所在位置到行尾的所有字符,且光标停留在本行的行尾

dd     删除光标所在的行,且光标移动到下1行

ndd  从光标位置开始删除 n 行

dw     删除光标所在位置到下一个单词的第一个字符间的所有字符,且光标移动到下一个单词的第一个字符。

4、查找

在文件中查找字符串时,可以向前查找也可以向后查找,因此有两种命令,其格式为:

/expression

?expression

其中,斜杠(/)表示从当前位置开始向后查找,问号(?)表示从当前位置开始向前查找,expression是正则表达式。如果正则表达式是字符串且包含:. ^ $  / ~等特殊字符(元字符),则查找包含这些特殊字符的字符串时,一定要在它们每一个前面加上反斜杠(\)字符表示转义。

查找字符串~/yt-3.1.8,在命令行模式下输入:/\~\/yt-3\.1\.8,注意:要在

每1个标签字符前都要使用转移字符。

5、修改

在vi编辑器中修改文本文件内容的命令主要是删除指定的字符或行并输入新的字符,替换指定的字符或行。

s    删除光标所在位置的字符,且光标移动到下1个字符上。然后进入

文本编辑模式下的插入状态,等待用户输入

S    删除光标所在行,且光标仍在本行的行首,然后进入文本编辑模式下的插入状态,等待用户输入

按2次c    与S命令功能相同

C或c$    删除光标所在位置到行尾的所有字符,且光标停留在本行的行尾,然后进入文本编辑模式下的插入状态,等待用户输入

r    用r命令后输入字符替换当前光标位置处的字符。1次只能替换1个字符,如果是相同连续的字符可以用nnr命令的形式。

R    使用该命令会使用vi进入文本编辑模式的替换状态,在屏幕的左下方显示“REPLACE(替换)"状态信息。在这种状态下,从当前光标所在的位置开始,

新输入的字符将逐个替换原有的字符,直到用户按下Esc键返回命令模式为止。

注意:s、S、C、c$命令是修改命令,它们与x、X、D、d删除命令不同的地方在于删除字符或行后vi的工作模式转变,等待用户插入字符修改。R、r是替换命令,此时vi是文本编辑模式下的替换状态而非插入状态,输入的新字符将覆盖旧字符,所以在输入时一定要注意是否覆盖了不该覆盖的字符。

6、剪切与粘贴

在文本文件编辑中,经常需要将某处的1个句子或若干行文本移动或复制到本文件的其他地方,这就需要编辑器有剪切和粘贴的功能。

vi中的缓冲区分为通用缓冲区和专用缓存区,在一般情况下,最近1次的抽取、删除、插入和修改的内容都将存放在通用缓冲区中。利用这些缓冲区可以非常方便地实现文件内容的剪切和粘贴。

按2次y   将光标所在行的内容复制到通用缓冲区,该命令也称为抽取。

p    取出通用缓冲区中的内容放在光标所在位置的后面,即粘贴。

复制多行可以使用nnyy命令。另外,D、dd、O等删除、插入命令也是以行为单位将处理的内容放入通用缓冲区的。

7、撤销操作

使用编辑器的用户都会希望有撤销操作的命令。在vi编辑器中使用u键可以恢复。

8、几个特殊的命令

J命令 合并第n行与第n+1行,使用时,将光标移动到第n行上按J键即可。

.命令 重复执行前一条操作命令。

~命令  改变光标所在位置字母的大小写,即大写变小写,小写变大写。

9、移动光标

ctrl+b   屏幕往后移动一页

ctrl+f   屏蔽往前移动一页

ctrl+u   屏幕往后移动半页 

ctrl+d   屏幕往前移动半页

shift+l   光标移动到屏幕最后一行

shift+h   光标移动到屏幕第一行

shift+m  光标移动到屏幕中间一行

数字 0   移动到文件的开头,本行开始位置

G   移动到文件的最后

nG   光标移动到文件第 n 行

gg   光标移动到文件第一行,相当于 1G

$    移动到光标所在行的末尾

^   移动到光标所在行的行首

10、末行模式操作

在使用末行模式之前,请记住按住 'esc' 键确定忆经处理命令行模式后,再按冒号“:”即可进入末行模式。

set nu   显示行号

set nonu  隐藏行号

set ic  搜索时忽略大小写

set noic 取消搜索忽略大小写

n  跳转到文件的某一行,“n”表示一个数字,如输入数字15,再回车就会跳到文件的第15行

!cmd  运行 shell命令cmd

-------附加语法-------
ESC:%s/origanl/new/g

%s 表示替换文本。
origan 表示原文
new 表示新的内容
/g 表示全文替换,如果仅替换第一个则不需要/g

需要注意如果要替换的内容中包含特殊含义的字符,需要使用转义符转义

例如

:%s/\\/\//g 表示把所有 反斜杠 \ 替换成正斜杠 / 拆开来看
:%s 表示要替换
/ 语法分隔
\ 第一个 \ 表转义,第二个 \ 表示反斜杠
/ 语法分隔
/ \ 表转义, / 表示正斜杠
/ 语法分隔
/g 表示全文替换

vim键盘图:

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

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

相关文章

Fuyu-8B A Multimodal Architecture for AI Agents

Fuyu-8B: A Multimodal Architecture for AI Agents Blog: https://www.adept.ai/blog/fuyu-8b TL; DR:无视觉编码器和 adapter,纯解码器结构的多模态大模型。 Adept 是一家做 Copilot 创业的公司,要想高效地帮助用户,必须要准确…

【Linux网络】再谈 “协议“

目录 再谈 "协议" 结构化数据的传输 序列化和反序列化 网络版计算器 封装套接字操作 服务端代码 服务进程执行例程 启动网络版服务端 协议定制 客户端代码 代码测试 使用JSON进行序列化与反序列化 我们程序员写的一个个解决我们实际问题,满…

新品发布会媒体邀请,邀约记者现场报道

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 新品发布会媒体邀请及记者现场报道邀约流程: 一、策划准备 明确新品发布会时间、地点和主题。 制定媒体邀请计划,确定目标媒体。 二、邀请媒体 向目标媒体发送…

CSS的三种定位,响应式web开发项目教程

标准文档流 文档流:指的是元素排版布局过程中 戳这里领取完整开源项目:【一线大厂前端面试题解析核心总结学习笔记Web真实项目实战最新讲解视频】 ,元素会默认自动从左往右,从上往下的流式排列方式。并最终窗体自上而下分成一行行…

12、电源管理入门之clock驱动

目录 1. clock驱动构架 1.2 clock consumer介绍 2. Clock Provider 2.1 数据结构表示 2.2 clock provider注册初始化 2.3 DTS配置 2.4 clock驱动实现举例: 3. clock consumer 3.1 获取clock 3.2 操作clock 3.3 实例操作 4. SoC硬件中的使用 参考: 电源管理的两个…

《 前端 vs. 后端:挑战与机遇的对决》

前言 前端开发和后端开发是构建网站、应用程序和其他软件的两个主要方面。它们各自负责不同的任务和功能。 前端开发: 定义:前端开发是指构建用户直接与之交互的网站或应用程序的过程。前端开发主要关注于用户界面和用户体验。技术栈:前端开发通常涉及使用 HTML、CSS 和 Ja…

组基轨迹建模 GBTM的介绍与实现(Stata 或 R)

基本介绍 组基轨迹建模(Group-Based Trajectory Modeling,GBTM)(旧名称:Semiparametric mixture model) 历史:由DANIELS.NAGIN提出,发表文献《Analyzing Developmental Trajectori…

7.1.3 Selenium的用法2

目录 1. 切换 Frame 2. 前进后退 3. 对 Cookies 操作 4. 选项卡管理(了解) 5. 异常处理 6. 反屏蔽 7. 无头模式 1. 切换 Frame 我们知道网页中有一种节点叫作 iframe,也就是子 Frame,相当于页面的子页面,它的结构和外部网页的结构完全…

android高级面试题及答案,已拿offer

一、java相关 java基础 1、java 中和 equals 和 hashCode 的区别 2、int、char、long 各占多少字节数 3、int 与 integer 的区别 4、谈谈对 java 多态的理解 5、String、StringBuffer、StringBuilder 区别 6、什么是内部类?内部类的作用 7、抽象类和接口区别 java高…

SkyWalking链路追踪上下文TraceContext的traceId生成的实现原理剖析

结论先行 【结论】 SkyWalking通过字节码增强技术实现,结合依赖注入和控制反转思想,以SkyWalking方式将追踪身份traceId编织到链路追踪上下文TraceContext中。 是不是很有趣,很有意思!!! 【收获】 skywal…

【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)

@[TOC](【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)) 具体步骤 第一步是注册您的应用程序。特别是,您需要将浏览器指向 http://apps.twitter.com,登录 Twitter(如果您尚未登录)并注册新应用程序。您现在可以为您的应用程序选择名称和描述(例如“Mining Demo”…

未来已来!AI大模型引领科技革命

未来已来!AI大模型正以惊人的速度引领着科技革命。随着科技的发展,人工智能在各个领域展现出了非凡的能力和潜力,大模型更是成为了科技领域的明星。从自然语言处理到图像识别,从智能推荐到语音识别,大模型的应用正在改…

基于ZYNQ PS-SPI的Flash驱动开发

本文使用PS-SPI实现Flash读写,PS-SPI的基础资料参考Xilinx UG1085的文档说明,其基础使用方法是,配置SPI模式,控制TXFIFO/RXFIFO,ZYNQ的IP自动完成发送TXFIFO数据,接收数据到RXFIFO,FIFO深度为12…

word转PDF的方法 简介快速

在现代办公环境中,文档格式转换已成为一项常见且重要的任务。其中,将Word文档转换为PDF格式的需求尤为突出,将Word文档转换为PDF格式具有多方面的优势和应用场景。无论是为了提高文档的可读性和稳定性、保障文档的安全性和保护机制、还是为了…

IDEA运行大项目启动卡顿问题

我打开了很多项目,然后又启动了一个大型项目时,启动到一半,弹出一个窗口,告诉我idea内存不够,怎么解决这个问题? 1、先把多余的项目关掉,再启动这个大项目, 2、如果还是不行就去修改…

一文帮助快速入门Django

文章目录 创建django项目应用app配置pycharm虚拟环境打包依赖 路由传统路由include路由分发namenamespace 视图中间件orm关系对象映射操作表数据库配置model常见字段及参数orm基本操作 cookie和sessiondemo 创建django项目 指定版本安装django:pip install django3.…

Unity使用UnityWebRequest读取音频长度不对的解决方法

在开发的过程中碰到这样一个问题,有的音频文件通过UnityWebRequest读取出来后,AudioClip的Length会不对,比如本身有7秒,读出来只有3秒。代码如下: IEnumerator TestEnumerator() {UnityWebRequest www UnityWebReque…

gitlab的安装

1、下载rpm 安装包 (1)直接命令下载 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.6.10-ce.0.el7.x86_64.rpm(2)直接去服务器上下载包 Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source…

【图论】图的遍历 - 构建领接表(无向图)

文章目录 例题:受限条件下可到达节点的数目题目描述代码与注释模板抽象 例题:受限条件下可到达节点的数目 题目链接:2368. 受限条件下可到达节点的数目 题目描述 代码与注释 func reachableNodes(n int, edges [][]int, restricted []int)…

网络编程:select、poll

.1、select完成TCP并发服务器 程序代码&#xff1a; #include <myhead.h> #define SER_IP "192.168.125.234" //服务端IP #define SER_PORT 8888 //服务端端口号int main(int argc, const char *argv[]) {//1.创建用于连接的套接字int sfds…