Linux编辑器vim

目录

一、vim的几种模式

1、命令模式

2、编辑/插入模式

3、底行模式

①增加行号

②分屏操作

③不退出vim执行命令

4、替换模式

二、vim的常见命令

1、yy命令

2、p命令

3、dd命令

4、u命令

5、Ctrl + r命令

6、shirt+g命令

7、gg命令

8、shirt+6命令

9、shirt+4命令

10、w,b命令

11、h,j,k,l命令

12、shirt + ~

13、r命令

14、x或shirt + x命令

三、关于vim的配置


vim是一款多模式的编辑器

vim是编辑器,所以只负责写代码

vim要打开文件,直接在vim后面跟上文件名即可


vim也可以创建文件

本身不存在temp.c,但是vim temp.c后,保存并退出后(底行模式下输入wq)就存在这个temp.c文件了


一、vim的几种模式

1、命令模式

我们进入vim,默认打开的模式就是命令模式

2、编辑/插入模式

在命令模式下输入i,就进入了编辑/插入模式

vim编辑器的左下角出现insert的标志,就说明在编辑/插入模式中

进入编辑/插入模式后,正常编写代码即可,如:

如果想从编辑/插入模式回退到命令模式,按键盘的ESC按键(左上角按键)即可

3、底行模式

在命令模式下进行shirt + :的操作,进入到底行模式

vim编辑器的左下角出现一个:的标志,就说明此时在底行模式中

然后输入wq即可保存并退出vim

w指保存,q指退出,wq就是保存且退出

如果有其他情况无法退出或保存,w!或q!表示强制保存或强制退出,!就是强制的意思

而如果想从底行模式回退到命令模式,按键盘的ESC按键(左上角按键)即可


①增加行号

在底行模式下可以增加行号

输入set nu

取消行号输入set nonu

 


②分屏操作

底行模式下输入:vs + 文件名

Ctrl + w + w 光标在左右屏之间切换,也就是按住ctrl后连续按两次w

w:写入(w!强制写入)

q:退出(q!强制退出)

例如:当前输入了vim temp.c

在底行模式下输入vs mytest.c

这时就会进行分屏操作,一边是mytest.c,一边是temp.c

此时光标在哪个文件中,底行模式输入的指令就是对哪个文件执行的

如图就是光标在mytest.c文件中,所以输入的指令都是在mytest.c文件中执行


③不退出vim执行命令

底行模式下输入:! + cmd(对应的指令)

输入!ls -al就是在不退出vim的情况下,显示当前路径下的文件

然后按回车键即可返回vim页面

在不退出vim的情况下进行指令的操作还是有些好处的,比如:

可以在vim编辑器中就进行gcc,检验是否出错

如果编写代码时忘记接口功能,可以使用man在不退出的情况下进行查看


总结一下:命令模式可以通过操作切换到编辑/插入模式或底行模式编辑/插入模式或底行模式按ESC按键即可回退到命令模式中但是编辑/插入模式和底行模式不能直接进行切换,必须要回退到命令模式后再切换


4、替换模式

在命令模式下进行shirt + r的操作,进入到替换模式

vim编辑器的左下角出现一个replace的标志,就说明此时在替换模式中

这时在光标所在位置输入代码,会直接替换掉原位置的代码,不会受原位置代码的影响

同样如果想从替换模式回退到命令模式,按键盘的ESC按键(左上角按键)即可


二、vim的常见命令

注意:都是在命令模式下的常见命令

1、yy命令

将当前光标所在的行复制

也支持nyy(n代表具体数字)


2、p命令

将复制行进行粘贴

也支持np(n代表具体数字)


例如:

当前在光标所在行,命令模式下输入yy,再输入p,就变为:

而nyy与np也和这个操作一样,例如原本是这三行内容:

我们输入3yy,输入2p

3yy就是复制这三行内容,2p就是复制两次这三行内容


3、dd命令

将当前光标所在行进行剪切(删除)

这里也支持ndd(n代表具体数字)

只进行dd操作,就是删除作用,如果dd和p结合使用,就有了剪切的作用


 

4、u命令

u就是撤销刚刚的操作

比如刚刚3yy+2p后,按一下u就变为下图所示的情况:


5、Ctrl + r命令

Ctrl+r就是撤销u的操作

也就是刚刚u操作后后悔了,所以撤销刚刚做的撤销操作

比如刚刚u操作撤销了3yy+2p的操作,但是我后悔这个撤销操作,想恢复这个撤销操作前的代码,这时按Ctrl+r即可恢复,即:


6、shirt+g命令

光标定位到文件的结尾

也支持 n + shirt + g,表示光标定位到第n行

比如想让光标出现在第50行

那就在命令模式下先输入50,在shirt+g即可


7、gg命令

光标直接定位到文件的最开始

第5条和第6条命令是光标的上下移动


8、shirt+6命令

将光标定位到当前行的最开始


9、shirt+4命令

将光标定位到当前行的最结尾


10、w,b命令

以单词为单位进行光标的前后移动

第7、8、9条命令是光标的左右移动


11、h,j,k,l命令

hjkl这四个键就是对应的左下上右四个方向操作

h:左;j:下;k:上;l:右

因为老式键盘就是这四个键表示的上下左右,所以延续至今


12、shirt + ~

光标所在位置挨个进行大小写切换

即大写变为小写,小写变为大写

原本是这样:

shirt+~后,变为:


13、r命令

替换光标所在的字符

也支持nr(n代表具体数字)

nr就是表示替换从光标所在位置开始的n个字符


14、x或shirt + x命令

x是删除光标所在位置的字符,shirt + x是删除光标之前位置的字符

也支持nx(n代表具体数字)

nx就是表示删除从光标所在位置开始的n个字符


三、关于vim的配置

在我们初步使用vim时会发现非常难用,因为使用vim时不会自动缩进,不会自动填补符号或括号,不会根据输入的头文件进行搜索已有的头文件之类的工作,这时我们就需要自己配置自己vim

在自己的.vimre文件中,从网上搜索vim 配置,找到自己所需要的功能,vim .vimrc后粘贴进去即可

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

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

相关文章

静态代理和动态代理笔记

总体分为: 1.静态代理: 代理类和被代理类需要实现同一个接口.在代理类中初始化被代理类对象.在代理类的方法中调 用被代理类的方法.可以选择性的在该方法执行前后增加功能或者控制访问 2.动态代理: 在程序执行过程中,实用JDK的反射机制,创建代理对象,并动态的指定要…

C高级day4循环语句

1,思维导图 运行结果为: 运行结果为:

微服务模式:服务发现模式

由于微服务应用的动态性,很难调用具有固定 IP 地址的服务。这就是服务发现的概念出现的背景。服务发现有助于客户端了解服务实例的位置。在这种情况下,服务发现组件将充当服务注册表。 服务注册表是一个包含服务实例位置的集中式服务器/数据库。在微服务…

docker系列(5) - docker仓库

文章目录 5 docker仓库5.1 创建命名空间5.2 创建镜像仓库5.3 设置访问凭证5.3 镜像仓库命令信息5.4 登录阿里云上传镜像5.5 拉取镜像运行5.6 私有仓库(docker Registry)5.6.1 安装docker registry5.6.2 准备镜像5.6.2 本地私服仓库5.6.3 推送到私服仓库5.6.4 拉取私服镜像 5 do…

如何利用 Selenium 对已打开的浏览器进行爬虫

大家好! 在对某些网站进行爬虫时,如果该网站做了限制,必须完成登录才能展示数据,而且只能通过短信验证码才能登录 这时候,我们可以通过一个已经开启的浏览器完成登录,然后利用程序继续操作这个浏览器&…

4、Nginx 配置实例-反向代理

文章目录 4、nginx 配置实例-反向代理4.1 反向代理实例一4.1.1 实验代码 4.3 反向代理实例二4.3.1 实验代码 【尚硅谷】尚硅谷Nginx教程由浅入深 志不强者智不达;言不信者行不果。 4、nginx 配置实例-反向代理 4.1 反向代理实例一 实现效果:使用 nginx…

ARM+Codesys runtime核心板+底板解决方案

产品特点: 丰富的通讯接口,满足多种场合控制和通讯需求 四核工业级处理器,高性能,低功耗,高可靠性 机身无风扇设计,外壳小巧 搭载内核 100% 自主化大型实时操作系统 SylixOS,支持 POSIX …

DTCC 2023丨云原生环境下,需要什么样的 ETL 方案?

​2023年8月16日~18日,第14届中国数据库技术大会(DTCC 2023)于北京隆重召开,拓数派受邀参与本次大会,PieCloudDB 技术专家邱培峰在大会做了《云原生虚拟数仓 PieCloudDB ETL 方案设计与实现》的主题演讲,详…

vscode 画流程图

文章目录 1、安装插件 draw2、新建文件3、开始画图4、另存为图片 vscode可以画流程图了,只需要安装插件就可以了。 1、安装插件 draw 2、新建文件 3、开始画图 4、另存为图片

数据库设计:防止MySQL字段名与关键字相撞,保护数据完整性!

MySQL是一款广泛应用的关系型数据库管理系统,对于数据库设计而言,字段名的选择是至关重要的一环。不小心选择了和MySQL关键字相同的字段名可能导致严重的数据完整性问题。下面将深入探讨如何防止MySQL字段名与关键字相撞,以保护数据的完整性。…

qt day 6

登录界面 #include "window.h" #include<QDebug> #include<QIcon> Window::Window(QWidget *parent) //构造函数的定义: QWidget(parent) //显性调用父类的构造函数 {//判断数据库对象是否包含了自己使用的数据库Student.dbif(!db.contains(&…

网安周报|Chaes恶意软件的新Python变种针对银行和物流行业

1、Chaes恶意软件的新Python变种针对银行和物流行业 银行和物流业正受到名为Chaes的恶意软件的重新设计变种的冲击。Chaes于2020年首次出现&#xff0c;它的目标是拉丁美洲&#xff08;尤其是巴西&#xff09;的电子商务客户&#xff0c;以窃取敏感的财务信息。该恶意软件的最新…