【Linux】vim

文章目录

  • 一、vim是什么?
  • 二 、命令模式
  • 三、插入模式
  • 四、底行模式
  • 五、vim配置


一、vim是什么?

Vim是一个强大的文本编辑器,它是Vi的增强版,支持多种语法高亮、插件扩展、多模式操作等功能。Vim有三种基本的工作模式:命令模式、输入模式和底行模式。在不同的模式下,可以使用不同的指令来编辑文本、移动光标、搜索替换、执行命令等。

另外,vim也可以用来创建文件,例如vim test.c,如果有test.c这个文件就打开,没有的话就创建并打卡文件。

二 、命令模式

用户在刚启动vim时所在的模式便是命令模式。
此状态下敲击键盘动作会被 vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。

命令模式下常用命令
a – 进入插入模式,在光标下一个位置开始输入文本
i – 切换到输入模式,在光标当前位置开始输入文本
o – 在当前行的下方插入一个新行,并进入插入模式
注意:这三个命令都是从命令模式进入插入模式,只不过进入方式有所不同。
: – 切换到底行模式,以在最底一行输入命令(在我们的键盘上其实是shift+;)

注意:插入模式和底行模式只能通过命令模式进入,插入模式和底行模式之间不能互相进入。
那我们又如何从插入模式和底行模式回退到命令模式呢?Esc
甚至当我们不确定自己处在哪个模式时也可以无脑多按几次Esc回退到命令模式。

模式转换示意图

x – 删除当前光标所在处的字符
n dd – 剪切/删除当前行,n表示删除多少行
n yy – 复制当前行,n表示复制多少行
p(小写) – 粘贴剪贴板内容到光标下方
P(大写)-- 粘贴剪贴板内容到光标上方
u – 撤销上一次操作
ctrl + r – 重做上一次撤销的操作
gg – 定位到代码的第一行
G – 定位到最后一行,nG可以定位到任意一行
shift+6(^) – 特定一行的开始
shift+4($) – 特定一行的结尾
h – 光标向左移动
j – 光标向下移动
k – 光标向上移动
l – 光标向右移动

有些读者可能会疑惑上下左右方向键不行吗?为什么要用这个来移动光标。这其实是因为老式的键盘是没有方向键的。

三、插入模式

进入插入模式后我们就可以正常写代码了,其实这时候和Windows下的文本编辑器已经没多大区别了也没有什么特别的指令。注意:如果要进去其他模式,要先Esc返回命令模式,然后再从命令模式进入其他模式。

四、底行模式

在命令模式下按下 :(英文冒号)就进入了底行模式。
w – 保存文件。
q – 退出 Vim 编辑器。
wq --保存文件并退出 vim
wq! – 强制写入并保存,退出vim
set nu/nonu – 添加行号/不添加行号
!cmd – 直接在不退出vim的情况下进行查看,编译,运行等动作
/关键字 – 用于搜索关键字,n表示下一个

五、vim配置

vim在启动的时候,会自动扫描当前用户的家目录下的.vimrc,让.vimrc内部的选项生效。
vim配置,其实核心就是向.vimrc里面添加更多的配置选项即可!
vim 也可能会需要各种插件!

不过vim的配置命令更加复杂,读者可以自行上网查看学习。另外,可以前往github/gitee等网站寻找一些自动化配置vim的开源项目。

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

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

相关文章

self.register_buffer方法使用解析(pytorch)

self.register_buffer就是pytorch框架用来保存不更新参数的方法。 列子如下: self.register_buffer("position_emb", torch.randn((5, 3)))第一个参数position_emb传入一个字符串,表示这组参数的名字,第二个就是tensor形式的参数…

互联网Java工程师面试题·Spring篇·第七弹

目录 36、什么是基于 Java 的 Spring 注解配置? 给一些注解的例子. 37、什么是基于注解的容器配置? 38、怎样开启注解装配? 39、Required 注解 40、Autowired 注解 41、Qualifier 注解 42、在 Spring 框架中如何更有效地使用 JDBC? 43、JdbcTemplate 44…

Flink的API分层、架构与组件原理、并行度、任务执行计划

Flink的API分层 Apache Flink的API分为四个层次,每个层次都提供不同的抽象和功能,以满足不同场景下的数据处理需求。下面是这四个层次的具体介绍: CEP API:Flink API 最底层的抽象为有状态实时流处理。其抽象实现是Process Functi…

macOS电池续航工具:Endurance中文

Endurance for Mac是一款强大而实用的电池管理和优化软件,专为MacBook设计。通过智能调整系统设置和管理后台应用,它能有效延长电池续航时间,提升工作和娱乐效率,成为你在各种场合下的得力助手。 Endurance for Mac软件的功能特色…

spring中纯注解实现Advice

背景:课本上是注解和Xml文件混用的方式,研究了一下用配置类加注解和测试方法实现各种通知方式的切入。 1.首先dao的接口,增删改查 public interface UserDaoAspect {public void add();public void delete();public void update();public vo…

【Go 编程实践】从零到一:创建、测试并发布自己的 Go 库

为什么需要开发自己的 Go 库 在编程语言中,包(Package)和库(Library)是代码组织和复用的重要工具。在 Go 中,包是代码的基本组织单位,每个 Go 程序都由包构成。包的作用是帮助组织代码&#xf…

[java进阶]——方法引用改写Lambda表达式

🌈键盘敲烂,年薪30万🌈 目录 📕概念介绍: ⭐方法引用的前提条件: 1.引用静态方法 2.引用构造方法 ①类的构造: ②数组的构造: 3.引用本类或父类的成员方法 ①本类&#xff1…

思维训练4

题目描述1 Problem - A - Codeforces 题目分析 对于此题我们要求差值种类最大,故我们可以构造出相邻差值分别为1,2,3...由于n规定了最大的范围故我们增到一定的差值之后其差值必定为之前出现过的数字,但由于要保证数组呈递增趋势…

学习LevelDB架构的检索技术

目录 一、LevelDB介绍 二、LevelDB优化检索系统关键点分析 三、读写分离设计和内存数据管理 (一)内存数据管理 跳表代替B树 内存数据分为两块:MemTable(可读可写) Immutable MemTable(只读&#xff0…

Qt Creator插件

这里以Qt Creator 4.15.2版本的源码为示例进行分析 源码结构如下,为了追溯其插件加载过程,从main.cpp入手 Qt Creator的插件目录,生成的插件,好几十个呢 Qt Creator插件的读取 int main(int argc, char **argv)中以下代码创建插…

Vue 3 相对于 Vue2,模板和组件的一些变化

目录 1,模板的变化1,v-modelvue2vue3 2,v-if 和 v-for3,keyv-forv-if 4,Fragment 2,组件的变化1,Teleport2,异步组件 1,模板的变化 1,v-model vue2 对组件…

垃圾回收系统小程序定制开发搭建攻略

在这个数字化快速发展的时代,垃圾回收系统的推广对于环境保护和可持续发展具有重要意义。为了更好地服务于垃圾回收行业,本文将分享如何使用第三方制作平台乔拓云网,定制开发搭建垃圾回收系统小程序。 首先,使用乔拓云网账号登录平…

【UE5 Cesium】actor随着视角远近来变化其本身大小

效果 步骤 1. 首先我将“DynamicPawn”设置为默认的pawn类 2. 新建一个父类为actor的蓝图,添加一个静态网格体组件 当事件开始运行后添加一个定时器,委托给一个自定义事件,每2s执行一次,该事件每2s获取一下“DynamicPawn”和acto…

html+css 通过div模拟出一个表格样式,优化多个边框导致的宽度计算问题

htmlcss 通过div模拟出一个表格样式&#xff0c;优化多个边框导致的宽度计算问题 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, i…

VB.NET—DataGridView控件教程详解

目录 前言: 过程: 第一步: 第二步: 第三步: 第四步: 第五步&#xff1a; 番外篇: 总结: 前言: DataGridView是.NET FormK中的一个Windows窗体控件&#xff0c;它提供了一个可视化的表格控件&#xff0c;允许用户以表格形式显示和编辑数据。它通常用于显示和编辑数据库…

JavaEE-博客系统2(功能设计)

本部分内容&#xff1a;实现博客列表页&#xff1b;web程序问题的分析方法&#xff1b;实现博客详情页&#xff1b; 该部分的代码如下&#xff1a; WebServlet("/blog") public class BlogServlet extends HttpServlet {//Jackson ObjectMapper类(com.fasterxml.jac…

Pyhotn: Mac安装selenium没有chromedriver-114以上及chromedriver无法挪到/usr/bin目录下的问题

1.0 安装selenium 终端输入&#xff1a; pip install selenium 查看版本&#xff1a; pip show selenium2.0 安装chromedriver 查看chrome版本 网上大多数是&#xff0c;基本到114就停了。 https://registry.npmmirror.com/binary.html?pathchromedriver/ 各种搜索&#…

ros1 自定义订阅者Subscriber的编程实现

话题模型 图中&#xff0c;我们使用ROS Master管理节点。 有两个主要节点&#xff1a; Publisher&#xff0c;名为Turtle Velocity&#xff08;即海龟的速度&#xff09;Subscriber&#xff0c;即海龟仿真器节点 /turtlesim Publisher(Turtle Velocity)&#xff0c;发布Messa…

Appium 移动端自动化测试,触摸(TouchAction) 与多点触控(MultiAction)

一、触摸 TouchAction 在所有的 Appium 客户端库里&#xff0c;TouchAction 触摸对象被创建并被赋予一连串的事件。 规范里可用的事件有&#xff1a; * 短按(press) * 释放(release) * 移动到(moveTo) * 点击(tap) * 等待(wait) * 长按(longPress) * 取消(cancel) * 执行(per…

【教程】多进程下载百度旋转验证码图片-制作数据集

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 效果展示&#xff1a; 直接上代码&#xff0c;开箱即用&#xff08;当然selenium库自己装一下&#xff09;&#xff1a; import os import time import requests from selenium import webdriver from selenium.…