[英]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.