我有两列的文字,我想把它们并排放。比如我有
abc def ghi
和
123 456 789
我想
123 abc 456 def 789 ghi
我所能找到的就是如何将同一行粘贴到列中每一行的末尾。我不知道如何将多行文本块粘贴到另一列的末尾。
csbfibhn1#
我在想为什么“视觉障碍模式”对我不起作用。关键是在视觉块模式下进行猛拉(或删除)。我发现自己需要从Excel列中复制一些长度可变的东西。我是这么做的
Names Donald Knuth Sebastian Thrun Peter Norvig Satoshi Nakamoto Age 100 50 60 45
假设你想把第二列放在第一列之后。1.在视觉阻止模式下猛拉它:
Age
Ctrl + v
45
5
y
d
你现在已经进入了视觉封锁模式。1.粘贴(在正常模式下)
p
ctrl+r "
vvppvyoh2#
使用可视块(ctrl-v)剪切字母列。然后移到数字列的第一行。移到最后,留出一个空格。然后粘贴字母列。
ctrl-v
r7xajy2e3#
如果你在Mac上,不知道为什么粘贴会在新的行中插入块,那是因为你使用的是系统粘贴板。没问题,只需使用缓冲区进行拉伸/粘贴:
letter
+
2ledvvac4#
您有:
abc def ghi 123 456 789
将光标移到a上。然后CTRL+V,并将光标移动到i。按下y。接下来,在3字符后添加一个空格,然后按p。完了
a
CTRL+V
i
3
7y4bm7vi5#
这似乎是显而易见的,但如果你是从外部复制的缓冲区粘贴,它将无法与视觉模式粘贴。你可以做的是先在空白区域做一个普通的粘贴,然后用上面的方法垂直剪切/粘贴。
62o28rlo6#
如果您想手动设置寄存器类型为块方式,请使用以下命令
:call setreg(0, getreg(0), 'b')
或
:call setreg('*', getreg('*'), 'b')
用于从电子表格编辑器粘贴列。有关详细信息,请参见:help setreg和vimtip。
:help setreg
oyjwcjzk7#
如果您的列的长度不同,并且使用分块复制和粘贴来对齐它们很麻烦,那么您可以在从剪贴板获取行的同时进行搜索和替换。对于投票最多的回答中的行:
Names Donald Knuth Sebastian Thrun Peter Norvig Satoshi Nakamoto
你可以做:'<,'>s/$/\=getreg('"',1,1)[line("'<")-line('.')],它用默认寄存器的内容来替换行尾,默认寄存器的索引(逐行)是由视觉选择'<的开始减去.上发生的替换的行号。这将导致NamesAge等,所以也可以添加一个空格,您可以在Vim中使用.连接字符串。:'<,'>s/$/\=' '.getreg('"',1,1)[line("'<")-line('.')]为您提供
:'<,'>s/$/\=getreg('"',1,1)[line("'<")-line('.')]
'<
.
NamesAge
:'<,'>s/$/\=' '.getreg('"',1,1)[line("'<")-line('.')]
Names Age Donald Knuth 45 Sebastian Thrun 60 Peter Norvig 50 Satoshi Nakamoto 100
这当然对更复杂的情况更有用,比如在键值对的字典中替换键。
7条答案
按热度按时间csbfibhn1#
我在想为什么“视觉障碍模式”对我不起作用。关键是在视觉块模式下进行猛拉(或删除)。
我发现自己需要从Excel列中复制一些长度可变的东西。我是这么做的
假设你想把第二列放在第一列之后。
1.在视觉阻止模式下猛拉它:
Age
的开头Ctrl + v
进入可视块模式45
中的5
y
进行提取(或按下d
进行删除)你现在已经进入了视觉封锁模式。
1.粘贴(在正常模式下)
p
来粘贴块。(如果要在插入模式下粘贴,请使用ctrl+r "
)vvppvyoh2#
使用可视块(
ctrl-v
)剪切字母列。然后移到数字列的第一行。移到最后,留出一个空格。然后粘贴字母列。r7xajy2e3#
如果你在Mac上,不知道为什么粘贴会在新的行中插入块,那是因为你使用的是系统粘贴板。
没问题,只需使用缓冲区进行拉伸/粘贴:
1.“* 字母 *y -拉入
letter
缓冲区1.转到您要粘贴的位置
1.“letterp -从
letter
缓冲区粘贴确保
letter
不是+
,因为它是系统粘贴板缓冲区,因此它将具有相同的效果。2ledvvac4#
您有:
将光标移到
a
上。然后CTRL+V
,并将光标移动到i
。按下y
。接下来,在
3
字符后添加一个空格,然后按p
。完了
7y4bm7vi5#
这似乎是显而易见的,但如果你是从外部复制的缓冲区粘贴,它将无法与视觉模式粘贴。你可以做的是先在空白区域做一个普通的粘贴,然后用上面的方法垂直剪切/粘贴。
62o28rlo6#
如果您想手动设置寄存器类型为块方式,请使用以下命令
或
用于从电子表格编辑器粘贴列。
有关详细信息,请参见
:help setreg
和vimtip。oyjwcjzk7#
如果您的列的长度不同,并且使用分块复制和粘贴来对齐它们很麻烦,那么您可以在从剪贴板获取行的同时进行搜索和替换。
对于投票最多的回答中的行:
你可以做
:'<,'>s/$/\=getreg('"',1,1)[line("'<")-line('.')]
,它用默认寄存器的内容来替换行尾,默认寄存器的索引(逐行)是由视觉选择'<
的开始减去.
上发生的替换的行号。这将导致
NamesAge
等,所以也可以添加一个空格,您可以在Vim中使用.
连接字符串。:'<,'>s/$/\=' '.getreg('"',1,1)[line("'<")-line('.')]
为您提供这当然对更复杂的情况更有用,比如在键值对的字典中替换键。