Vim And vim plugins


vim基础

普通模式

在vim中,操作 = 操作符 + 动作 。每个操作之前可以加上数字n,实现重复n次的作用。

  1. 操作符:

c :删除并进入插入模式。 对应change

cc : 删除整行并进入insert模式

d : 删除。对应delete

dd : 删除整行。

x : 删除。

i : 进入插入模式,在光标所在字符前插入。 对应insert

a : 进入插入模式,在光标所在字符后插入。 对应append

v, V, <C-v> :进入visual模式;visual-line 模式;visual-block 模式。

. : 重复上次的操作。

# 使用最少的按键修改,使输出的内容之间用空格分隔开。
a = b = c = 1 
print(a)
print(b)
print(c)
  1. 动作:

h j k l : 分别对应 ← ↓ ↑ →

w e b : 分别对应 光标移动到下一个单词的开头; 到下一个单词的结尾;到上一个单词的开头。

word1  word2  word  3 word4
// 尝试使用 2w, 3e, 4b, dw, cw

$ 0 : 分别对应 光标所在行的最后一列、 第一列

尝试使用 d$, c$

<C-a> (Ctrl + a) : 实现数字的增加

Normal 模式下, 光标停在数字 42 上,键入 4<C-a> 命令

<C-x> : 实现数字的减少

Normal 模式下, 光标停在数字 42 上,键入 2<C-x> 命令

a(around),i(inside) 操作文本对象

这种用法通常使用在修改括号中的内容。

他们两个的区别是

a(around) 操作范围包括边界

i(inside) 操作范围不包括边界

aaa bbb ccc
aaa bbb
//将光标处在第二个b上, 执行 viw,你会发现bbb 高亮。如果你执行vaw
你会发现bbb后面的空格也会高亮,如果后面没有ccc,前面的空格会高亮
对于字符串 {aaa},如果你执行va{,那么{aaa}整个都会高亮;如果你执行vi{,那么只有aaa会高亮

插入模式

命令行模式

Vim Plugins

vim-surround

Delete surroundings is ds . The next character given determines the target to delete. The exact nature of the target is explained in |surround-targets| but essentially it is the last character of a |text-object|. This mapping deletes the difference between the “i”nner object and “a”n object. This is easiest to understand with some examples:

其中,*代表光标位置

Old text Command New text
“Hello *world!” ds” Hello world!
(123+4*56)/2 ds) 123+456/2
Yo!*
dst Yo!

Change surroundings is cs . It takes two arguments, a target like with |ds|, and a replacement. cS changes surroundings, placing the surrounded text on its own line(s) like |yS|. Details about the second argument can be found below in |surround-replacements|. Once again, examples are in order.

Old text Command New text ~
“Hello *world!” cs”‘ ‘Hello world!’
“Hello *world!” cs”\ \Hello world!\</q>
(123+4*56)/2 cs)] [123+456]/2
(123+4*56)/2 cs)[ [ 123+456 ]/2 多了一个空格
\Yo!*\</div> cst\ \Yo!\</p>

cst中的t可以理解为tag。删除环绕的tag,然后用\环绕。

As a special case, yss operates on the current line, ignoring leading whitespace.

yss 命令能够自动忽略行首的缩进,并将整行加上括号。类比yy可以复制整行代码。

Old text Command New text ~
Hello w*orld! yssB {Hello world!}


Author: Tsum
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Tsum !
  TOC