Vim命令映射"复制到剪贴板"不工作

时间:2016-08-30 20:21:41

标签: bash vim

我最近开始使用Vim作为我的主编辑器,而不是像Atom / VSCode这样的程序。我添加了一些领导映射来简化我经常做的任务,但是我遇到了一些问题。

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

我按照以下方式设置我的领导: map <Space> <Leader>

我是这样做的,所以当设置showcmd时,我会在操作员待定模式下获得一个可视指示器。通过查看该指标,我可以看出,当我按下<Space>时,我会按预期在\键上输入操作员暂挂模式。然后,当我按下y时,我不再处于操作员暂挂模式,但我仍然处于可视模式,并且没有将选择权移到寄存器中。

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

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

其中一个密钥是否需要转义?或者我做错了什么?

(我目前在Windows上运行Ubuntu Bash .Vim是7.4版本)

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

2 个答案:

答案 0 :(得分:2)

谢天谢地,修复非常简单。

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.

答案 1 :(得分:1)

如何定义&#34;领导者&#34;密钥在:help mapleader下解释。如果您想使用<Space>作为&#34;领导者&#34;你应该这样做:

let mapleader = "\<Space>"

请注意&#34;领导者&#34; key根本不是而不是特殊键。如果<Space>为&#34;领导者&#34;,则下面的两个映射完全相同:

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