繁体   English   中英

Vim命令映射“复制到剪贴板”不起作用

[英]Vim Command Mapping “Copy to Clipboard” Not Working

我最近开始使用Vim作为我的主要编辑器,而不是像Atom / VSCode这样的程序。 我添加了许多领导者映射以简化我经常执行的任务,但是其中一些却遇到了麻烦。

在可视模式下,我希望能够按<Space>y将当前选择复制到剪贴板( + register )。 我已经验证可以通过进入可视模式,选择所需的文本并按"+y来手动执行此操作。但是,我的映射似乎不起作用: vmap <Leader>y "+y

我通过以下方式设置了领导者: map <Space> <Leader>

我这样做是showcmd在设置了showcmd ,可以在操作员待定模式下获得可视指示器。 通过查看该指示器,我可以知道当我按下<Space> ,确实按预期在\\键上进入了操作员挂起模式。 然后,当我按y ,我不再处于操作员挂起模式,但仍处于可视模式,并且没有将选择拉到寄存器中。

为了确保没有插件与我的映射冲突,我备份了.vimrc并将其替换为仅包含以下内容的插件:

set showcmd
map <Space> <Leader>
vmap <Leader>y "+y

这些键之一是否需要转义? 还是我做错了其他事?

(我目前在Windows上运行UbuntuBash。Vim是7.4版)

作为参考,我从本文中得到了这个主意(并使用完全相同的命令): https : //sheerun.net/2014/03/21/how-to-boost-your-vim-productivity/

幸运的是,修复非常简单。

map <Space> <Leader>

是不正确的。 正确的方法是

let mapleader=" "

来自:help mapleader

                    *<Leader>* *mapleader*
To define a mapping which uses the "mapleader" variable, the special string
"<Leader>" can be used.  It is replaced with the string value of "mapleader".
If "mapleader" is not set or empty, a backslash is used instead.  Example: >
    :map <Leader>A  oanother line<Esc>
Works like: >
    :map \A  oanother line<Esc>
But after: >
    :let mapleader = ","
It works like: >
    :map ,A  oanother line<Esc>

Note that the value of "mapleader" is used at the moment the mapping is
defined.  Changing "mapleader" after that has no effect for already defined
mappings.

:help mapleader解释了如何定义“ leader”键。 如果要使用<Space>作为“领导者”,则应该执行以下操作:

let mapleader = "\<Space>"

请注意,“ leader”键根本不是一个特殊键。 使用<Space>作为“ leader”,下面的两个映射严格等效:

vmap <leader>y "+y
vmap <Space>y  "+y

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM