gpt4 book ai didi

vim - 有没有办法在vim中向上或向下复制选定区域?

转载 作者:行者123 更新时间:2023-12-02 18:32:28 25 4
gpt4 key购买 nike

在 VSCode 中,您可以使用 Alt+Shift + 向上或向下复制并粘贴选定的文本行。

几个月前我转用了 vim,我真的很怀念这个功能。我发现您可以使用这些视觉模式绑定(bind)在视觉模式下向上或向下移动选定的行,

vnoremap J :m '>+1<CR>gv=gv
vnoremap K :m '<-2<CR>gv=gv

但如果您也可以在不使用 yy 和 p 的情况下上下复制和粘贴,那就太好了,因为当您完成拉动时,光标将放置在初始位置,退出可视模式并降低工作效率。

最佳答案

嗯,这就是从互联网上复制和粘贴随机片段而不了解它们的作用的问题:它们是小黑匣子,由于缺乏知识而无法随意修改或扩展。

让我们解构第一个映射:

vnoremap J :m '>+1<CR>gv=gv
  • :[range]m {address} 移动 [range] 覆盖的行到下面的线{address} 。这里,范围是由 Vim 自动注入(inject)的: '<,'>意思是“从最新视觉选择的第一行到最后一行”,地址是'>+1 ,意思是“最新视觉选择的最后一行+1行”。所以:'<,'>m '>+1<CR>有效地将所选行移动到其下方,
  • gv重新选择最新的视觉选择,
  • =缩进,
  • gv再次重新选择它以进一步 JK

现在,我们想要一个类似的映射,但要复制给定的行。也许我们可以从 :help :m 开始并滚动?

果然我们找到了:help :copy就在上面:help :move ,我们可以立即尝试:

xnoremap <key> :co '>+1<CR>gv=gv

嗯,它并没有真正按照我们想要的方式工作,但这是可以预见的:

  • 地址位于所选内容最后一行下方一行,
  • 重新选择并缩进选择,这是毫无意义的。

我们可以通过删除 +1 来解决第一个问题:

xnoremap <key> :co '><CR>gv=gv

并通过选择复制的行而不是重新选择最新的选择来修复第二个:

xnoremap <key> :co '><CR>V'[=gv

参见:help :copy:help '[ .

关于vim - 有没有办法在vim中向上或向下复制选定区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69264441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com