Vim实践Tips(一)

Tip 1 dot 命令

说明: . dot 重复上个命令的使用

1
2
3
4
5
6
7
line one

line two

line three

line four

x :删除当前光标下的字符

1
2
3
4
5
6
7
 one " x . . .  x 删除, . 重复

line two

line three

line four

如图:
dot 命令的使用

几个小提示:

:set nu 显示行号 :set nonu 关闭行号显示

显示和关闭行号

:3,5 co 8 将9到12行的内容输出到8行

输出范围到领一行

:3,5 de 删除3到5行的内容

删除范围

>G 增加从当前行到文件末尾所有行的缩进.同理,使用 . 可以重复增加缩进

重复缩进

还可以利用 j. 做成下面的布局

1
2
3
4
5
6
7
line one

line two

line three

line four

梯形缩进

Tip 2 不要重复

例如,我们想要在下面所有的行后面加一个分号

1
2
3
4
5
var foo = 1

var bar = 'bar'

var foobar = foo + bar

使用 $ 移动到行末尾,a追加然后输入; ,然后按<Esc>返回命令模式.这算完成了第一行

如果对下面两行也应用这个,就应该: j$.

1
2
3
4
5
var foo = 1;

var bar = 'bar'; "j$.

var foobar = foo + bar; "j$.

虽然这样也能完成,但是还是差点意思.还是有提升空间的.

减少无关的移动

a 是在当前光标位置后面追加,并自动切换到插入模式

A 是在当前行末进行追加,并自动切换到插入模式 相当于 $a

1
2
3
4
5
var foo = 1;	" A;<Esc>

var bar = 'bar'; " j.

var foobar = foo + bar; " j.

d 删除,不能单独用,得跟后续操作符,比如 dd 是删除一整行,d$ 是删除直到行的末尾

x 删除当前光标下的单个字符

cd 类次,但是删除完成后会进入插入模式

cd 都要加入motion motion类似是 w b 等这些

23,35 co 66 复制

23,35 m 66 剪切

23,35 de 删除

几个一个顶俩的快捷键

C c$ 删除到行末尾,并进入插入模式

s cl 替换当前字符: c加motion,l 一个字符

S ^C 删除整个行 ^移动到行首,C删除整行

I ^i 到行首进行插入

A $a 到行尾进行插入

o A<CR> 进入下一行,并进入插入模式 是回车的意思

O ko 进入上一行,然后插入

Tip 3 退一步,进三步

foo = "method("+argument1+","+argument2+")";```objc
1

上面的代码看着不太舒服,因为在我们印象中,加号两边应该有空格.那么我们来看怎么以Vim的方式完成这个任务:

`f+` 查找最近的`+` , `s` 替换`+` 为 `空格+空格`

```var foo = "method(" + argument1+","+argument2+")";

对于后面的,我们当然可以使用 f+ 然后 . 重复替换,完成任务.

但是这里有个新的操作符 ; 这个 ; 可以重复执行最近的查找操作.f+就是一个查找操作.所以,对于后面的+ ,我们可以通过 ;. 依次完成替换.

Tip4 操作,重复,撤销

通过以上的几个tip,我们学会了,先操作,然后另其重复执行,借此完成一些重复任务.

但是有时候,我们可能在反复的重复操作中,按多了.例如 tip2 中的 j.j.j. 很可能顺序按错了. 如果出现错误,那么我们就可以在出错的时候按 u 来撤销操作.又或者,Tip3中的;按多了(意味着移动的太过了)那么可以使用,来跳回去.

通过以上的描述,能看出来,不同的误操作,对应着不同的撤销方式.下面是个参考表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
意图				操作				重复		撤销

改变点东西 {edit} . u

行内查找下个字符 f{char}/t{char} ; ,

行内查找前一个字符 F{char}/T{char} ; ,

在文档内查找下个匹配 /pattern<CR> n N

在文档内查找前个匹配 ?pattern<CR> n N

执行替换 :s/target/replacement & u

执行一系列改变 qx{changes}q @x u

ft 的区别是 f 停留光标在查找字符,t光标停留在查找字符之前