si1ent

Vim必知名词

2020-11-07

VIM常见名词

在学习vim的基础知识之后,对vim的基本使用已经了解很多,下面一起学习更多关于VIM的相关名词将更多拓展对vim有更深入了解。

缓冲区(Buffer)、窗口(Windows)、标签(Tab)、标记(Mark)、寄存器(Register)、插件(plugin)、vim脚本(vimscript)。

缓冲区(Buffer)

tabs-windows-buffers

如上图所示:

可参考上图,可对Buffer/Windows/Tab这几个名字很好了解表示意思。

vim打开多个文件

1
vim mysql_data.py requirements.txt README.md user.csv

界面只能看到mysql_data.py文件的内容。

其他三个呢? 其实都打开了,vim 把这四个文件都缓存起来了,只是显示出来的是第一个文件 mysql_data.py 的内容而已。

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.

缓冲区如何使用

可以用以下命令来操作

1
2
# 显示有几个缓冲区
:ls
1
2
# 切换至下一个文件/缓冲区
:bn
1
2
# 切换至上一个文件/缓冲区
:bp
1
2
# 切换至指定文件/缓冲区,number指:ls后显示的数字
:b number
1
2
# 切换至指定文件/缓冲区,
:b fileName

可参考如下列处所有打开的文件/缓冲区

image-20201102144944897

窗口(Windows)

tabs-windows-buffers

窗口如何使用

可参考VIM基础使用

1
2
# 左右窗口显示
vim -On mysql_data.py requirements.txt README.md user.csv

image-20201102150936638

1
2
# 上下窗口显示
vim -on mysql_data.py requirements.txt README.md user.csv

image-20201102151155717

标签(Tab)

tabs-windows-buffers

标签,当我们使用浏览器进行不同网站访问时,就可以通过不同tab页来进行快速切换获取我们想要的信息。

标签如何使用
1
2
# 新建标签,名称为:web_test
:tabnew web_test

image-20201102152437665

1
2
# 关闭tab页
:tabc
1
2
# 切换上一个tab页
:tabp
1
2
# 切换下一个tab页
:tabn
1
2
# 统计tab页
:tabs

image-20201102152651856

1
2
# tab自动切换(针对有多个tab)
gt
1
2
# 切换指定tab页,如下:切换至第一个tab页
1gt
标记(Mark)

标记,在进行学习记录或者我们进行文档记录时,都会使用不同方式进行标记来记录。

标记如何使用

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

1
2
# 在当前文件的光标所在的行建立了一个标记,以后我们可以快速定位到这个位置
ma
激活标记

使用 ‘(单引号) 或者 `(反引号),紧接着按下当初标记的那个字母就会跳到当初标记的那个位置。

例如:

1
2
# 直接跳至标记位置
`a 和 'a
`a和’a区别

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

`a # (反引号+a) 实跳转到当初标记的时候光标所在的位置

‘ 和 ` 区别

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

` # (反引号) 通常用来跳转到标记的光标的位置

ma和mA区别

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

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

1
2
# 列出所有标记
:marks
1
2
# 删除多个标记
:delmarks a
1
2
# 删除所有的标记(删除所有小写字母的标记)
:delmarks!

image-20201102161033711

寄存器(Register)

在介绍VIM基础介绍时,学习了复制、粘贴操作(y、p)两个操作。

此时,我们可能会思考,平时我们进行文件或字符串进行复制粘贴时,一般我们进行复制操作时,会把内容复制到剪切板中,如果进行粘贴操作时,会从剪切板中获取并输出当前位置。

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

如何定义寄存器

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

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

例如:

“ayy # 复制到当前行到 a 这个寄存器中

“ap # 从 a 寄存器当中获取内容

寄存器如何使用
1
2
# 列出所有寄存器
:reg
1
2
# 查看寄存器内容
:reg a

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

无名寄存器

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

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

记住: " (双引号)用来定义寄存器哟!

插件(plugin)

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

如需想找到一款自己的VIM插件可自行Google或参考如下两个工具。

推荐插件管理工具

插件下载地址

VIM脚本(Vimscript)

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

Vimscript语言教程

Referer

1
https://zhuanlan.zhihu.com/p/96801314
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章