.
命令.
命令做用javascript
:h .
)应用举例java
x
命令会 ==删除光标下的字符==,使用 .
会让 ==重复删除光标下的字符==。屡次输入 u
撤销上述修改。vim
dd
命令删除一整行,使用 .
命令会 ==重复删除当前行==。markdown
>G
==增长从当前行到文档末尾处的缩进层级==,使用 .
会重复该操做。oop
每次 i
进入插入模式的那一刻,到返回普通模式为止, Vim
会记录每个按键操做,作出这样一个修改再用 .
命令,它会从新执行全部这些按键操做。this
.
命令是一个微型的宏macro
spa
var foo = 1
var bar = 'a'
var foobar = foo + bar
复制代码
在行尾添加分号:code
$
移动到行尾,而后 a
编辑,输入分号,Esc
完成修改j$.
.
意味着 a;<Esc>
,一个键顶三个键有没有改进的余地?orm
A
代替 $a
。==A
把 $a
封装成了一个按键操做。==Esc
。j.
来重复操做了。一举两得对象
复合命令 | 等效的长命令 | 做用 |
---|---|---|
C |
c$ |
删除到行尾并进入插入模式 |
s |
cl |
删除当前字符并进入插入模式 |
S |
^C |
删除当前行内容并进入插入模式 |
需求:把 JavaScript
的字符串拼接的加号先后都加上空格。
var foo = "method("+argument1+","+argument2+")";
复制代码
要改为:
var foo = "method(" + argument1 + "," + argument2 + ")";
复制代码
f+
查找加号注:f{char}
查找下一处指定字符出现的位置
s空格+空格<Esc>
进行修改;
重复查找上次 f
查找的字符.
重复上次修改;.
;.
注意:不用输入 4
次 f+
,用 ;
重复查找便可。
;.
重复查找 + 重复修改
重复颇有用,但有时候屡次按 .
或者 ;
的时候,容易出现多按的错误。
.
能够使用 u
撤销上次修改。;
能够使用 ,
跳转回去,由于 ,
会反向查找上次 f{char}
所查找的字符目的 | 操做 | 重复 | 回退 |
---|---|---|---|
作出一个修改 | {修改} |
. |
u |
在行内查找下一指定字符 | f{字符} / t{字符} |
; |
, |
在行内查找上一指定字符 | F{字符} / T{字符} |
; |
, |
在文档中查找下一处匹配项 | /pattern回车 |
n |
N |
在文档中查找上一处匹配项 | ?pattern回车 |
n |
N |
执行替换 | :s/target/replacement |
& |
u |
执行一系列修改 | qx{修改}q |
@x |
u |
注意:t{字符}
的在查找的字符前面停下来,而 T{字符}
在查找的字符后面停下来。
需求 把文本中的 content
替换成 copy
。
...We're waiting for content before the site can go live...
...If you are content with this, let's go ahead with it...
...We'll launch as soon as we have the content...
复制代码
:substitute
命令专门用于查找替换任务。
偷懒的办法:无需输入就能够进行查找 做者云:.
命令是我最喜好的 Vim
单键命令,排在第二的是 *
命令,此命令 ==能够查找当前光标下的单词==。
/content
:查找到 content
单词或者直接把光标移动到这个单词上 2. *
:查找该单词 3. cw
copy<Esc>
:修改 content
为 copy
4. n
:找到下一个 5. .
:重复修改 6. n.n.n.
:完成全部修改 7. 若是不想修改,不按 .
直接按 n
跳转到下一个便可
移动光标到 content
上,而后按 *
,会产生两个结果:
若是没有高亮,试着运行 :set hls
.
范式==.
范式是最理想的编辑模式,用一键移动,另外一键执行。==
.
命令重复上次修改普通模式 normal mode
是 Vim
的默认状态。
画家在休息时不会把画笔放在画布上。 普通模式就是 Vim
的天然放松状态,其名字已经寓示了这一点。
u
键会触发撤销命令,它会撤销最新的修改。 在 Vim
中,咱们本身能够控制撤销命令的粒度。 从进入插入模式开始,直到返回普通模式为止,在此期间输入或删除的任何内容都被当成一次修改。 所以,只要控制好 <Esc>
键的使用,就可以使撤销命令做用于单词、句子或段落。
多久离开一次插入模式? 做者喜欢让每一个 “可撤销块” 对应一次思考过程。 无论停顿的时间有多短,每次停顿都是一个天然的中断点,提示做者该退出插入模式了。
当处于插入模式中,另起一行最快的方式是按 <CR>
。 可是有时做者更喜欢按 <Esc>o
,这是由于做者有预感,也许在撤销时做者想拥有更细的粒度。
通常来说,若是你停顿的时间长到足以问 “我应该退出插入模式吗?” 这个问题,就退出吧。
==在插入模式中使用方向键移动光标会重置修改状态== 若是在插入模式中使用了 <Up>
、<Down>
、<Left>
、<Right>
这些光标键,将会产生一个新的撤销快。 你能够把这想象为先切换回普通模式,而后用 h
、j
、k
、l
命令对光标进行了移动,可是没有退出插入模式。 这会对 .
命令的操做产生影响。
在 Vim
中,评估哪一种方式最好时,最显而易见的指标是效率,即哪一种手段须要的按键次数最少(又名 VimGolf
)。 VimGolf
vimgolf.com/
然而在平局时如何选择胜者呢?
需求 The end is nigh
光标位于 h
,如今要删除单词 nigh
。
反向删除:Vim
高尔夫得分 3
db
删除从光标起始位置到单词开头的内容x
删除 h
正向删除:Vim
高尔夫得分 3
b
移动到单词开头dw
删除整个单词删除整个单词:Vim
高尔夫得分 3
使用 aw
文本对象 text object
daw
删除一个单词(能够解读为 delete a word
)决胜局:哪一种方式最具重复性? 看哪一种方式能够发挥 .
命令的最大威力。 反向删除 .
== x
正向删除 .
== dw
删除整个单词 .
== daw
因此 daw
胜出!