2

我想在我的文件中有以下内容

#define BIT_MASK_1      (1 << 0)
#define BIT_MASK_2      (1 << 1)
#define BIT_MASK_3      (1 << 2)
#define BIT_MASK_4      (1 << 3)

所以我写了这样一行:

#define BIT_MASK_1      (1 << 0)

, 然后输入Y3p, V3j,所以我得到了四个相同的行被选中,然后我想使用下面的命令将文本变成我想要的内容

:'<,'>s/BIT_MASK_/zs/d*/ze//=line(".") - line("'<") + 1
:'<,'>s//zs/d*/ze)$//=line(".")-line("'<")

但我得到了E488: Trailing characters错误,我做错了什么?

4

4 回答 4

4

我不禁认为您最好使用 Ctrl+A (增加光标下的数字)和交互式定义的来执行此类操作。

于 2012-10-16T08:40:44.683 回答
3

假设你有第一行:(光标在开头)

#define BIT_MASK_1      (1 << 0)  

然后你输入:(^A = Ctrl + A

qaYp^Af<^Aq

然后

3@a
于 2012-10-16T08:56:51.550 回答
1

不完全是您问题的答案,但我宁愿使用 Ca 来增加数字

就像是

t(h^At)^A0

您可以将其放入宏中并根据需要多次运行

于 2012-10-16T08:48:50.787 回答
0

只需输入:

:for i in range( 1, 4 ) | call append( line( '$' ), [ '#define BITMASK_' . i . ' (1 << ' . (i - 1) . ')' ] ) | endfor

有时使用 vim 作为编程语言比使用奇怪的击键更好。

于 2013-06-27T11:26:04.863 回答