linux编辑器-vim

1.vim是什么

vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

2.vim的基本概念

vim + 文件名就可以直接进入vim, (vim + 文件名 + n 进入vim之后,光标直接出现在第n行)

vim一共有三种常见的模式,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

末行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

3.命令模式常见操作

3.1 插入模式

  • 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
  • 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  • 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

3.2 移动光标

  • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
  • 按 「gg」: 定位到代码的第一行
  • 按「G」:定位到代码的最后一行
  • 按「n + shift + g」:定位到代码的第n行
  • 按「 $ 」:移动到光标所在行的“行尾”
  • 按「^」:移动到光标所在行的“行首”
  • 按「n + l」:光标移到该行的第n个位置,如:5l,56l
  • 按「w」:以单词为单位,向后移动,支持跨行
  • 按「b」:以单词为单位,向前移动,支持跨行

3.3 复制

  • 按 「yy」:复制当前行
  • 按 「n + yy」:复制n行操作,从当前行开始
  • 按 「dd」:剪切光标所在行
  • 按 「n + dd」:剪切n行操作,从当前行开始
  • 按 「p」:粘贴,粘贴到光标所在下一行
  • 按 「n + p」:粘贴n次操作,从当前行开始

3.4 撤销

  • 按 「u」:回到上一个操作。按多次“u”可以执行多次回复。
  • 按 「ctrl + r」:撤销的恢复

3.5 修改

  • 按「x」:每按一次,删除光标所在位置的一个字符
  • 按「n + x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
  • 按「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
  • 按「n + X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
  • 按「dd」:删除光标所在行
  • 按「n + dd」:从光标所在行开始删除n行
  • 按「shift + ~」:文本大小写的转换
  • 按「r」:替换光标所在处的字符
  • 按「n + r」:替换光标所在的向后n个字符
  • 按「R」:替换光标所到之处的字符,直到按下「ESC」键为止。(进入替换模式)

3.6 查找

  • 按「shift + #」:查找同名单词,按n同单词跳转

4.末行模式常见操作

在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。

4.1 基础操作

  • w(保存当前文件)
  • q(退出vim)
  • wq (输入「wq」,存盘并退出vim) 
  • q! (输入q!,不存盘强制退出vim)

4.2 列出行号

「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。

4.3 跳到文件中的某一行

「#」:   #号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

4.4 查找字符

「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

5.补充

5.1 注释

1.批量化注释

1. 按esc进入命令模式

2. 按ctrl + v (进入视图模式)

3. 按h/j/k/l选择区域
4. 按shift + i

5. 按//

6. esc

2.批量化删除注释

1. 按esc进入命令模式

2. 按ctrl + v (进入视图模式)

3. 按h/j/k/l选择区域

4. 按d即可

5.2 多文件编辑

按esc进入命令模式,再按shift + ;( : )进入末行模式,输入vs 文件名,即可打开一个新文件进行编写

使用ctrl + ww 就可以切换文件光标,无论打开了多少个文件, 光标只有一个,光标在哪个区域,就代表当前正在编写的是哪个文件。

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

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

相关文章

虹科分享 | MKA:基于先进车载网络安全解决方案的密钥协议

MKA作为MACsec的密钥协议,具有安全、高效、针对性强的特点,为您的汽车ECU通讯创建了一个安全的通信平台,可以助力您的各种汽车创新项目! 虹科方案 | 什么是基于MACsec的汽车MKA 一、MACsec在汽车行业的应用 在以往的文章中&#…

云原生Kubernetes:pod基础

目录 一、理论 1.pod 2.pod容器分类 3.镜像拉取策略(image PullPolicy) 二、实验 1.Pod容器的分类 2.镜像拉取策略 三、问题 1.apiVersion 报错 2.pod v1版本资源未注册 3.取行显示指定pod信息 四、总结 一、理论 1.pod (1) 概念 Pod是ku…

《智能网联汽车自动驾驶功能测试规程》

一、 编制背景 2018 年4 月12 日,工业和信息化部、公安部、交通运输部联合发布《智能网联汽车道路测试管理规范(试行)》(以下简称《管理规范》),对智能网联汽车道路测试申请、审核、管理以及测试主体、测试驾驶人和测试车辆要求等…

Vue.js 中的路由(Route)跳转

Vue.js 中的路由 官方解释 在 Vue.js 中,路由是一种用于导航和页面跳转的重要概念。Vue 提供了一个名为 Vue Router 的官方插件,用于构建单页面应用程序(SPA)的路由系统。Vue Router 允许您将不同的组件映射到应用程序的不同 URL…

分享5个和安全相关的 VSCode 插件

开发高质量的软件应用程序可能是艰巨的,因为许多组成部分必须协同工作才能创建出一个可运行的解决方案。这就是为什么开发人员需要尽可能获得所有帮助和便利,特别是在保护他们的应用程序时。 Visual Studio Code(VSCode)是最受欢迎…

eNSP-抓包实验

拓扑结构图: 实验需求: 1. 按照图中的设备名称,配置各设备名称 2. 按照图中的IP地址规划,配置IP地址 3. 使用Wireshark工具进行抓ping包,并分析报文 4. 理解TCP三次握手的建立机制 实验步骤: 1、配置P…

Python之Xlwings操作excel

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、xlwings简介二、安装与使用1.安装2.使用3.xlwings结构说明 二、xlwings对App常见的操作App基础操作工作簿的基础操作工作表的基础操作工作表其他操作 读取单元格…

uview indexList 按字母跳转不了

点击字母跳转不到位的问题&#xff1a;在<u-index-list>添加方法select“clickSelect“ 锚点要加id&#xff0c;用对应的字母做为id值&#xff0c; <u-index-anchor :id"key" :index"key"/> <template><view><view class&qu…

快速排序算法的递归和非递归

基本思路 选择一个基准值&#xff0c;将数组划分三个区域&#xff0c;小于基准值的区域位于左侧&#xff0c;等于基准值的区域位于中间&#xff0c;大于基准值的区域位于右侧。将大于和小于区域继续进行分区&#xff0c;周而复始&#xff0c;不断进行分区和交换&#xff0c;直…

超详细的 pytest 教程(一)使用入门篇

前言 pytest到目前为止还没有翻译的比较好全面的使用文档&#xff0c;很多英文不太好的小伙伴&#xff0c;在学习时看英文文档还是很吃力。本来去年就计划写pytest详细的使用文档的&#xff0c;由于时间关系一直搁置&#xff0c;直到今天才开始写。本文是第一篇&#xff0c;主…

【JAVA】Object类与抽象类

作者主页&#xff1a;paper jie_的博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和…

Vue--1.4Vue指令

Vue会根据不同的指令&#xff0c;针对标签实现不同的功能。 指令&#xff1a;带有v-前缀的特殊标签属性 v-前缀"表达式" 1.v-html 作用:动态解析标签innerHTML <!doctype html> <html> <head><meta charset"utf-8"><meta …

计算机竞赛 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

详解初阶数据结构之顺序表(SeqList)——单文件文件实现SeqList的增删查改

目录 一、线性表 二、顺序表 2.1概念及结构 2.2接口实现 2.3动态顺序表的创建 2.3动态顺序表的初始化 2.3.1传值初始化 2.3.2传址初始化 2.4动态顺序表的清空 2.5动态顺序表的扩容 2.6动态顺序表内容的打印 三、动态顺序表的使用 3.1尾插尾删 3.1.1尾插 3.1.2尾删…

软件测试/测试开发丨ChatGPT:带你进入智能对话的新时代

简介 人工智能时代来临 我们正处于AI的iPhone时刻。——黄仁勋&#xff08;英伟达CEO&#xff09; ChatGPT 好得有点可怕了&#xff0c;我们距离危险的强人工智能不远了。——马斯克&#xff08;Tesla/SpaceX/Twitter CEO&#xff09; 以上的内容说明我们现在正处于一个技术大…

【uni-app】

准备工作 1.下载hbuilder&#xff0c;插件使用Vue3的uni-app项目 2.需要安装编译器 3.下载微信开发者工具 4.点击运行->微信开发者工具 5.打开微信开发者工具的服务端口 效果图 page.json&#xff08;添加路由&#xff0c;修改底层导航栏&#xff0c;背景色&#xff09…

读书笔记:多Transformer的双向编码器表示法(Bert)-1

多Transformer的双向编码器表示法 Bidirectional Encoder Representations from Transformers&#xff0c;即Bert&#xff1b; 本笔记主要是对谷歌Bert架构的入门学习&#xff1a; 介绍Transformer架构&#xff0c;理解编码器和解码器的工作原理&#xff1b;掌握Bert模型架构…

2023.9.7 关于 TCP / IP 的基本认知

目录 网络协议分层 TCP/IP 五层&#xff08;四层&#xff09;模型 应用层 传输层 网络层&#xff08;互联网层&#xff09; 数据链路层&#xff08;网络接口层&#xff09; 物理层 网络数据传输的基本流程 网络协议分层 为什么需要分层&#xff1f; 分层之后&#xff0c…

MATLAB实现数据插值

目录 一.理论知识 二.一维插值实例 三.二维插值实例 一.理论知识 所谓插值&#xff0c;顾名思义&#xff0c;插入数值。很多时候&#xff0c;我们仅有离散点上的数据&#xff0c;这时如果我们想要分析变量之间的函数关系&#xff0c;则无法实现。但如果通过插值处理&#xf…

PCL入门(四):kdtree简单介绍和使用

目录 1. kd树的意义2. kd树的使用 参考博客《欧式聚类&#xff08;KD-Tree&#xff09;详解&#xff0c;保姆级教程》和《(三分钟)学会kd-tree 激光SLAM点云搜索常见》 1. kd树的意义 kd树是什么&#xff1f; kd树是一种空间划分的数据结构&#xff0c;对于多个维度的数据&a…