我确信这个功能一定存在,但如果不存在的话,可能有一个宏可以实现...
我最喜欢 vim 的一个功能是在可视模式下进行插入(<C-v>
,选中行,<C-I>
,输入一些内容,然后按 Esc)。
我的问题是,我想在之前粘贴剪贴板内容,而不是 '插入'。我尝试了 <C-P>
,但没有成功。
我已经阅读了速查表,在各处搜索过,查看了这里的问题,但没有找到答案,但我肯定是在寻找错误的东西。
我确信这个功能一定存在,但如果不存在的话,可能有一个宏可以实现...
我最喜欢 vim 的一个功能是在可视模式下进行插入(<C-v>
,选中行,<C-I>
,输入一些内容,然后按 Esc)。
我的问题是,我想在之前粘贴剪贴板内容,而不是 '插入'。我尝试了 <C-P>
,但没有成功。
我已经阅读了速查表,在各处搜索过,查看了这里的问题,但没有找到答案,但我肯定是在寻找错误的东西。
通常,P命令(大写,与p不同)会将剪贴板的内容粘贴在光标位置之前。这是您想要的吗?(当您说按下Command+I时,我不太确定您的意思,因为我的键盘没有Command键。)
我猜你指的是在视觉块模式下使用 I
在多行插入相同的文本,而按下 p
仅会粘贴到当前行而非所有选择的行。
在插入模式中,可以按下 C-r
然后输入一个寄存器来插入该寄存器的内容,因此如果你想要粘贴未命名的缓冲区,你需要输入:
C-r"
同样地,要从剪贴板粘贴
C-r*
通过正常输入 "insert",然后使用 C-r
快捷键,您可以获取所选行的所有文本。
查看 :h registers
可以了解可用于您的寄存器。
虽然五月份看起来有点晚,但我也遇到了同样的问题。
例如:一个文件有两行:
foo
bar
4-1. 按下p => bfooar
4-2. 按下P(Shift+P) => foobar 这正是我所期望的。
TLDR: 大写字母P (shift + p)
gJ
。 - ying17zidef EatMyFish(x):
return x - 1
a = EatFish(1)
b = EatFish(2)
c = EatFish(3)
d = EatFish(4)
def EatMyFish(x):
中的 MyEatMyFish(1)
这一行的 F 上或者
无论如何,现在我们有:
def EatMyFish(x):
return x - 1
a = EatMyFish(1)
b = EatMyFish(2)
c = EatMyFish(3)
d = EatMyFish(4)
基于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>
A
更改为I
。"+p
,不如使用普通的p
,如果之前已经将+
复制到*
寄存器中(在表格的最后一种情况下需要)。nnoremap <leader>z :let @*='<C-r>+'<CR>
+
寄存器),而不是Vim的:copy
命令。请参见[http://vimcasts.org/episodes/long-range-line-duplication/]。 - Xopi García