使用 Vim 的列编辑模式将一些文本粘贴到另一个文本的右侧

问题描述 投票:0回答:1

我一般不使用Vim的列编辑模式。
但我很好奇我是否能做到这一点。
假设我有这样的文件。

KE987 ICN                          
Seoul/Incheon(Incheon)
30MAY2021(Tue) 13:20 (Local Time)
Terminal No : 2

LHR
London(Heathrow)
30MAY2021(Tue) 17:25 (Local Time)
Terminal No : 4

使用可视化列尾模式,我可以制作这样的文件吗?我的意思是复制底部 4 行并将它们放在顶部 4 行的右侧。

KE907 ICN                               LHR
Seoul/Incheon(Incheon)                  London(Heathrow)
30MAY2021(Tue) 13:20 (Local Time)       30MAY2024(Tue) 17:25 (Local Time)
Terminal No : 2                         Terminal No : 4
vim
1个回答
0
投票

这当然是可能的,但有一些注意事项:

  1. 将光标移至底部段落的第一个字符。
  2. <C-v>
    进入视觉块模式。
  3. 通过适当的动作垂直扩展选择。
  4. 使用
    $
    水平扩展所选内容以包括整个行。
  5. 使用
    d
    剪切视觉选择。
  6. 将光标移至顶部段落的第一个字符。
  7. A
    进入行尾插入模式。
  8. 根据需要插入尽可能多的空格:
    <Space><Space><Space>
  9. 离开插入模式。
  10. p
    输入默认寄存器的内容。

主要注意事项是您拉出的块和目标块应该具有相同的行号。

或者,您可以使用外部程序:

:1,4!paste - <(sed -n '6,9p' %) | column -ts $'\t'
:5,9d

参见

$ man paste
$ man sed
$ man column

© www.soinside.com 2019 - 2024. All rights reserved.