VIM使用笔记

VIM四种工作模式

  • 命令模式:Vim启动后默认进入命令模式。在此模式下,可以使用光标键进行光标移动,也可以键入不同的命令完成选择、复制、粘贴、删除等操作。例如,按gg可以快速移动到文本行首,按G可以快速移动到文本行尾。
  • 编辑模式:在命令模式下按i、a、o等键可以进入编辑模式,在此模式下可以输入文本。按Esc键可以退出编辑模式,返回到命令模式。
  • 底行模式:在命令模式下按:键进入底行模式。此时光标会移到屏幕底部,可以输入相关指令保存修改或退出Vim,也可以设置编辑环境、寻找字符串、列出行号等。指令执行后会自动返回命令模式。
  • 视图模式:它允许用户选择文本区域以便进行复制、剪切或删除等操作。

命令模式

光标命令
  • 逐字符移动:
    • h:向左移动一个字符。
    • l:向右移动一个字符。
    • j:向下移动一个字符(等同于按下行键)。
    • k:向上移动一个字符(等同于按上键)。
    • #h:向左移动#个字符(#为数字)。
  • 以单词为单位移动:
    • w:移至下一个单词的词首。
    • e:跳至当前或下一个单词的词尾。
    • b:跳至当前或前一个单词的词首。
    • #w:向右移动#个单词。
  • 行内跳转:
    • 0:跳转至绝对行首。
    • ^:跳转至行首的第一个非空白字符。
    • $:跳转至绝对行尾。
  • 行间跳转:
    • #G:跳转至第#行(例如,150G代表跳转至第150行)。
    • gg:跳转至第一行。
    • G:跳转至最后一行。
  • 翻屏:
    • Ctrl+f:向下翻一屏。
    • Ctrl+b:向上翻一屏。
    • Ctrl+d:向下翻半屏。
    • Ctrl+u:向上翻半屏。
文本编辑命令
  • 复制:
    • yy:复制当前行。
    • nyy:从当前行开始复制n行。
    • y$:从当前光标位置复制到行尾。
    • y^:从当前光标位置复制到行首的非空白字符。
  • 剪切:
    • dd:剪切(删除)当前行。
    • ndd:从当前行开始剪切n行。
    • d$:从当前光标位置剪切到行尾。
    • d^:从当前光标位置剪切到行首的非空白字符。
  • 粘贴:
    • p:在当前光标下一行粘贴复制或剪切的内容(如果复制或剪切的内容为非整行,则粘贴至光标所在字符的后面)。
    • P:在当前光标上一行粘贴复制或剪切的内容(如果复制或剪切的内容为非整行,则粘贴至光标所在字符的前面)。
  • 删除:
    • x:删除光标所在处的单个字符。
    • #x:删除光标所在处及向后的共#个字符。
    • d:与跳转命令组合使用,如dw删除当前光标到下一个单词词首的内容,de删除当前光标到当前或下一个单词词尾的内容。
  • 撤销与恢复:
    • u:撤销前一次的编辑操作。
    • #u:直接撤销最近#次编辑操作。
    • Ctrl+r:恢复最近一次撤销的操作。

编辑模式

在命令模式下,用户可以通过以下按键组合进入编辑模式:

  • i:在当前光标所在字符的前面插入文本。
  • a:在当前光标所在字符的后面插入文本。
  • o:在当前光标所在行的下方新建一行,并转到新行的行首插入文本。
  • I:在当前行的行首插入文本(即光标移动到行首后再插入)。
  • A:在当前行的行尾插入文本(即光标移动到行尾后再插入)。
  • O:在当前光标所在行的上方新建一行,并转到新行的行首插入文本。
退出编辑模式

要退出编辑模式并返回到命令模式,用户只需按下Esc键。这样,用户就可以继续使用Vim的命令模式命令来浏览和编辑文档了。

底行模式(末行)

  • 进入底行模式:在Linux终端中,用户可以通过输入冒号(:)来进入底行模式。一旦进入底行模式,用户就可以在命令行界面下输入各种命令。
  • 退出底行模式:按Esc键可以退出底行模式,返回到命令模式。
文件编辑相关命令
  • :w:保存当前文件。
  • :q:退出编辑器。
  • :q!:强制退出编辑器,放弃对文件的修改。
  • :wq:保存并退出编辑器。
  • :x:保存并退出编辑器,只有在文件有修改的情况下才会执行保存操作。
  • :w filename:以指定的文件名保存当前文件。
搜索替换命令
  • :/pattern:搜索指定模式的文本,可以使用正则表达式进行高级的匹配。
  • : s/old/new:替换当前行第一个匹配的文本。
  • :%s/old/new/g:替换整个文件中的所有匹配文本。
  • :%s/old/new/gc:替换整个文件中的所有匹配文本,并给出提示是否替换。
文件定位命令
  • :n:跳转到下一个文件。
  • :N:跳转到上一个文件。
  • :number 或 :#(#代表数字):跳转到文件的指定行,例如“:10”跳转到文件的第10行。
  • : $: 跳转到文件的最后一行。
其他常用命令
  • :ls:列出打开的所有文件。
  • :e!:放弃对文件的修改并重新加载文件。
  • :r filename:在当前光标位置插入另一个文件的内容。
  • :set:查看或修改底行模式的参数设置。
  • :file:显示当前编辑的文件名和文件类型。
  • command:在底行模式下运行指定的Shell命令。

视图模式

  • 字符视图模式:按v键进入,允许用户选择单个字符或字符块。
  • 行视图模式:按V键进入,允许用户选择整行文本。
  • 块视图模式:按Ctrl+v键进入,允许用户选择矩形块状的文本区域。
视图模式中的操作

进入视图模式后,用户可以使用方向键(h、j、k、l)来移动光标,从而选择所需的文本区域。选择完成后,用户可以使用以下命令对所选文本进行操作:

  • 复制:按y键复制所选文本。
  • 剪切:按d键剪切所选文本。
  • 粘贴:退出视图模式后,按p键将复制的文本粘贴到当前光标位置。
视图模式退出:要退出视图模式并返回到命令模式,用户只需按下Esc键。

持续更新修正补充中

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

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

相关文章

Vue学习之路17----事件

可以自定义事件让子组件向父组件传值 1.使用emit 2.使用props 3.使用mitt 其实mitt和第一种方法类似,都用emitt事件,但是mitt不局限于父子之间通信,他可以在任意2个组件之间通信, 虽然需要安装,但mitt很小&#xff…

网络安全认证的证书有哪些?

在网络安全领域,专业认证不仅是个人技术能力的象征,也是职业发展的重要推动力。随着网络安全威胁的日益严峻,对网络安全专业人才的需求也在不断增长。本文将介绍一些网络安全认证的证书,帮助有志于从事网络安全行业的人士了解并选…

D59【python 接口自动化学习】- python基础之异常

day59 捕获异常常见问题 学习日期:20241105 学习目标:异常 -- 75 避坑指南:编写捕获异常程序时经常出现的问题 学习笔记: 捕获位置设置不当 设置范围不当 捕获处理设置不当 嵌套try-except语法错误 总结 位置,范围…

yelp数据集上试验SVD,SVDPP,PMF,NMF 推荐算法

SVD、SVD、PMF 和 NMF 是几种常见的推荐算法,它们主要用于协同过滤和矩阵分解方法来生成个性化推荐。下面是对每种算法的简要介绍: 1. SVD(Singular Value Decomposition) 用途:SVD 是一种矩阵分解技术,通…

C++ | Leetcode C++题解之第540题有序数组中的单一元素

题目&#xff1a; 题解&#xff1a; class Solution { public:int singleNonDuplicate(vector<int>& nums) {int low 0, high nums.size() - 1;while (low < high) {int mid (high - low) / 2 low;mid - mid & 1;if (nums[mid] nums[mid 1]) {low mid…

Python练习7

Python日常练习 题目&#xff1a; 编写程序&#xff0c;输出由1、2、3、4这四个数字组成的每位数都不相同的所有三位数 要求&#xff1a; 每个数字用换行隔开 --------------------------------------------------------- 注意&#xff1a; 部分源程序给出如下。请勿改动…

RK3568开发板静态IP地址配置

1. 连接SSH MYD-LR3568 开发板设置了静态 eth0:1 192.168.0.10 和 eth1:1 192.168.1.10&#xff0c;在没有串口时调试开发板&#xff0c;可以用工具 SSH 登陆到开发板。 首先需要用一根网线直连电脑和开发板&#xff0c;或者通过路由器连接到开发板&#xff0c;将电脑 IP 手动设…

MySQL45讲 第八讲 事务到底是隔离的还是不隔离的?

文章目录 MySQL45讲 第八讲 事务到底是隔离的还是不隔离的&#xff1f;MVCC 实现原理事务 ID 与数据版本一致性视图 总结 MySQL45讲 第八讲 事务到底是隔离的还是不隔离的&#xff1f; 在 MySQL 的事务处理中&#xff0c;事务隔离级别与数据一致性是至关重要的概念。可重复读隔…

【工具变量】中国制造2025试点城市数据集(2000-2023年)

数据简介&#xff1a;《中国制造2025》是中国ZF于2015年5月8日印发的一项战略规划&#xff0c;旨在加快制造业的转型升级&#xff0c;提升制造业的质量和效益&#xff0c;实现从制造大国向制造强国的转变。该规划是中国实施制造强国战略的第一个十年行动纲领&#xff0c;明确提…

任务中心全新升级,新增分享接口文档功能,MeterSphere开源持续测试工具v3.4版本发布

2024年11月5日&#xff0c;MeterSphere开源持续测试工具正式发布v3.4版本。 在这一版本中&#xff0c;系统设置方面&#xff0c;任务中心支持实时查看系统即时任务与系统后台任务&#xff1b;接口测试方面&#xff0c;新增接口文档分享功能、接口场景导入导出功能&#xff0c;…

CUDA下载和安装

CUDA下载和安装 前言下载安装后续添加参考链接 前言 由于我需要运行的代码与我当前的CUDA版本不兼容,所以我现在需要进行CUDA的更新,下载一个低版本的CUDA以匹配我的Pytorch 下载 CUDA下载地址:CUDA下载链接 选择适合自己的版本 由于我是要运行一个开源项目,我选择对应的CU…

Multimodal Reasoning with Multimodal Knowledge Graph

摘要 大型语言模型&#xff08;llm&#xff09;的多模态推理常常存在幻觉和llm中存在缺陷或过时的知识。一些方法试图通过使用文本知识图来缓解这些问题&#xff0c;但其单一的知识形态限制了全面的跨模态理解。本文提出了多模态推理与多模态知识图&#xff08;MR-MKG&#xf…

Git代码托管(三)可视化工具操作(1)

常见的可视化操作工具有 一、官方网页 如码云、gitlab&#xff0c;自带了常见的git操作。 以码云为例&#xff1a; 1、创建分支&#xff1a; 进入分支目录&#xff0c;点击 新建分支 按钮&#xff0c; 在弹出框中输入新分支名称&#xff0c;点击确定即可一键创建分支&…

go中Println和Printf的区别

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 go中Println和Printf的区别 package mainimport ( "fmt" )//TIP To run your code, right-click the c…

项目审核系统 ---(连接数据库---项目模拟)

本章主要是查询方法和修改方法 编写查询方法&#xff0c;查询所有项目审核信息并返回查询结果&#xff0c;需实现分页功能&#xff0c;注意必要的异常处理。编写查询方法&#xff0c;根据项目编号查询指定项目的审核信息&#xff0c;注意必要的异常处理。编写修改方法&#xf…

(十三)JavaWeb后端开发——MySQL2

目录 1.DQL数据查询语言 1.1基本查询 1.2条件查询 where关键字 1.3分组查询 1.4排序查询 1.5分页查询 2.多表设计 3.多表查询——联查 4.多表查询——子查询​ 5.MySQL 事务 6.MySQL 索引 1.DQL数据查询语言 分为五大基本查询语法 1.1基本查询 -- 查询特定字段 s…

【STL栈和队列】:高效数据结构的应用秘籍

前言&#xff1a; C 标准模板库&#xff08;STL&#xff09;为我们提供了多种容器&#xff0c;其中 stack&#xff08;栈&#xff09;和 queue&#xff08;队列&#xff09;是非常常用的两种容器。 根据之前C语言实现的栈和队列&#xff0c;&#xff08;如有遗忘&#xff0c;…

LWIP通信协议UDP发送、接收源码解析

1.UDP发送函数比较简短&#xff0c;带操作系统和裸机一样。以下是udp_sendto源码解析&#xff1b; 2.LWIP源码UDP接收数据 2.1.UDP带操作系统接收数据&#xff0c;以下是源码解析&#xff1b; 2.2.UDP裸机接收数据&#xff0c;以下是源码解析

小菜家教平台:基于SpringBoot+Vue打造一站式学习管理系统

前言 现在已经学习了很多与Java相关的知识&#xff0c;但是迟迟没有进行一个完整的实践&#xff08;之前这个项目开发到一半&#xff0c;很多东西没学搁置了&#xff0c;同时原先的项目中也有很多的问题&#xff09;&#xff0c;所以现在准备从零开始做一个基于SpringBootVue的…

【优选算法 — 双指针】双指针小专题

和为 s 的两个数 和为s的两个数 题目描述 解法一&#xff1a;暴力枚举 暴力枚举&#xff0c;先固定一个数&#xff0c;然后让这个数和另一个数匹配相加&#xff0c; 如果当前的数 所有剩余的数 target&#xff0c;则返回这两个数&#xff0c;否则固定下一个数&#…