进行修改的时候,我们通常要清楚两件事情。
一:进行怎样的修改。
比如删除、改动、复制等。
二:修改哪里?或者说修改的范围是什么?
比如删除一个词、删除一句话、删除一个段落等。
为了方便讲解,我们先来讲解:范围
之前我们在讲解移动时,用kjhl进行字符间移动,用w进行单词间移动,移动距离从小到大,逐步升级。
同理,我们在确定范围时,也用到了类似的东西。不过,要更细致一些。
并且,范围操作和移动操作还有很多相通的地方。
一、范围
只要你英语懂一点,很容易就能理解。
(galipy老师在这里再次强调学好英语的重要性=_=)
比如:
aw 表示a word 一词
as 表示a sentence 一句
ap 表示a paragraph 一段
还有一些其他的,比如:
at 表示a tag 一标签块
a( 表示一括号对儿
具体还有什么,可以直接在你的vim中输入如下代码进行查阅:
:help text-objects
那么,这个范围要怎么用呢?
他需要和操作组合起来。
二、操作
常见操作有:
d(表示删除,delete的缩写)
c(表示修改,change的缩写)
y(表示复制,yanking的缩写。复制之所以用这个,是因为c字母已经被占用了。。)
具体还有哪些操作,我们可以在vim中输入如下代码:
:help operator
下面,我们用操作d来讲解如何与范围组合使用。
三、组合:操作+范围(operator + motion)
vim更适合母语为英语的人使用。
比如,他们想删除一个单词,那么他们心中想的就是delete a word。
这一句在vim中,只要输入如下缩写即可:
daw
从光标处开始的一个单词就会被删除掉。
(注意:在普通模式中操作。)
删除一句话就是:delete a sentence
das
删除一个段落就是:delete a paragraph
dap
不过,这些操作都是从光标处开始。也就是说,如果你想删除一句话,但是,你的光标停在了句子中间,那么,你只能删除半句。所以,每次操作,都要先把光标移动到句子开头。
为了解决这个繁琐的操作,vim提供了另一种描述方式:
delete inner sentence删除内含句。无论你的光标在哪,都可以直接删除整句。
缩写操作为:
dis
相应的,也会有:
diw
dis
dip
dit
如果明白了d(删除)操作与范围操作的组合,那么,上面举例的两个其他功能键也应该可以上手了。
c表示修改
在普通模式下按c,然后确定范围,然后回车。
比如,你选了一句话,回车之后,这句话会被删除,并且切换为输入模式。
y表示复制
在普通模式下按y,然后确定范围,然后回车。
比如,你选了一句话,回车之后,这句话会被复制到类似剪贴板的地方。之后按下p键才能粘贴。
对于母语非英语的少年,只能通过多多练习来掌握这些技巧了:p
四、拓展
最后再来说说范围操作和移动操作的一些共通之处吧。
主要的共通之处在于跳转操作上。
比如
gg
G
H
M
L
甚至是 f 功能也是可以用的,比如:
eg:there is noting to tall.
dfg
eg: to tall
至于具体有哪些共通操作,大家自己探索吧~
五、思考
1、
我们知道,如果想删除一行的话,我们通常会用快捷键:
dd
那么,如果想复制一行,或修改一行,应该如何操作?
2、
daw是删除一个词的意思,那么它是不是也能看成是进行了一次操作?
那么如何进行N次操作?
(ps:系统内置了一个重复操作的快捷键:小数点,不过它只能重复一次上一次操作。)