我最近开始使用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/
答案 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