如何在一组行的末尾插入文本?


17

假设我有一段文字...

Lorem ipsum
Lorem ipsum dolor
Lorem ipsum dolor sit
Lorem ipsum dolor sit amet

...并且我想.在每行末尾插入一个。最好的方法是实现这一目标?

Answers:


14

我执行以下操作以将文本追加到多行:

  • <c-V> -进入可视块模式。
  • 使用j/ k选择行。
  • $ -将光标移到最后一个字符。
  • A -在最后一个字符之后进入插入模式。
  • 插入所需的文本。
  • <Esc> -退出插入模式并完成块追加。

:norm选择后书写相比,按键的更少,但是使用此按钮的真正原因是因为对于这种类型的更改,在Visual Block模式下工作更具直觉。


粘贴一列文本非常有用。
Paul Rougieux

8

在第一行输入: 4:norm A.

4:为您创建一个范围,然后norm A.将点添加到每一行

较长段落的另一种解决方案可能是: Vip<C-v>$A.<Esc>

第一步是选择段落,Vip然后切换到可视块模式,然后将光标移到每一行的末尾,$然后将分别添加.到每一行A.并进入正常模式,<Esc>以查看将更改应用于每一行。


这是什么:A命令?我找不到通过:h :A
Peter Rincker '17

我的错。实际上并没有测试答案。我正在更新。它应该使用正常的命令,就像@Kritixi Lhitos答案
rbernabe

两个字符不到4:norm A.4:s/$/.
腓力

3

首先,您可以使用直观地选择它们V,然后使用移动键选择整个文本(或者,如果文本严格来说是一个段落,则可以[从第一行开始] V})。然后键入:。这应该:'<,'>在命令行中显示类似的内容。

:'<'>normal A.

normal A.在选定的行上执行。作为普通模式的击键normal A.执行A.。这A.在每个选定行的末尾加上a 。


3

如果要在所有行的末尾添加点:

:%norm A.

或者您可以使用搜索并替换:

:%s/$/./

%是整个文件,$是行尾


由于@ vim.ryan要求输入一个文本块而不是整个文件,:1,4s/$/./ 该文件 将最后一个字符替换为第一行到第四行(包括第4行)中的点。
rjt

1

为了使它更具通用性,您可以在单行中记录一个宏,然后在可视范围内的每一行上播放它。

将宏记录到一个寄存器(在本示例中为q寄存器)中:

qqA.<Esc>q

然后,您可以直观地选择要操作的行:

Vip

然后在每一行上播放宏(该范围将自动填充):

:'<,'>norm @q
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.