理解vim工作的几个关键字

news/2024/4/30 1:39:09/文章来源:https://www.cnblogs.com/nevertoolate22/p/16848138.html

理解vim工作的几个关键字

下面我们再来认识一下 vim ,理清下面的 vim 的几个名词,这样方便我们以后更好的去使用和进阶vim : 缓冲区(Buffer), 窗口 (Window ) , 标签(Tab) , 标记(Mark ), 寄存器(Register) , 插件(Plugin) , vim 脚本(VimScript)

缓冲区(buffer)

什么是 vim 缓冲区 ?

在弄清楚 Buffer / Window / Tab之前看一下下面这张图:

img

我们用 vim 一次性打开多个文件 :

如:

 vim test1 test2 test3 

界面可以看到,只会显示 test1 文件,其他俩个呢? 其实都打开了,vim 把这三个文件都缓存起来了,只是显示出来的是第一个文件 test1 的内容而已,

vim 打开文件的时候就会创建缓冲区,打开几个就创建几个缓冲区,默认加载第一个缓冲区,显示第一个文件的内容。vim 的官方解释:缓冲区是一个文件的内容占用的那部分vim内存。

A buffer is an area of Vim’s memory used to hold text read from a file. In addition, an empty buffer with no associated file can be created to allow the entry of text.

怎么样使用缓冲区?

下面列出几个操作缓冲区的常用命令:

:ls  

列出所有的缓冲区

:bn

切换下一个缓冲区,显示下一个文件的内容

:bp 

切换上一个缓冲区,显示上一个文件的内容

:b number  

这里的 number 是缓冲区的一个数字编号,当 :ls 显示缓冲区的时候都会显示出一个缓冲区的编号

:b fileName  

这里的 fileName 是一个具体的文件名称,文件名称可以是正则表达式,也可以是文件名中的个别字母,一旦匹配就会加载该缓冲区,显示该文件。

窗口(window)

什么是 vim 窗口 ?

img

使用 vim 打开文件,呈现在你眼前的文件内容就是窗口,窗口是用来查看缓冲区的内容的。你可以用多个窗口查看同一个缓冲区,也可以用多个窗口查看不同的缓冲区。

怎么使用窗口 ?

可以在文章 精通 VIM ,此文就够了 中的分屏操作中看到一些详细操作。

标签 (Tab)

什么是 Tab ?

img

用过浏览器打开网页的我们都知道,打开网页的时候在浏览器的上方通常会有一个网页标签,这样方便我们快速切换不同的网页,vim 也有类似的概念,可以操考上图标记看到。

下面再来理清一下 Buffer / Window / Tab 三者之间的概念:

Buffer 是 vim 打开文件的时候创建的一个缓冲区,用来存储打开的文件 。 使用 vim 每打开一个文件就会创建一个 Buffer 。

窗口是用来展示 Buffer 的信息的,vim 之所以有 Buffer 的概念,大概就是窗口显示文件内容的时候,可以快速显示出来。

Tab 可以想象成浏览器中的标签页,不同之处是 vim 中的 一个Tab 可以有很多个窗口,每个窗口用来展示文件的内容信息。

我们通常可以根据我们的用途来创建 Tab ,比如:我在浏览一个项目,我可以创建两个 Tab , 一个 Tab 用来浏览前端代码, 一个 Tab 可以用来使用浏览后端代码。

下面列举一下关于 Tab 常见的几个命令如下:

:tabnew  web

使用 :tabnew 创建一个名字叫 web 的 tab ,当然名字也可以没有,这样会创建一个没有名字的 tab

:tabc

关闭当前的 tab

:tabn

切换到下一个 tab

:tabp 

切换到上一个 tab

:tabs 

查看一共有几个 tab

gt 

这个是一个快捷键在正常模式下按下键盘上的 g 和 t 就会自动切换 tab

1gt

这是上一个命令的拓展,按下数字键(1,2,3,4……)和 gt ,将切换到相应顺序的 tab, tab 的序号默认从 1 开始,上面的命令将会切换到第一个 tab 。

标记 (mark)

什么是 mark ?

我们通常在读一本很厚的书的时候,通常会加上一个书签,用来标记我们的进度,在 vim 当中也有一个类似的概念,我们也可以使用 vim 在我们的文件上打上一个标记,方便我们快速的跳到这个位置。

如何使用 mark ?

按下键盘上的 m , 紧跟着在按下键盘上的(a-zA-Z)当中的任何一个字母,这样一个标记 (mark)例如 ma, mA 这样一个名字叫做 a 或者 A 的标记就建立起来了。

例如 :

ma 

意思在当前文件的光标所在的行建立了一个标记,以后我们可以快速定位到这个位置。

如何激活标记?

使用 ‘(单引号) 或者 ` (常规键盘靠近数字键 1 左边的按键,我这里就做撇号) ,紧接着按下当初标记的那个字母就会跳到当初标记的那个位置。

例如 :

`a 和 ‘a

‘a 和 `a有什么区别呢?

‘a (也就是单引号+a) 是跳转到当初标记的行首

`a (也就是撇号+a) 实跳转到当初标记的时候光标所在的位置

‘ 和 ` 的 区别总结

‘(单引号)通常用来跳转到标记的文本的行首

’ (撇号) 通常用来跳转到标记的光标的位置

ma 和 mA有什么区别?

如果要是在文件之间跳转要使用大写的标记才可以,例如现在在当前文件的某处打了一个标记 mA , 离开该文件切换到了另一个文件,此时使用 ‘A 就可以返回之前文件打标记的地方了。

结论:小写字母通常用来单个文件坐标记,大写字母通常是用来文件间坐标记。

:marks 

列出所有的标记

:delmarks  a 

删除 a 标记 ,也可以一次删除多个标记,例如, :delmarks a b c d 这样就删除了 a , b , c , d 四个标记

:delmarks!

删除所有的标记(删除所有小写字母的标记)

总结:

m 是创建标记的关键字

a-zA-Z 是创建标记的名字,小写字母用来创建单个文件的标记,大些字母用来创建文件之间的标记。

` 撇号通常用来定位到之前光标所在的位置

‘ 单引号通常用来定位到标记所在的行

:marks 显示所有的标记

:delmarks 删除指定的标记

:delmarks! 删除所有标记(大些字母的标记除外)

寄存器(register)

什么是 vim 的寄存器?

顾名思义,一个存东西的机器, 在 精通 VIM ,此文就够了 文章中,我详细的列举了复制和黏贴的一些操作,你有没有想过使用 vim 复制东西的时候,它复制到哪里去了呢?

在使用不同操作系统的时候,我们经常会使用复制和黏贴的功能,当我们复制内容的时候,系统把内容放到了剪切板,当我们黏贴使用的时候就会快速的从剪切板里面获取内容。

vim 也有相似的逻辑,当我们使用 y 复制内容的时候,vim 默认把内容寄存到一个无名寄存器,当使用黏贴功能 p 的时候,就会默认从无名寄存器中取出内容。

vim 如何定义一个有名字的寄存器?

vim 默认使用的是无名寄存器,通常情况下我们使用是没有问题的,但是我就想把东西存到一个有名字的地方。

vim 通常使用 “(双引号)加上一个 a-z 的字母来给定义一个有名字的寄存器。

例如如下:

“ayy 表示的是复制当前行内容到 a 寄存器当中

“ap 表示的是从 a 寄存器当中取出内容

vim 如何查看所用寄存器寄存内容呢?

:reg

该命令会列出所有的寄存器

:reg a

会查看 a 寄存器里寄存的内容

如何使用自己命名的寄存器呢?

举例如下:

“ap 使用 p 黏贴命令就可以从指定的寄存器中取出内容了,该例就是从 a 寄存器中取出内容。

无名寄存器是怎么定义的?

“” 两个双引号就是一个无名寄存器,通常我们复制黏贴的时候都会自动启用这个寄存器。

总结:

关于寄存器的用处,这里不去过多的研究了,因为平时用的就少,有兴趣的可以使用 :help reg 查看一下寄存器的详细使用方法。

记住这个一个符号 “ (双引号)可以用来定义寄存器哟!

插件

什么是 vim 的插件?

vim 的插件就是解决用户需求的,比如你在 vim 中想拥有一些类似于 IDE 上的好用的功能,这样就需要插件来祝你一臂之力了。

vim 受很多人喜欢的原因之一可能就是 vim 有很多实用的插件,总有一款解决你的需求。

插件应该怎么用?

我们可以通过插件管理器,把插件绑定到 vim 这款编辑器上,然后我们就可以在使用 vim 的时候使用插件提供的功能了。现在流行的 vim 插件管理器很多,都很好用,也可以 google 查询选择一款最适合自己的插件管理器来安装,更新,卸载插件,推荐一个比较好用流行的插件 vim-plug ,该插件管理器简单易用,github 上面也有很详细的安装教程,这里就不再此过多叙述,如果你使用该插件管理器有什么问题可以下方留言,相信有很多好心人会帮到你。

如果你还不会使用插件,推荐我的一篇文章 精通 vim ,插件基础篇 ,相信可以带你走进 vim 插件的世界。

在哪里寻找 vim 插件呢?

\1. google 搜索,针对你的需求提炼一下关键字,找找看

\2. 推荐一个插件网址:VimOwesome这里拥有很多好用的插件

\3. GitHub ,去 github 上找找看,很多好用的插件这里都可以找的到

\4. 知乎上找一找,有很多人分享好用的插件。

假如你是一个 vim 插件迷,或者有十分好用的插件,欢迎你在留言区推荐。

vim 的脚本(VimScript)

什么是 VimScript ?

我们可以类比一下 javascript , VimScript 是vim 的脚本语言,一门专注做 vim 的编程语言,上面提到的插件很多都是使用 VimScript 去实现的。

推荐一些学习 Vimscript 脚本的资源:

Vimscript 前言_w3cschool

Vimscript 英文脚本教程推荐

如果你有好的资源欢迎你的推荐。

总结

真佩服你阅读到了这里 , 很高兴和你一起学习进步,点个关注吧。

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

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

相关文章

【LeetCode】移除元素、删除有序数组中的重复项、合并两个有序数组

🧑‍💻作者: 情话0.0 📝专栏:《LeetCode》 🔖题目链接:移除元素、删除有序数组中的重复项、合并两个有序数组 目录一、移除元素示例 1:示例 2:理解思路1:代码…

Linux——页面置换算法(OPT、FIFO、LRU的实现与比较)

目录 1、 实验题目 2、实验要求 (1)指令的地址按下述原则生成 (2)具体的实施方法 (3)将指令序列变换为页地址流 3、算法实现参考代码: 4、运行结果 5、算法比较 1、 实验题目 设计一个虚…

使用Git Bash Here代码上传本地项目到GitLab

使用Git Bash Here代码上传本地项目到GitLab,上传到到GitHub等其它项目管理也类似。 一、第一次用代码上传项目 1.使用Git Bash Here打开代码输入框,创建克隆目录: git clone xxx/androidprojects.git 2. 把项目放到创建的目录下,并代码进…

Side Window Filtering 论文笔记

引言 Side Window Filtering是上了数字图像处理这门课后看的第二篇论文,这是一篇2019年发表的论文,提出的技术方法也相对比较新。由于我对CV方面涉猎不多,所以看的时候比较懵,似懂而非懂,于是打算做点笔记&#xff0c…

珠宝加工厂:我的成本下降空间在哪里?

摘要:珠宝加工厂,如何通过IoT边缘技术,OT/IT数据融合,实现成本的下降、效率的提升本文分享自华为云社区《玩转物联网IoT边缘服务系列二-珠宝加工的成本下降空间在哪里?》,作者:eleven1111 。 本…

小程序配置详解

小程序新生成时的目录 有4中不同的文件类型 .json 后缀的 JSON 配置文件.wxml 后缀的 WXML 模板文件.wxss 后缀的 WXSS 样式文件.js 后缀的 JS 脚本逻辑文件json app.json 是对当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 ta…

elasticsearch、kibana、Ik分词器基于docker的单点部署

一、创建网络 由于需要让es和kibana容器互联,因此需要先创建一个网络。 但当也可以使用docker-compose的方式来完成一键互联,那样的话就不需要创建网络。 docker network create es-network二、安装elasticsearch 2.1 dockerHub直接拉取镜像的方式 …

AWS 使用Lambda实现钉钉机器人报警

aws 支持邮件和短信的报警通知,考虑时效性问题和结合公司的使用情况,需要接入钉钉机器人的告警提醒,为了使用钉钉机器人的告警,我们利用LambdaSNS,利用Lambda接受SNS的警告信息,然后通过python发送到钉钉机…

Git快速入门

本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习。 Git前言一、版本控制1.1、常见的版本控制工具二、版本控制分类2.1、本地版本控制2.2、集中版本控制 SVN2.3、分布式版本控制…

从0到1实现python基于RPC协议的接口自动化测试

01、什么是RPC RPC(Remote Procedure Call)远程过程调用协议是一个用于建立适当框架的协议。从本质上讲,它使一台机器上的程序能够调用另一台机器上的子程序,而不会意识到它是远程的。 RPC 是一种软件通信协议,一个程…

记一次VMOS Pro破解记录

vmos pro是在安卓上运行的安卓模拟器,自带root,免root运行Xposed,免root运行Magisk等,支持修改分辨率,支持谷歌GMS服务,后台可持续运行. 背景 意外发现这么一款好玩的虚拟机但使用起来有诸多限制&#xff…

科研快报|全长扩增子测序揭示口腔微生态变化可用作阿尔兹海默症识别指标

背景介绍 阿尔茨海默病(AD)是一种神经退行性疾病,通常影响老年人。由于老年人患牙根龋和缺牙的发病率较高,这些牙齿问题中涉及的细菌可能会恶化他们的认知功能。口腔中微生物群的改变可能通过从口腔迁移到大脑而诱发神经炎症。然…

Spring IOC 核心流程介绍

前言 接下来我们编写入口代码,跟代码梳理一下Spring IOC一些重要的方法节点。IOC有12个比较重要的方法,把这12个方法学习一下,整个Spring IOC基本就差不多了。 编写Spring IOC入口 1、创建需要被管理的类 接口类: package se…

爱尔兰药品局药品信息数据查询

爱尔兰位于欧洲西部的爱尔兰岛中南部,多年来实施低税率国家政策,吸引着全球各大巨头公司,如苹果、谷歌、脸书等巨头,其中不乏包含很多医药企业,如世界级生物医药巨头辉瑞(Pfizer)、诺华&#xf…

刷题笔记(牛客java选择题)

目录 访问权限修饰符 抽象类和接口 线性安全的集合类 线性不安全的集合类 方法重载与重写 getDeclaredMethods方法 浮点型 和 long 不能做 switch() 的参数类型 java程序运行命令 字符串的不可变性 访问权限修饰符 抽象类和接口 使用abstract修饰的类或方法,就…

MacOS安装FFmpeg

MacOS安装FFmpeg方式一、使用Homebrew安装FFmpeg1. 安装Homebrew2. 安装FFmpeg方式二、通过官网安装FFmpeg方式一、使用Homebrew安装FFmpeg 1. 安装Homebrew 如果你的Mac上没有安装Homebrew,那么就先来安装Homebrew吧!步骤如下: 打开Termi…

学习笔记-Linux 安全

Linux 安全 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 漏洞利用 OS-Exploits LOL Living Off The Land 相关文章 busybox docker 受限环境下回传文件命令行上线小技巧 相关资源 GTFOBinshttps://github.com…

前端高频手写题自测,你能做出几道

实现字符串的repeat方法 输入字符串s,以及其重复的次数,输出重复的结果,例如输入abc,2,输出abcabc。 function repeat(s, n) {return (new Array(n 1)).join(s); }递归: function repeat(s, n) {return…

edge:H5抓包

1、打开edge:并输入地址:edge://inspect/#devices 2、USB连接手机,并手机和电脑使用WiFi连接同一个ssid,以使手机和电脑在同一个网络; 3、手机设置:1)打开开发人员选项 2)进入开发人员选项,并开启USB调试 3)进入开发人员选项,设置USB配置为RNDIS 4、开始抓…

【架构】架构到底是是什么

对于技术人员来说,「架构」是一个再常见不过的词了。我们会对新员工培训整个系统的架构,参加架构设计评审,学习业界开源系统(例如,MySQL、Hadoop)的架构,研究大公司的架构实现,例如,微信架构、淘宝架构……虽然「架构」这个词常见,但如果深究一下「架构」到底指什么,…