在视觉块模式下替换文本

在视觉块模式下替换文本

也许我搜索的方式不对,但我还是找不到如何做到这一点。

场景如下:我在一个文本文件中有一个列表,我想在多行插入同一个单词,这是一个示例文本:

12.1 项目1
12.2 项目2
12.3 第3项

现在我用视觉块标记第 8 列,下面用下划线表示,并打算用 替换部分空白而不Done移动项目列:

12.1 _ 项目1
12.2 _ 项目2
12.3 _ 项目3

我以为我可以进入替换模式,但我只能输入插入 ( I)、附加 ( A) 或更改模式 ( c)。更改模式接近我想要的:如果我知道单词的长度,则可以将块设置为相同的宽度。

这里我遗漏了什么吗?

答案1

为什么不选择 4 列并点击c

<C-v>
2j
3l
cDone
<Esc>

另外,您还可以使用:h normal

V
2j
:'<,'>norm 7lRDone
<Esc>

答案2

如果要在视觉块内进行替换,可以使用vis.vim插入

http://vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block

安装:

从以下位置下载 vis.vba.gzhttp://www.drchip.org/astronaut/vim/index.html#VIS

# Open vis.vba.gz in Vim 7.1 or later.
vim vis.vba.gz

# Source the open file.
:so %

# Quit Vim
:q

安装后:

ctrl-v to enter visual-block mode
Move to select the block you want
:B s/pattern/newtext/

甚至更好的是,您可以在可视块上执行任何 Ex 命令,而不仅仅是替换。例如:B !sort

相关内容