如何在Vim中的不同列文本之后粘贴一列文本?
问题描述:
我有两列充满了文字,我想让他们并排。例如,我有如何在Vim中的不同列文本之后粘贴一列文本?
abc
def
ghi
和
123
456
789
,我想
123 abc
456 def
789 ghi
所有我能找到的是如何将同一线粘贴到每行的末尾一列。我无法弄清楚如何在另一列的末尾粘贴多行文本块。
答
使用可视块(ctrl-v
)剪切字母列。然后移至号码列的第一行。移动到最后并创造一个空间。然后粘贴字母列。
答
您有:
abc
def
ghi
123
456
789
将光标移动到a
。然后CTRL+V
,并将光标移动到i
。按y
。
接下来,在3
字符后面加一个空格,然后按p
。
完成。
答
我想知道为什么“视觉模块模式”不适合我。关键是yank(或删除)在视觉模式。
我发现自己需要从excel列中复制一些具有可变长度的东西。我是这样做的:
Names
Donald Knuth
Sebastian Thrun
Peter Norvig
Satoshi Nakamoto
Age
100
50
60
45
假设你想把第二列放在第一列之后。
- 猛拉它在视觉模式:
- 移动光标至
Age
- 按
Ctrl + v
开始在45
- 按
y
进入可视化模式 - 将光标移动到
5
猛拉(或d
删除)
- 移动光标至
你现在已经在视觉模式下被抽出。
-
粘贴(在正常模式下)
移动到第一行的末尾,并添加更多的空间,因为它比例如第二线短。如果您在不添加额外空格的情况下粘贴“块”,它将覆盖Sebastian Thrun中的“运行”。
现在你在第一行,在最后一个字符后面插入一些空格。确保您未处于插入模式,并点击
p
粘贴该块。 (如果你想在插入模式粘贴,使用ctrl+r "
)
答
这似乎是显而易见的,但如果你是从外部复制缓冲区粘贴不会只是视觉工作模式粘贴。你可以做的是首先使用上述方法在空白区域垂直剪切/粘贴。
答
如果你想手动设置寄存器类型说按块,使用此
:call setreg(0, getreg(0), 'b')
或
:call setreg('*', getreg('*'), 'b')
有用的从电子表格编辑器中粘贴列。
有关详细信息,请参阅:help setreg
和vimtip。
在视觉模块模式下切割/切割有什么特别之处吗?我现在的问题是我使用的寄存器实际上是'*'寄存器,这意味着系统剪贴板。 – 2012-02-02 22:04:51
如果你没有用'''指定一个特殊的''',那么相同的寄存器被用于简单的'y'和'p'。 – Matej 2012-02-02 22:08:12
当我想要“投”一个粘贴时,Ingo Karkat很有帮助。 http://www.vim.org/scripts/script.php?script_id=3355 – 2012-02-02 22:08:59