首页 > 其他分享 >理解vim工作的几个关键字

理解vim工作的几个关键字

时间:2022-11-01 16:22:21浏览次数:78  
标签:文件 插件 标记 vim 关键字 理解 寄存器 缓冲区

理解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 英文脚本教程推荐

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

总结

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

标签:文件,插件,标记,vim,关键字,理解,寄存器,缓冲区
From: https://www.cnblogs.com/nevertoolate22/p/16848138.html

相关文章

  • JS原型、原型链深入理解
    原型是JavaScript中一个比较难理解的概念,原型相关的属性也比较多,对象有”prototype”属性,函数对象有”prototype”属性,原型对象有”constructor”属性。一、初识原型在Ja......
  • 深度理解NodeJS事件循环
    导读ALLTHETIME,我们写的的大部分javascript代码都是在浏览器环境下编译运行的,因此可能我们对浏览器的事件循环机制了解比Node.JS的事件循环更深入一些,但是最近写开始深......
  • Java多线程-线程关键字(二)
    Java中和线程相关的关键字就两:volatile和synchronized。volatile以前用得较少,以后会用得更少(后面解释)。它是一种非常轻量级的同步机制,它的三大特性是:1、保证可见性,即强制......
  • C++:44---关键字virtual、override、final
    一、虚函数概念:在函数前面加virtual,就是虚函数虚函数的一些概念:只有成员函数才可定义为虚函数,友元/全局/static/构造函数都不可以虚函数需要在函数名前加上关键字virtual成......
  • LeetCode 236. 二叉树的最近公共祖先 - 回溯的理解
    题目https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/思路自己做只摸到一些门道,还是靠随想录...代码:deflowestCommonAncestor(self,root:'......
  • vim优化--自动缩进+行号
    自动缩进,自动补全括号,显示行号等 vim/etc/vimrcsetnuifhas("autocmd")filetypepluginindentonautocmdFileTypemakesettabstop=8shiftwidth=8softtabs......
  • 深入理解 virtual 关键字
      引言为什么会写这篇文章?主要是因为项目中的代码大量使用了带virtual关键字的类,想通过本文浅谈一下。virtual并没有什么超能力可以化腐朽为神奇,它有其存在的理由,但......
  • java 中的final关键字
    final关键字是最终的意思,可以修饰类、变量、方法,在使用时具有如下特点:1.被final修饰的类,不能被继承权限修饰符finalclass类名{}2.被final修饰的方法,不能被重写(覆......
  • java关键字static
    static修饰的成员,属于类的2、static关键字的特点:static修饰的成员,属于类(称之为类成员或类变量),而不属于某一个对象,但可以被类的所有对象共享。可以通过类名进行访问,当然......
  • 对极限的理解
    受到关于0.9循环=1,问点不一样的问题:为什么对它无论有多少严谨证明,不相信的人始终是不相信?-王谷谷的回答-知乎的启发,醍醐灌顶。你可能早就知道\(\lim\limits_{x\to......