【问题标题】:Vim Command Mapping "Copy to Clipboard" Not WorkingVim 命令映射“复制到剪贴板”不起作用
【发布时间】:2017-01-07 06:24:53
【问题描述】:

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

【问题讨论】:

  • 经过更多调查,我认为这可能是 Windows 上的 Ubuntu 上的 Bash 的一个奇怪之处。映射在 Git Bash 的 Vim 会话中按预期工作。 ://

标签: bash vim


【解决方案1】:

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

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.

【讨论】:

  • 我最初让我的领导按照您所说的方式设置;但是,几天前我在 Reddit 上遇到了一个帖子(reddit.com/r/vim/comments/2d2za5/…),并将其更改为我现在的方式。我暂时将其改回以验证这不是罪魁祸首,不幸的是它不是。
【解决方案2】:

:help mapleader 下解释了如何定义“leader”键。如果您想使用&lt;Space&gt; 作为“领导者”,您应该这样做:

let mapleader = "\<Space>"

请注意,“leader”键根本不是特殊键。以&lt;Space&gt; 为“leader”,下面的两个映射是严格等价的:

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

【讨论】:

  • 我解释了为什么我选择以我的方式设置领导者。我以前按照您所说的方式设置了我的领导;但是,结果是我的 \ 键未使用,而 showcmd 实际上没用。我只是把它改回你定义的方式,但仍然有同样的问题。
猜你喜欢
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 2012-07-10
  • 2010-11-22
  • 1970-01-01
相关资源
最近更新 更多