在可视块模式下替换文本


10

也许我在搜索错误的方法,但是我没有找到如何执行此操作的方法。

这是场景:我在文本文件中有一个列表,希望在同一行上插入相同的单词,这是示例文本:

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

现在,我对第8列进行视觉标记,并在下面加下划线,并打算在Done不移动item列的情况下替换部分空白:

12.1 _项1
12.2 _ Item2
12.3 _ Item3

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

我在这里想念什么吗?

Answers:


18

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

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

另外,您可以使用:h normal

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

1
这适用于Done,但是如果我想写其他东西,我希望尽可能免除字符计数。
2012年

1
:norm那是你的朋友
romainl 2012年

是的,第二个解决方案可用于方便的映射。谢谢。
雷神

1

如果要在可视块内替换,可以使用vis.vimplugin

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

安装:

http://www.drchip.org/astronaut/vim/index.html#VIS下载vis.vba.gz

# 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


好的插件,我将使用它:-)。但是,如何使用它替换任意列?
2015年

正确,仍然存在快速设置可视块宽度以匹配任意宽度列的问题。我通常会执行<count> we快速选择几列,然后使用h或进行调整l
Christian Long
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.