我很确定这必须存在,但如果它不存在,那么可能有一个宏......
我最喜欢的vim功能之一是在视觉模式之前插入(<C-v>
,选择行,<C-I>
,输入一点,然后 Esc )
我的问题是我想先粘贴剪贴板内容,而不是'插入'。我试过<C-P>
但没有爱。
我已经阅读了备忘单,到处搜索,查看了这里的问题并没有找到它,但我绝对可以找到错误的东西。
答案 0 :(得分:139)
通常, P 命令(大写不同于 p )在光标位置之前粘贴剪贴板的内容。这就是你要找的东西吗? (当你说按Command + I时,我不太清楚你是什么意思,因为我的键盘上没有Command键。)
答案 1 :(得分:15)
我认为你的意思是在视觉块模式下使用I
在多行上插入相同的文本,其中点击p
只是粘贴在当前行而不是所有选定的行上。
在插入模式下,您可以点击C-r
后跟一个寄存器来插入该寄存器的内容,因此如果您想粘贴未命名的缓冲区,则输入
C-r"
同样,要从剪贴板粘贴
C-r*
通过像往常一样输入插入,然后使用C-r
,您将获得所有选定行的文字。
查看:h registers
以了解您可以使用哪些寄存器。
答案 2 :(得分:0)
五月似乎晚了,但我遇到了同样的问题。
例如有两行的文件:
foo
酒吧
4-1。 按p => bfooar
4-2。 按P(Shift + P)=> foobar 这是我所期望的。
TLDR:大写字母P(shift + p)
答案 3 :(得分:0)
基于 Alligator 解决方案,使用地图。
例如在 3 种情况下粘贴字符串 _s_
:
" |-- original --|-- pasted after C --|-- pasted before C --|-- pasted replacing C --|
" |--------------|------------------------------------------------------------------------|
" |-- --|-- select column C --|-- select column B --|-- select column C --| --> step 0 (after copying/yanking a string)
" |-- --|-- press <leader>py --|-- press <leader>py --|-- press p --| --> step 1 if yanked
" |-- --|-- press <leader>pc --|-- press <leader>pc --|-- press "+p --| --> step 1 if copied to clipboard
" ABCD ABC_s_D AB_s_CD AB_s_D
" ABCD ABC_s_D AB_s_CD AB_s_D
" ABCD ABC_s_D AB_s_CD AB_s_D
每个寄存器的映射(分别被拉出或复制)在哪里:
xnoremap <leader>py A<C-r>*<Esc>
xnoremap <leader>pc A<C-r>+<Esc>
在之前的示例中,我粘贴了列之后(即使粘贴在 C 列之前,我的解决方法是粘贴在 B 列之后)。如果需要在 before 粘贴,只需将 2 个映射中的 A
更改为 I
。
代替 "+p
,可以使用普通的 p
,如果之前:将 +
复制到 *
寄存器(表的最后一种情况需要):
nnoremap <leader>z :let @*='<C-r>+'<CR>