​ ​【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,一经查实,立即删除!

相关文章

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

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

CUE-云原生配置语言

CUE 是一种服务于云化配置的强类型配置语言,由 Go team 成员 Marcel van Lohiuzen 结合 BCL 及多种其他语言研发并开源,可以说是 BCL 思路的开源版实现CUE 是一种服务于云化配置的强类型配置语言,由 Go team 成员 Marcel van Lohiuzen 结合 B…

AI OS

一,概念 AI OS, 或AI for OS,也就是近一年来伴随着人工智能的热度而衍生出的一个新的概念 - 人工智能操作系统。 为什么提出AI OS的概念? 这是因为人工智能技术的发展势头太过迅猛,尤其在深度学习、大模型等AI技术的突破后&…

微信小程序: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 列宽:设置列的宽度…

【下厨记】青椒土豆丝的做法和写代码之间的关系

在gap year 的尾声,我决定给自己报个厨艺培训班,精进一下厨艺。讲道理,在这样一个充斥着代码的社区写怎么做土豆丝是不是很不搭界,但其实没有,且听我娓娓道来。论,青椒土豆丝做法和写代码之间的关系。 1.找…

git怎么把本地仓库提交到远程仓库

要把本地仓库的内容推送到远程仓库,你需要先设置远程仓库的URL,然后使用git push命令。以下是步骤和示例代码: 1、在本地创建一个新的git仓库或者进入一个已存在的git仓库目录。 2、添加远程仓库(如果尚未添加)。使用…

使用RedisTemplate操作executePipelined

前言 RedisTemplate 是 Spring 提供的用于操作 Redis 的模板类,它封装了 Redis 的连接、连接池等管理,并提供了一系列的操作方法来简化 Redis 的使用。其中,executePipelined 方法是 RedisTemplate 中的一个高级特性,用于支持 Re…

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

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

为什么有了MAC还需要IP?

目录 MAC地址(Media Access Control Address)IP地址(Internet Protocol Address)为什么需要两者? IP地址和MAC地址在网络通信中扮演着不同的角色,它们各自有独特的功能和用途。下面是它们的主要区别和为什么…

VitePress Config.mts 详细讲解

VitePress 是一个基于 Vite 的静态站点生成器,专为技术文档和博客设计。它继承了 Vite 的快速开发体验,并提供了一套简洁的配置选项。在本文中,我们将深入探讨 VitePress 的 config.mts 配置文件,这是中高级开发者定制站点的关键所…

详解Vue中nextTick的原理与作用

Vue中的nextTick是一个非常重要的API,它允许开发者延迟回调函数的执行直到下次DOM更新循环之后。这一机制在Vue开发中非常有用,特别是在处理DOM更新和异步操作时。下面将详细解释nextTick的原理与作用。 原理 Vue的DOM更新是异步进行的。当数据发生变化…

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之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

VSCode C++练习

VSCode 配置 C++ 环境(Windows) 参考http://t.csdnimg.cn/27G0Z 1. 配置 C++ 编译器 首先需要安装 C++ 编译器。在 Windows 上,可以安装 MinGW 或者 Visual Studio;在 MacOS 上,可以安装 Clang 或者 Xcode;在 Linux 上,可以安装 GCC。 1.2 添加环境变量 将 mingw64…

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…