vim-编辑多个文件及标记

最近一段时间,就没怎么学习,至于说原因是为什么,我还不是特别清楚,但是有几个感受。觉得没有什么学习的伙伴,没有人交流或者讨论。想学的东西太多,说这个我熟悉吗?我好像挺熟悉,但是又不是真的很熟,所以有点犹豫到底该不该花时间来学习这个。还有就是一天挺累的,不像之前那样有空闲的时间还可以学习一个oracle啊,python啊,现在每天都是各种有难度的事,回家了只想坐在那啥也不想,啥也不敢。可能是我颓废了吧,现在不把目标定那么高那么多了,就是简简单单的把vim学好,学透。其它的暂时不管了!

今天要学的是如何打开多个文件编辑,想想vim是个文本编辑器额,这都做不到,那还怎么玩啊


首先是在已打开的vim中去编辑另外一个文件

1
2
3
4
5
6
7
8
9
:edit 文件名 #会关闭当前文件去打开另一个文件
:e 文件名 #简写

#如果当前编辑的文件没有保存需要先保存
:write
:w #简写
#如果并不想保存当前更改呢?
:e! 文件名 #这就是:!e 丢弃所有更改,回到最初编辑的状体的来源了吧
:hide edit 文件名 #当然了这是另外一个方式,丢弃当前更改,变成隐藏的缓冲区

在启动的时候就打开多个文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
vim 文件1 文件2	#同时打开了几个文件
:next #在不同的文件中移动
:previous

:next! #放弃当前修改直接编辑下一个文件
:wnext #先保存再编辑另一个文件
:wprevious
:firest #直接到第一个
:last #到最后一个
:2next #支持带数字的操作

#快速在多个文件中移动
ctrl+^

:argument #显示当前编辑的文件是那个
:args #简写

#编辑另外一个文件列表
:args 文件3 文件4
:args *.txt #支持通配符
:args! 文件3 文件4 #不保存当前文件,打开另外文件

使用寄存器:


文件标记:

在同时编辑多个文件时,可以通过标记直接跳回到之前编辑的文件的位置(全局标记)

1
2
m+大写字母	#设置标记
`+大写字母 #跳转标记

局部标记:只在本文件中有用

1
2
m+小写字母	#设置标记	例如ma
`+小写字母 #回到标记 例如`a

为标记设置注释

1
2
3
4
5
6
7
#先设置标记,再注释
mh
:marks head
#然后可以输入:marks head就可以知道标记的含义了
:marks head
mark line col file/text
a 1 0 i want to go home,did you?

标记使用

1
2
3
4
5
6
7
8
9
#不仅仅可以用来作为跳转
:marks #显示所有标记
:delmarks! #删除所有标记
``或者'' #在两个最近的跳转中移动

#删除到标记行
d`a
#复制到标记行
y`a

vim提供了寄存器来存储放入到缓冲区中的内容

在同时编辑多个文件时,我们可以在不同的文件中复制内容。但是如果需要从一个文件中复制几段内容呢?是不是需要不停的切换文件,不停的复制粘贴。并不是:可以通过寄存器将需要复制的多段内容存储起来,避免了不停的在不同文件中来回跳转复制

yank将内容复制到了缓冲区

1
2
3
4
"寄存器名字y	#复制
eg:"ayy #复制当前行到寄存器a中
"寄存器名字p #粘贴
eg:"ap #将寄存器a中的内容粘贴出来

delete将内容删除到了缓冲区

1
2
3
"cdd	#将当前行内容删除到了寄存器c中
"fdaw #将一个word删除到了寄存器f中
"gx #将一个字符删除到了寄存器g中