鱼C论坛

 找回密码
 立即注册
查看: 32266|回复: 53

[基础课程] 第三节:删除命令、数字的奥义、撤销和恢复命令

[复制链接]
发表于 2015-10-27 04:10:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第三节:删除命令、数字的奥义、撤销和恢复命令


删除命令

当然你可以选择在插入模式中使用退格键(Backspace)或删除键(Delete)来删除光标前面或当前的字符。不过这样做挺麻烦的,因为你需要先通过方向键将光标调整到目标位置才行(h、j、k、l需要在普通模式才能使用,还记得吗?)。

我们曾经说过:“对于真正的 VIM 用户,插入模式根本不存在”。是的,回到普通模式去吧,那里有更广阔的天地,在那里可以大有作为的!

1.gif

在普通模式下,删除单一字符可以用 x 命令。跟在插入模式按下 Delete 键一样,x 命令是删除光标指定的字符。

删除更多字符可以使用 d 命令!

2.gif


更多删除命令

使用删除操作符 d 的删除命令的格式是 d motion

d 是 Delete(删除)的意思,motion 即指定要删除的对象,所以这个命令可以很灵活!

motion 其实是一些表示操作范围的指令,比如:

按键
含义
0
将光标定位到行首的位置
^
同上
$
将光标定位到行尾的位置
b
将光标定位到光标所在单词的起始处
e
将光标定位到光标所在单词的结尾处
w
将光标定位到下一个单词的起始处(注意,是光标所在单词的下一个单词噢^_^)
gg
将光标定位到文件的开头
G
将光标定位到文件的末尾

没错,使用上面这几个按键移动光标,比单纯多次点击 h、j、k、l 按键省心省力。 3.gif

将 d 命令跟它们结合,无疑是雪上加霜……噢,不,是如虎添翼、珠联璧合、相得益彰! 4.gif

按键
含义
d0
删除光标从当前位置(不包含)到该行行首的所有字符
d^
同上
d$
删除从光标当前位置(包含)到该行行尾的所有字符
db
删除从光标当前位置(不包含)到单词起始处的所有字符
de
删除从光标当前位置(包含)到单词结尾处的所有字符
dw
删除从光标当前位置(包含)到下个单词起始处的所有字符
dh
删除光标前面一个字符
dl
删除光标指定的字符
dj
删除光标所在行以及下一行的所有字符
dk
删除光标所在行以及上一行的所有字符
dd
删除光标所在行的所有字符
dgg
删除光标所在行(包含)到文件开头的所有字符
dG
删除光标所在行(包含)到文件末尾的所有字符

不是说好了不刁难人嘛……

5.jpg

喂喂喂,亲,我说你别走啊,可以学会的啊!!!

其实你需要练习的就只是几个表示操作范围的命令就可以了,另外还有些规律可循的。

比如 0 和 ^ 两个是一样的,你随意记住一个即可;d0、db、dh 这类往前删除字符的命令,它们是不会删除光标所指定的字符;而删除方向是往后的则相反(d$、dw、dl),会将当前字符也一并删除。

另外 dh 和 dl 两个都只是删除一个字符,而 dj 和 dk 则是一次性删除两行,这是为什么呢?我们不妨可以来讨论下,小甲鱼个人认为是这样的:

大家看最后一个命令 dd(这个命令其实是最常用的,最常用的命令一般作者会设置为重复输入某个字符,这样输入速度会更快) 6.gif

它表示当前行的所有字符,那也就是说我想删除下一行,只需要输入 jdd 即可,dj 命令就显得有点没那么必要了(作者可以良苦用心,尽量让每个按键都能够充分发挥最高效率的输入),因此 dj 就给设计成删除当前行以及下一行的所有字符(即 dj == dddd);dk 同理。

最后这个只是小甲鱼个人的瞎想臆测,欢迎提出不同意见。 7.png


数字的奥义

你以为这样就完了?

8.gif

当然不,VIM 利用数字可以干老多的事儿了。比如普通模式下按一下 h 按键是将光标向左移动一格,而在其前面输入数字 3,即 3h 则是将光标向前移动 3 格,依此类推 3j 则是将光标向下移动三行,3w 则是将光标跳到三个单词后的开始位置……

同样的,d3h 表示删除光标前的 3 个字符,d3j 表示删除光标所在行以及下面 3 行的所有字符,而 d3w 则表示向后删除当前光标到后面第三个单词前的所有字符。

是不是很容易呢?

9.gif


撤销和恢复命令

人总难免会做错事,尤其是在进行删除操作的时候。 10.gif

那一不小心……删错了……怎么办?

没关系,VIM 有后悔药提供:u 和 U

其中小写的 u 表示撤销最后一次修改;而大写的 U 表示撤销对整行的修改。


可是……我又后悔我吃了后悔药……怎么办?

11.gif

VIM 还是有办法!Ctrl + r 快捷键可以恢复撤销的内容!!


特大备注

最后,有一个件特大的事儿要跟大家说:这上面所有的“删除”操作并不是真的删除,它们事实上是存放在 VIM 的一个缓冲区(VIM 把它称之为寄存器)中,相当于 Windows 的剪切功能!!!

12-1.gif 12-2.gif

关于魔鬼训练小程序的众多问题,请移步:VIM魔鬼训练须知

  

评分

参与人数 4荣誉 +9 鱼币 +9 贡献 +4 收起 理由
lz575757 + 1 + 1 感谢楼主无私奉献!
魔法虫虫 + 5 + 5 + 3 热爱鱼C^_^
和vvv + 1 + 1 热爱鱼C^_^
Ruide + 2 + 2 + 1 Coming soon !

查看全部评分

本帖被以下淘专辑推荐:

  • · VIM|主题: 7, 订阅: 4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-10-27 08:53:35 | 显示全部楼层
这风格
我以为进错帖子了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-10-27 13:01:32 | 显示全部楼层
很符合甲鱼老师风格嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-27 13:48:04 | 显示全部楼层
终于等到帖子更新了  这风格我喜欢:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-27 18:39:48 | 显示全部楼层
帖子很好,不过没有小程序练习可能效果打折扣:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-27 19:54:04 From FishC Mobile | 显示全部楼层
魔性得帖子……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-29 21:33:20 | 显示全部楼层
看着好多东西啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-30 09:31:42 | 显示全部楼层
这酸爽,才正宗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-1 00:02:40 | 显示全部楼层
支持ing
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-1 12:40:03 | 显示全部楼层
我没学过这些,虽然看不懂,但故事情节非常的有趣。这种教学方式值得提倡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-28 09:19:33 | 显示全部楼层
鱼哥,我发现本节这里可能写漏了哦,我自己试过,vim普通模式下“dG”命令删除了光标所在行到文本末尾的所有字符~
改.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2015-11-29 20:30:00 From FishC Mobile | 显示全部楼层
好多种呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-1 17:51:37 | 显示全部楼层
有意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-17 20:50:13 | 显示全部楼层
回复 一下表示学了这一节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-17 15:39:12 | 显示全部楼层
多看几遍发现听简单的~~
window也下个vim,用起!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-25 21:42:20 | 显示全部楼层
好多命令
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-26 19:55:45 | 显示全部楼层
学到这了  出来冒个泡   小甲鱼V5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-18 11:24:46 | 显示全部楼层
视频下载不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-3 18:10:31 | 显示全部楼层
普通模式下各字符含义:
0 表示定位到光标所在行行首位置;
¥ 定位到行尾;
b 光标所在单词的开始;
e 光标所在单词的末尾;
w 定位到下一个单位的开始;
gg 定位到文档的开始;
G 定位到文档的末尾。

u对上次单次操作的撤销,U撤销对整行的操作,ctrl+r恢复撤销内容,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-17 22:11:19 | 显示全部楼层
本帖最后由 z379652501 于 2016-7-17 22:16 编辑

小甲鱼老师,谢谢您的课程,我尝试了0和^,发现它们有点儿区别。按0是到一行的最开始的位置,而^是到一行里面第一个有文字的位置,像"                abcd"这种情况,0是到第一个"后面,而^是到a这个位置。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 7 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 11:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表