vim 常见命令使用

本文来自于 王利涛老师,linux 三剑客 相关课程vim初级部分的学习笔记,详情可查看淘宝店铺

1. vim 简介

c. vim 比 vi做的一些改进
vi : visual interface
EX的可视化接口
vim: vi improved
增加了多级撤销、多窗口操作。
稳定性提高、减少了崩溃以及崩溃后也可以恢复。
关键字自动补全自己上下文相关的补全。

2. vim 工作模式

普通模式 (命令模式)

	 vim  a.c 时的默认模式 
		滚屏,移动光标,Ctrl + b ; CTRL + f;

插入模式

	命令模式下  输入 i(o, a);  esc 退出到普通模式
		直接输入

命令行模式

	shift + : , 输入命令 (基于 EX命令实现操作)
		set number显示行号
		vimrc  /etc/vim/vimrc  配置文件默认执行

可视化模式

	普通模式按 v键
		然后移动光标就可以选中一块文本了
		可以进行后续的粘贴、删除、复制等操作

替换模式

	按R就可以进入到替换模式
		从光标处开始替换内容	各种模式之间切换
	某模式模式 - esc - 普通模式 - xx - 某模式

3. 光标移动

光标单个字符的移动:

	h,i,j,k

单词移动:

	w,b 前后一个单词的移动
	e 将光标移动到下一个单词的词尾
	E 移动到单词的结尾(忽略标点符号)
	ge:将光标移动到上一个单词的词末
	2w: 指定移动的次数

行移动:

	$ 当前行为
	0 (零)当前行首 
	^ 当前行的第一个非空字符(行首和当前行非空字符不是一个位置)
	2| 移到当前行的第2列
	fx:将光标移动到当前行的第一个字符x上
	3fx: 将光标移动到当前行的第3个字符x上
	tx: 将光标移动到目标字符x的前一个字符上
	fx 和tx可以通过 ;和, 进行重复移动,一个是正向重复,一个是反向重复
	% 用于符号间的移动,他会在一对()、[ ] 、{ } 之间跳跃

文本块移动:

	(  :移动当前句子的开头
	) : 移下一个句子的开头
	{: 移到当前一段的开头
	} : 移到下一段的开头
	[[ :移到当前一节的开头
	]] : 移到下一节的开头

在屏幕中移动

	XG: 跳转到指定的第x行,G移动到文件按末尾,` ` (2次单引号)返回到跳转前的位置
	gg : 移动到文件开头
	x%: 移动到文件中间,就是用50%
	H: 移动到home
	M: 移动到屏幕中间
	L: 移动到一屏末尾
	ctrl + G :查看当前的位置状态

4. 滚屏与跳转

	半屏滚动:ctrl + u/ctrl + d
	全屏滚动: ctrl + f/ctrl + b
	定位光标的位置:
		zz: 将光标置于屏幕的中间
		zt: 将光标移动到屏幕的顶部
		zb:将光标移动到屏幕的底部

	设置跳转标记
		mx , my , mz 设置三个位置
		`x , `y, `z(` 在tab 键上面) 跳转到设置 (这个是在普通模式的情况下设置)

5. 文本插入操作

i:在当前光标的前面插入字符
a:在当前光标的后面插入字符
o: 在当前光标的下一行行首插入字符
I: 在一行的开头添加文本
A: 在一行的结尾处添加文本
O: 在光标当前行的上一行插入文本
s: 删除当前光标处的字符并进入到插入光标的模式
S: 删除光标所在处的行,并进入到插入模式
u: 撤销修改

6. 文本删除

字符删除

	x: 删除当前光标所在处的字符
	X: 删除当前光标左边的字符

单词删除

	dw: 删除一个单词(光标处到空格)
	daw: 无论光标在什么位置,删除光标所在的整个单词(包括空白字符)
	diw: 删除整个单词文本,但是保留空格字符不删除
	d2w:删除从当前光标开始处的2个单词。
	d$:删除从光标到一行末尾的整个文本。  
	d0: 删除从光标到一行开头的所有单词
	dl: 删除当前光标处的字符 = x
	dh: 删除当前光标左边的字符 = X

行删除

	dd: 删除当前光标处的一整行
	5dd:删除从光标开始处的5行代码
	dgg:删除从光标到文本开头
	dG: 删除从光标到文本结尾

行合并:

	J:删除一个分行符, 将当前行与下一行合并

7. 组合命令使用

y: 复制 ; p:粘贴
yw:复制一个单词
y2w:复制2个单词
y$:复制从当前光标到行结尾的所有单词
y0:复制从当前光标到行首的所有单词
yy: 复制一整行
2yy: 复制从当前光标所在行开始的2行

复制文本块

	1. 首先进入 visual 模式(v:)
	2. 移动光标选择文本
	3. 复制与粘贴的操作(y,p)

剪切文本操作(删除再粘贴操作):

	1. 首先进入 visual 模式(v:)
	2. 移动光标选择文本
	3. 复制、删除、粘贴的操作(y,d,p)

8. 文本修改与替换

cw: 删除从光标处到单词结尾的文本并进入到插入模式
cb: 删除从光标处到单词开头的文本并进入到插入模式
cc: 删除一整行并进入到插入模式
~: 修改光标下字符的大小写
r: 替换当前光标下的字符  (r + 字符 ,替换)
R: 进入到替换模式(replace)

xp:交换光标和下一个字符

9. 组合命令使用

光标命令和其他命令等可组合在一起
更改 删除 复制 从光标位置到…
cH dH yH 屏幕顶端
cL dL yL 屏幕低端
c+ d+ y+ 下一行
c5I d5| y5| 本行的第5列
2c) 2d) 2y) 往下第2个句子
c{ d{ y{ 上一段
cG dG yG 文件结尾
c13G d13G y13G 第13行

10. 文本查找与替换

10.1 查找 /xxxx 正向查找

	操作:普通模式下,按:   /  + xxx + enter ,  n 向下查找,N向上查找
	[ vim搜索及高亮取消](https://cloud.tencent.com/developer/article/2157419), 输入:nohlsearch  也可以:set nohlsearch; 当然,可以简写,noh或者set noh。

10.2 ?xxxx 反向查找

设置高亮显示
	 set hls 对查找对象高亮显示 
	 * 按键    当前光标处的单词高亮显示,使用n浏览下一个查找高亮的结果
	(补充,如何)

10.3 替换

:s/old/new 将当前行的第一个字符串old 替换为new
:s/old/new/g 将当前行的所有字符串old 替换为new
:90s/old/new/g 指定第90行的所有字符串old 替换为new
:90,93s/old/new/g 指定第90行 - 93行的所有字符串old 替换为new
:%s/old/new/g 将文本中所有字符串old 替换为new
:%s/old/new/gc 依次替换每个字符串关键字(每次替换都会弹出选项是否替换)

正则表达式
:%s/^struct/int/g  将所有以struct 开头的字符串替换为int

11. 修改保存于撤销

u: 撤销上一步操作。(一步一步操作)
ctrl + r : 将原来的撤销重做一遍
U: 恢复一整行原来的面貌( 也是相当于修改)
q:若文件没有修改,直接退出
q!: 文件已经被修改,放弃修改退出
wq: 文件已经被修改,保存修改并退出
e!: 放弃修改,重新回到文件打开时的状态

12. 编辑多个文件

文件和缓冲区的区别
	文件是保存在磁盘上的,而打开的文件的文件是再内存中
	在内存中有一个缓冲区,用来存放打开的文件。
	vim每次打开文件时都会创建一个缓冲区,vim支持打开多个文件

:buffers 查看缓冲区列表 ==ls
:buffers N 根据缓冲区列表的编号跳转到指定缓冲区

:bnext/bprev 遍历缓冲区列表
:bfirst/blast 分别调到
:write 将缓冲区的修改保存到磁盘上
:edit! e!  放弃缓冲区的修改,恢复到

切换文件时,要放弃修改或者保存修改,恢复到磁盘里,不然的话,切换到另一个缓冲区
:edit file (file不一定在缓冲区列表,可以新创建一个文件缓冲区)编辑另一个文件  
:wnext 保存当前 缓冲区的修改并跳转到缓冲区列表的下一个文件
:set autowrite

13. 标签页 与 折叠栏

标签页的新建:
	tabedit file/ tab split
标签页的切换
	tabn/tabp 
标签页的关闭
	tabclose/tabonly 关闭当前的标签页
	按键 gt/gT 向前切换,向后切换

创建一个折叠
	zf200G 将光标和200行之间的代码行折叠起来
	
折叠的打开与关闭
	za:打开和关闭折叠
	zr/zm: 一层一层地打开和关闭折叠
	zR/zM: 分别打开和关闭所有的折叠
折叠键的光标移动
	zj: 跳转到下一个折叠处
	zk: 跳转到上一个折叠处
删除折叠
	zd:删除光标下的折叠
	zD:删除光标下的折叠以及嵌套的折叠
	zE:删除所有的折叠标签
	创建的折叠退出vim之后就失效了。

14. 多窗口操作

分割窗口
	split/vsplit filename
窗口间跳转
	ctrl + w  hjkl
	ctrl + w w
移动窗口
	ctrl + W HJKL
调整窗口尺寸
	ctrl + w +/- 调正窗口的高度
	ctrl + w </> 调整窗口的宽度
	ctrl + w = 将当前窗口设置
	:resize n
关闭窗口
	close: 关闭一个窗口
	qall: 退出所有窗口
	qall!:放弃修改,退出所有窗口
	wqall:保存并退出所有窗口
	wall: 保存所有窗口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刀法孜然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值