在vim中Map全选、复制、粘贴

f2uvfpb9  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(185)

我在我的vimrc中有以下Map:

nnoremap <C-a> ggVG
nnoremap <C-c> "*yy (might be because I'm in visual mode here?)
nnoremap <C-v> "*p

全选(ctrl-a)和粘贴(ctrl-p)可以工作,但(ctrl-c)不能使用该快捷方式,尽管如果我在执行ctrl-c后手动键入命令,它可以工作。
这里需要修复什么?

aemubtdh

aemubtdh1#

我想解决的第一个问题是,复制文本的Mapnnoremap <C-c> "*yy只能在正常模式下工作。当您在Vim中选择文本时,您将进入可视模式,并且nnoremap的第一个n使Map只能在正常模式下工作。
您可以使用noremap(所有模式)、vnoremap(可视和选择模式)或xnoremap(仅可视模式)使贴图工作,如下所示:

vnoremap <C-c> "*y

您可以在文档中找到有关Map的详细信息。
另一件需要注意的事情是Ctrl-c的默认功能是取消/中断当前命令。例如,如果您进入插入模式并按Ctrl-c,您将退出插入模式并返回到正常模式。使用您的原始Map,它将取消选择(退出可视模式)而不复制任何内容。

jdzmm42g

jdzmm42g2#

这对我在Neovim中是有效的,但我相信它在Vim中也应该是有效的。为了删除所有内容,我在配置中有以下Map:

nnoremap <leader>ya ggVGy<C-O>

详细信息:

  1. gg:转到第一行
  2. V:选择第一条直线
  3. G:转到最后一行
  4. y:拉伸选择
  5. <C-O>:转到上一个光标位置

相关问题