进行修改的时候, 我们通常要清楚两件事情
一: 进行怎样的修改
比如删除改动复制等
二: 修改哪里? 或者说修改的范围是什么?
比如删除一个词删除一句话删除一个段落等
为了方便讲解, 我们先来讲解: 范围
之前我们在讲解移动时, 用 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: 系统内置了一个重复操作的快捷键: 小数点, 不过它只能重复一次上一次操作)
来源: http://www.jianshu.com/p/3852a6eb7300