Skip to content

vim

相关链接:精通 VIM ,此文就够了, 精通 vim 你应该理解的几个名词 一文助你打通 tmux


i-插前  
a-附后  
hjkl-左下上右  
o-新增下一行  
O-新增上一行  
vim -version - 查看vimrc相关信息(可在最后添加相关信息,如set number , set relativenumber)  
G-到最后一行  
gg-到第一行  
y-复制
yy - 复制当前行  
p - 粘贴  
d - 剪切 
dd - 删除当前行  
. - 重复前次操作  
u - 撤销前次操作   
ctrl + r - 恢复前次操作
dw-删除单词
cw-改变单词
yw-复制单词
w-下个单词首部
e-下个单词尾部
b-上个单词首部
/-搜索
:%s/old/new/g - 全局替换
3p:粘贴三次
ci-删除{}里的内容
ctrl+v-可视化块
shift+v-可视化行
v-选中

用 VIM 打开文件

如何用 VIM 去打开一个文件呢?

现在假如有一个文件 file1 ,只需要在文件前面加上 vim 关键字就好:

vim file1

上面这个命令将会打开 file1 这个文件,file1 是指你具体操作的文件名。

如何用 VIM 一次性打开多个文件呢?

现在有多个文件 file1 ,file2 , ... ,filen.

现在举例打开两个文件 file1,file2

vim file1 file2

该方式打开文件,显示屏默认显示第一个文件也就是 file1,如何进行文件间的切换呢?VIM 的正常模式下(参考上文关于正常模式的描述)按下键盘上的冒号 :这时会在显示屏底部出现冒号 :(进入了 VIM 的命令模式),然后在输入 ls ,屏幕上会出现打开的所有文件的序号和文件名,我们继续输入冒号 : ,然后输入 bn (这里的 n需要做一个解释并不是键盘上的 n ,而是文件序号的代指,如 b1 代表显示屏上切换到第一个文件,b2 代表显示屏上切换到第二个文件)。

:ls

上面这个命令将会列出 VIM 打开的所有文件。

:b2

上面的这个命令将会在显示屏上显示第二个文件。

如何在显示屏上一次性显示多个文件呢?

VIM 可以实现分屏操作,一个屏幕被多个文件给分占,有左右和上下两种分屏的方式。

左右分屏如下操作:

vim -On file1 file2 ... filen

这里的 n ( n 是要打开的具体文件的数目:1,2,3 ...)是代表有几个文件需要分屏,从左至右依次显示 n 个文件。

上下分屏如下操作:

vim -on file1 file2 ... filen

这个命令跟上一个命令不同的是其中的参数 -on( n 是要打开的具体文件的数目:1,2,3 ...) 中的 o 是小写,这样将会上下依次显示 n 个文件。

VIM 如何进行分屏操作呢?

请记住一个重要的组合键 Ctrl + w ,操作分屏离不开这个组合键(这里的组合键可没有 + ,只是 Ctrl 和 w 组合实现一个动能,下文谈到的组合健都这样描述 )。

按住组合键 Ctrl + w ,然后在按下 s

Ctrl + w s

上面这个命令将会上下分割当前打开的文件。

按住冒号:,紧接着输入 sp ,在键入文件名,如下:

:sp file

上面的这个命令将会上下分割当前文件和新打开的 file 。

按住组合键 Ctrl + w ,然后在按下 v

Ctrl +w v

上面的这个命令将会左右分割当前的文件

按住冒号 :,紧接着输入 vsp ,在键入文件名称,如下:

:vsp file

上面的这个命令将会左右分割当前打开的文件和新打开的文件 file 。

分屏以后如何在文件间切换光标,和移动分屏?

1.切换左右分屏的光标 :

Ctrl + w h

将当前光标定位到左边的屏幕

Ctrl + w l

将当前的光标定位到右边的屏幕

2.移动左右分屏 :

Ctrl + w H

将当前的分屏移动到左边

Ctrl + w L

将当前的分屏移动到右边

3.切换上下分屏的光标 :

Ctrl + w j

将当前的光标移动到下面的分屏

Ctrl + w k

将当前光标移动到上面的分屏

4.移动上下分屏:

Ctrl + w J

将当前的分屏移动到下面的分屏

Ctrl + w K

将当前的分屏移动到上面的分屏

如何关闭分屏呢?

Ctrl + w c

上面这个命令是关闭当前的分屏

Ctrl + w q

上面的这个命令也是关闭当前的分屏,如果是最后一个分屏将会退出 VIM 。

进阶

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

缓冲区(buffer)

什么是 vim 缓冲区 ?

我们用 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 窗口 ?

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

可参考上面分屏操作

标签 (Tab)

什么是 Tab ?

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

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 。