我知道要在文本块的前面插入:
Ctrl-v选择要键入文本的行ESC
现在,我想这样做,但也可以替换块选择中的一部分。目前,我正在执行两项操作
Ctrl-v select block x返回开始
然后按照我上面提到的顺序进行操作。
是有没有一种方法可以只选择一次(Ctrl-v)块来组合这两个操作?
这是一个小例子:
我想转换以下块
1 text
2 text
3 text
4 text
5 text
进入
new text
new text
new text
new text
new text
仅执行一次“操作”。
#1 楼
在选择块而不是x后输入c将删除选择块中的文本,并将进入插入模式。键入内容并退出插入模式后,您应该在每行上进行相同的更改。尝试
Ctrl-v-选择块-c-插入任何内容- -Esc
#2 楼
1
1 1
1 1
1111111
1 1
1 1
1 1
将上面三个相同的正楷写成一排。
^V
选择上面的正楷,由于以下原因,我无法将所有字母更改为A
长度不相等的线。前面的印刷体字母与:s/\%V1/T/g
一起使用效果很好“先前的印刷体字母是由'1's制成的T。将/T/
更改为任何字母。但是选择上面显示的最后一个印刷体字母只会改变所有'1'到'A'到A *的点,其余部分保持不变。
*最短的线。
使所有线的长度与我填充的相同
(我是vim的新手,所以我确定可以编写一个更好的脚本。)
注意:A的峰值从第2行开始。 >
let Maxlen = 0
" Find longest line
for i in range(2,8)
let t = getline(i)
let a = strlen(t)
if a > Maxlen
Maxlen = a
endif
endfor
" Append spaces 'til all lines are the same length.
for i in range(2,8)
let t = getline(i)
let a = strlen(t)
if a < Maxlen
let b = Maxlen - a
execute "normal!" . i . "gg0" . b . "A "
endif
endfor
此后,
:s/\%V1/T/g
按照该行最后一个印刷体字母上的说明工作。PS我读到上面的
execute
行应该没有点,但对我不起作用。评论
执行行,移至印刷体字母的第i行的开头,并在行末添加b空格。 “ b”是当前行和最长行之间的长度差。
–罗恩
20-2-24在14:38
评论
我不是100%知道您想要什么,也许一个真实的例子会有所帮助(您所拥有的与您想要的)。您知道gv吗?它会重新选择最后的视觉选择,可能会对您有所帮助。