​ ​【Linux】-----工具篇(多模式编辑器vim介绍及配置)

目录

认识常用三种模式

基本操作

Ⅰ、进入/打开vim

Ⅱ、模式转换

Ⅲ、退出vim

 命令集

Ⅰ、命令模式下

移动光标

删除文字

复制

替换

撤销

批量化注释

 批量化去注释

Ⅱ、底行模式下

列出行号

跳转至指定行

 查找字符

保存文件

 退出vim

 查看文件

分屏操作

vim的简单配置

原理

配置文件的位置

配置选项

 说两句

vim常见的小问题(本人亲身经历)


认识常用三种模式

  • 正常/普通/命令模式

允许编辑者使用命令来进行文本的控制,如光标的移动,字符/文字的删除以及复制粘贴等操作

  • 插入模式

 也叫文本编辑模式,只有在该模式下才能进行文字的输入!

  • 末行/底行模式

文件的保存或者退出,还可以进行文本替换、找字符串、列出行号、分屏等操作。

基本操作

Ⅰ、进入/打开vim

指令:vim   文件名字

特别提醒:

①刚打开的文件是处于命令模式的,无法进行编辑!

②用vim打开一个当前目录下不存在的文件,vim默认不会自动创建,只有当保存了该文件,那么此时vim会自动创建文件;如果直接退出不保存,那就不会创建。

演示:

要创建一个当前目录下不存在的文件test.c

进入编辑后保存退出

当前目录就会自动创建该文件!

反之,如果在底行模式下输入q,直接退出,那就不会创建该文件!

Ⅱ、模式转换

  •  命令模式---->插入模式

①按【i】:进入插入模式后是从光标当前位置开始输入文件

②按【a】:是从目前光标所在位置的下一个位置开始输入文字

③按【o】:是插入新的一行,从行首开始输入文字

  • 插入模式---->命令模式

按【ESC】即可进入

  • 命令模式---->底行模式

按【shift + ;】即可进入,其实就是 :键

注意:底行和插入模式是无法转化的!

小tips:当不知道在哪种模式下,可以无脑按ESC!!!

Ⅲ、退出vim

进入底行模式输入以下指令即可:

①w(保存当前文件)

②wq(保存并退出)

③q(不保存并退出)

④q!(强制退出,不保存)

 命令集

Ⅰ、命令模式下

  • 移动光标

①按【h,j,k,l】:分别为左,下,上,右。  可+n(数字)移动多少个字符

②【G】:移动到文章的最后 (注意是大写的,组合shift+g)

    【nG】:如【15G】:表示移动到文章的第15行行首。

③【gg】:移动到文章的最开头

④【shift + 4=$】:移动到光标所在行的“行尾”

⑤【shift + 6=^】:移动到光标所在行的“行首”

⑥【w】:光标跳到下个字的开头

⑦【e】:光标跳到下个字的末尾

⑧【b】:光标回到上个字的开头

⑨【ctrl+b】:屏幕往“后”移动一页

⑩【ctrl+f】:屏幕往“前”移动一页

    【ctrl+u】:屏幕往“后”移动半页

    【ctrl+d】:屏幕往“前”移动半页

补充:

当处于分屏模式(多文件操作)下光标的移动:【ctrl+ww】

分屏模式:在底行模式下,输入vs filename(文件名)

  • 删除文字

①【x】:按一次,删光标位置后的一个字符,一行内

②【nx】:指定一次删n个字符,包括自己在内。一行内

如:【6x】:表示删除光标所在位置后6个字符

【n+shift+x=nX】:大写的X,按一次可以删光标位置前的一个字符,输入数字n,也可以一次删n个

④【dd】:剪切/删除光标所在行

⑤【n+dd】:从光标所在行开始剪切/删除n行。

  • 复制

【yy】:复制光标所在的行

【n+yy】:复制光标开始向后的n行

【p】:粘贴

注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

  • 替换

【r】:替换光标位置的字符,具体操作按r后,在按你想要的字符即可

【n+r】:一次替换n个字符

【R】:进入替换模式,直接进行文本替换,直到按下ESC为止。

  • 撤销

【u】:撤销,回到上一次的操作

【ctrl+r】:撤销的恢复 

  • 批量化注释

 在vim写代码难免需要注释,对于少量代码,我们可以一行一行输“//”。但是很慢。下面有个快速的方法。

①步:先按下ctrl+v,左下角会显示V-BLOCK字样

②步:在使用h,j,k,l进行区域选择,区域选择也可以加上数字n,代表一次选n行!

③步:按下shift+i,左下角会显示INSERT字样

④步:按下“//”

⑤步:连续点击Esc键两次

演示动图:

  •  批量化去注释

 学会了如何注释,该看如何去注释了,操作比注释简单

①步:先按下ctrl+v

②步:在使用h,j,k,l进行区域选择,选择包含并且仅包含“//”

③步:按下d

演示:

Ⅱ、底行模式下

注意:请先确定是在命令模式下,在按【shift+;】进入底行模式

  • 列出行号

 命令:set  nu

  • 跳转至指定行

 命令:【n】 :n表示输入的数字

  •  查找字符

 ①【/关键字】

②【?关键字】

两者区别:

/:按字符n会往后寻找

?:按字符n会往前寻找

  • 保存文件

 命令:w

  •  退出vim

 【q】或者【q!】  带上!代表强制退出

  •  查看文件

 命令:!指令

这条命令是在不退出vim的情况执行其他shell命令,常用于函数查看

  • 分屏操作

 在vs下我们可以同时打开多个文件进行编辑代码,实际在vim中我们也可以。

指令:vs filename(文件名)

演示:

在底行模式下输入vs  test.h,结果如下:

光标显示在哪就是在操作哪个文件。

快速转化光标指令:【ctrl+ww】

vim的简单配置

原理

vim不是简单的执行可执行程序就行的,实际上vim在打开前会先读取后缀为.vimrc的配置文件。没有就不读,有就会读,这个配置文件的内容就是由我们进行配置的。

配置文件的位置

  • 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效,这个一般达不到我们需要的效果。
  • 另外在每个用户的家目录下都可以自己建立私有的配置文件,命名为“.virmc”。

配置选项

如:
设置语法高亮 : syntax on
显示行号 : set nu
设置缩进的空格数为 4: set shiftwidth=4
……………………
大家可以去搜索,有专门配置的文章/视频,这里只是演示一下区别:
没配置前:
可以看到,写着十分的难受,没有行号等
简单配置后:
可以看到当前目录下没有.vimrc这个文件,所以我们要配置就得自己创建一个.vimrc文件,上图仅仅只是简单的设计行号操作。手动操作的。

 说两句

实际上对于vim的配置,基本都是一键式配置,网上有很多的,当然哦小编这里也有,不过仅适合CentOS7.x的版本,如果需要可以私信我。下面演示一下小编一键配置好的vim。

可以看到一键配置就是爽!!!!

vim常见的小问题(本人亲身经历)

 情景如下:

人啊,总是会有失误的时候,不可能能完全做到十全十美。比如写代码的时候比较的兴奋,如果有一天在使用vim来写代码的时候,突然家里突然断网了,或者不小心将你的Linux系统给关闭了,此时你的vim没有来得及保存就被强行关闭,当你下次登进系统并打开当时正在编写的文件时会会出现下面的情况:

wdf?这啥啊?实际上因为你的不正确退出方法,系统会产生一个.swp后缀的临时文件!

这里下面有几个选项,大多数会选择E继续编辑,但是呢编辑过后,下次再打开这个文件时,还是会存在。所以最好的方法就是删掉它!怎么删?其实就是上图下面的选项D。

当然还有一种解决方法:就是找到这个临时文件位置,手动删除。临时文件的具体位置如上图的错误信息会给出路径提示。没有配置过的vim,临时文件默认在当前路径;配置过的vim就不在当前目录下了,比如小编本人,当前目录下啥也没有!

 


好了,今天分享到的内容就这么多,如果对你有帮助,只需点赞+关注,如有疑问,欢迎真实!

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

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

相关文章

论文阅读:面向自动驾驶场景的多目标点云检测算法

论文地址:面向自动驾驶场景的多目标点云检测算法 概要 点云在自动驾驶系统中的三维目标检测是关键技术之一。目前主流的基于体素的无锚框检测算法通常采用复杂的二阶段修正模块,虽然在算法性能上有所提升,但往往伴随着较大的延迟。单阶段无锚框点云检测算法简化了检测流程,…

微信小程序:vant-weapp 组件库、css 变量

vant-weapp 组件库 前往 vant-weapp 官网 npm 使用限制:不支持依赖于 Node.js 内置库、浏览器内置对象、C 插件 的包。 安装 vant-weapp # 通过 npm 安装 npm i vant/weapp -S --production# 通过 yarn 安装 yarn add vant/weapp --production# 安装 0.x 版本 npm i…

Mac环境报错 error: symbol(s) not found for architecture x86_64

Mac 环境Qt Creator报错 error: symbol(s) not found for architecture x86_64 错误信息 "symbol(s) not found for architecture x86_64" 通常是在编译或链接过程中出现的问题。这种错误提示通常涉及到符号未找到或者是因为编译器没有找到适当的库文件或函数定义。 …

powe bi界面认识及矩阵表基本操作 - 1

powe bi界面认识及矩阵表操作 1. 界面认识1.1 选择数据源1.2 选择相关表及点击加载1.3 表字段显示位置1.4 表属性按钮位置1.5 界面布局按钮认识 2. 矩阵表基本操作2.1 选择矩阵表2.2 创建矩阵表2.3 设置字体大小2.4 行填充:修改高度2.5 列宽:设置列的宽度…

【Python实战因果推断】55_因果推理概论5

目录 Consistency and Stable Unit Treatment Values Violations Causal Quantities of Interest Consistency and Stable Unit Treatment Values 在上述方程中,隐含着两个基本假设。第一个假设意味着潜在结果与处理是一致的:当时,。换句…

Vue3相比于Vue2进行了哪些更新

1、响应式原理 vue2 vue2中采用 defineProperty 来劫持整个对象,然后进行深度遍历所有属性,给每个属性添加getter和setter,结合发布订阅模式实现响应式。 存在的问题: 检测不到对象属性的添加和删除数组API方法无法监听到需要对…

Shader笔记1:基础概念

有相当一部分来自shader圣经 Base of CG Concepts Tangent, Normal and Binormal N:法线(Normal, N)垂直于表面 T:切线(Tangent, T)与U方向同向 B:副切线(BiTangent, B&#xff09…

ADS 使用教程(十六)Using Sliders for Data Processing

上一篇:ADS 使用教程(十五)Multi-Dimensional Data Processing in ADS 在这一节,我们来谈论一下如何在进行多维数据处理时使用滑块(Sliders)来进行数据处理和分析。通过该方法,我们可以通过拖动…

python-docx 如何将列表中的值提取到段落中的run以及保存为多个文档?

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

Clion开发STM32——移植FreeModbus

STM32型号 :STM32H743VIT6 FreeModbus版本 :1.6 使用工具:stm32cubeMX,Clion 使用STM32作从机,模式:RTU 网上用keil的比较多,用Clion的比较少,如果你也用Clion,那么希望…

【LLM】-07-提示工程-聊天机器人

目录 1、给定身份 1.1、基础代码 1.2、聊天机器人 2、构建上下文 3、订餐机器人 3.1、窗口可视化 3.2、构建机器人 3.3、创建JSON摘要 利用会话形式,与具有个性化特性(或专门为特定任务或行为设计)的聊天机器人进行深度对话。 在 Ch…

鸿蒙仓颉语言【cryptocj 库】(介绍与SHA、MD5、HMAC摘要算法)

cryptocj 库 介绍 cryptocj 是一个安全的密码库,包括常用的密码算法、常用的密钥生成和签名验证。 该库是对 C 语言的 openSSL 封装的仓颉加密算法 1 提供SHA、MD5、HMAC摘要算法。 前置条件:NA 场景: OHOS, Linux&#xff…

经纬恒润与奇瑞汽车签订新能源项目重点供应商合作协议,共同开启合作新篇章

近日,2024年国家级芜湖经开区汽车零部件生态大会成功举行,经纬恒润受邀出席,与行业各伙伴齐聚经开区,同绘发展蓝图,助力经开区汽车产业高质量发展。会上,经纬恒润与奇瑞汽车签署合作协议,成为奇…

Superset二次开发之筛选器native Filters 水平布局

引言 Apache Superset作为一个功能强大的开源数据探索和可视化平台,提供了丰富的配置选项来定制化用户体验。其中,HORIZONTAL_FILTER_BAR 是一个重要的配置项,专注于优化和改进Superset中的筛选器条布局与交互。 什么是HORIZONTAL_FILTER_B…

免费【2024】springboot stone音乐播放器的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

【数据库】数据库设计规范文件(Word)

方便业务功能实现、业务功能扩展;方便设计开发、增强系统的稳定性和可维护性;保证数据完整性和准确性;提高数据存储效率,在满足业务需求的前提下,使时间开销和空间开销达到优化平衡。资料获取:本文本个人名…

江科大/江协科技 STM32学习笔记P9-11

文章目录 OLED1、OLED硬件main.c EXTI外部中断1、中断系统2、中断执行流程图3、STM32中断4、中断地址的作用5、EXTI6、EXTI基本结构7、AFIO复用IO口8、EXTI框图或门和与门 9、旋转编码器介绍10、硬件电路 OLED 1、OLED硬件 SCL和SDA是I2C的通信引脚,需要接在单片机…

机器学习的运作原理和算法分类,让机器学习更加通俗易懂

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

微信扫码登陆验证在Go系统开发时的应用与实践

微信扫码登录实现 登录流程 总体来说,就是三步: 点击微信登录,跳转到微信页面微信扫码登录,确认登陆微信跳转回来 这里,我们就得,明确两个问题: 跳到微信界面,跳过去的 URL 是什…

异常处理和swagger使用

全局异常处理类 定义全局异常处理类,会将错误全部提交到这个异常处理类中进行处理,这个类会将处理的统一结果响应给前端,如果不添加异常处理类,异常不会按照统一的响应格式进行,前端无法识别,当然也可以在…